no key · no human
HomeAPI documentationGET /v1/trends

GET /v1/trends

Not articles — stories. A robot groups what publishers write into events, and this endpoint hands you those events with the numbers behind them.

bash
curl "https://freenewsapi.ai/v1/trends?country=UA&size=2"

What a trend is here

A trend is an event covered by several different outlets. One publisher writing about itself is not a story, and the robot will not create one: at least two independent publishers must carry it. That rule is what makes publishers the most useful number in the response — it is the count of newsrooms that independently thought the thing was worth covering.

Stories are recomputed for every country every five minutes. Two passes do it: one attaches fresh articles to stories already known, the other looks for new stories. The first needs no model and finishes in nineteen seconds for all 120 countries; the second is the slow one and is why the interval is five minutes rather than one.

Choosing the period

Three ways to say it, and they are mutually exclusive:

windowstringdefault 24h

A rolling window ending now: 15m, 30m, 1h, 3h, 6h, 12h, 24h, 7d, 30d.

Fifteen minutes is the shortest on purpose. The robots run more often than that, but a shorter window shows a handful of stories in even the busiest country and reads as if the world went quiet.

dateYYYY-MM-DD

One calendar day in UTC instead of a rolling window.

since / untilISO-8601

Explicit bounds: since=2026-08-29T06:00:00Z&until=2026-08-29T09:00:00Z. Either may be omitted. The span may not exceed 90 days — that is how long the corpus keeps articles.

Filtering

countryISO-2, comma separated

country=DE,FR,PL. Up to twenty at once. Omit it and you get every country in one list, which is the right way to ask «what is the world talking about».

categorystring, comma separated

politics, business, markets, tech, sport, health, science, culture, crime, conflict, weather, society.

kwstring, comma separated

Keep only stories carrying these words. Several words mean all of them, not any: kw=trump,china is stories about both.

The words are the ones the model used to tell stories apart — names, places, brands. Ask /v1/trends/keywords what is available before guessing.

qstring

Substring of the story title. Blunt but useful when you know the wording.

min_publishersintdefault 1

Drop stories that fewer than this many outlets carry. The single most effective noise filter: min_publishers=5 leaves only what a good part of a national press agreed to cover.

min_articlesintdefault 1

Same idea by article count. Weaker than the one above, because one prolific outlet can inflate it on its own.

Ordering and paging

sortstringdefault publishers

publishers — how many newsrooms carry it, the default and usually what you want. articles, newest, oldest, title.

sizeintdefault 50

1–200 stories.

offsetintdefault 0

Up to 10 000.

headlinesintdefault 3

How many article headlines to attach to each story, 0–10. Set it to 0 when you only need the shape of the day — the response gets several times smaller.

A few real calls

What a whole country is talking about, only stories a lot of outlets confirm:

bash
curl "https://freenewsapi.ai/v1/trends?country=DE&min_publishers=5&sort=publishers&headlines=0"

Everything about one keyword, worldwide, with sources:

bash
curl "https://freenewsapi.ai/v1/trends?kw=nepal&size=20&headlines=2"

Conflict coverage in three countries over an explicit window:

bash
curl "https://freenewsapi.ai/v1/trends?country=UA,PL,RO&category=conflict&since=2026-08-29T06:00:00Z&until=2026-08-29T12:00:00Z"

Response

Every story carries country, category, slug, articles, publishers, first_seen, latest, a url to the human page, and the headlines you asked for. The envelope repeats the filters you sent, so a stored response explains itself months later.

What it will not do

It will not tell you a story is important. publishers counts outlets, and outlets copy each other — a syndicated wire piece on forty sites looks like forty newsrooms. Treat the number as coverage breadth, not significance.

It will not give you sentiment. Tone lives in the BTC vs news dataset for crypto only, and extending it to everything is a different job.