Skip to content
unzoi docs
Search and navigation
Start here
REST API
MCP
Limits and plans
Agent clients
SDKs
Guides

Recipes / Track a slow-moving topic without drowning in it

Track a slow-moving topic without drowning in it

/stories in semantic mode. This page is the operational half — what comes back, how it breaks, and what running it for real takes.

The request

GET /stories
  ?q=emissions targets grid capacity renewables policy
  &mode=semantic
  &from=<now - 14d>
  &limit=20

As a call you can paste:

curl -s -G "https://api.unzoi.com/stories" \
  -H "x-api-key: $UNZOI_KEY" \
  --data-urlencode "q=emissions targets grid capacity renewables policy" \
  --data-urlencode "mode=semantic" \
  --data-urlencode "from=<now - 14d>" \
  --data-urlencode "limit=20"

For an agent rather than a script, the same query is the list_stories MCP tool with these as its arguments.

Parameters used here

What comes back

Story clusters covering the period. Sorting by outlet count surfaces what the press collectively treated as significant, which for a slow topic is more useful than recency.

Field by field: the /stories response reference.

How this goes wrong

Using a single broad keyword like "climate". It returns an unusable volume dominated by passing mentions, and narrowing it later means rebuilding the query from scratch.

Adapting it

Narrowing to one strand — grid capacity, or emissions policy, or a named technology — produces a much more usable feed than the broad standing query, at the cost of running several. For policy specifically, pair with a country filter and shorten the window: policy coverage is national and bursty, and a two-week window on a national query buries the announcement in the commentary that followed it.

Running it for real

A fortnightly window polled daily returns mostly the same stories, so deduplicate on story identifier across polls and keep a rolling seen-set rather than comparing against the previous response. Because the window is long, a single poll is a large response — request the story endpoint rather than the article one and cap the limit, or the payload becomes the bottleneck before the request count does.

Why this approach

The case for these parameters over the obvious alternatives — and when this recipe is the wrong tool entirely — is on the recipe's page on unzoi.com. It is kept there rather than repeated here, so the argument and the operations cannot drift apart.