Quickstart
A key, a first request, and a first tool call.
1. Get a key
Sign in at console.unzoi.com and create a key. Signing up and signing in are the same magic-link action, and the free tier needs no card.
Keys look like nai_ followed by 48 hex characters. The console shows a key once, at creation — only its
hash is stored, so a lost key is rotated rather than recovered.
2. Your first request
curl -s "https://api.unzoi.com/search?q=semiconductor+export+controls&limit=3" \
-H "x-api-key: $UNZOI_KEY" What comes back:
{
"total": 41,
"total_relation": "exact",
"offset": 0,
"limit": 3,
"has_more": true,
"mode": "keyword",
"results": [
{
"id": "20260826073000-a1b2c3",
"title": "New export controls tighten chip supply",
"url": "https://example.com/chips",
"source": "reuters.com",
"language": "eng",
"published_at": "20260826073000",
"story_id": "s-9f2c",
"topics": ["ECON_TRADE", "TECH_SEMICONDUCTOR"],
"organizations": ["asml"],
"countries": ["NL", "CN"]
}
],
"history_days": 30,
"from_clamped": false,
"attribution": "Data derived from the GDELT Project (https://www.gdeltproject.org/)."
}
Two fields there are about your plan rather than about the news:
history_days is how far back your plan may query, and from_clamped says whether this
request hit that boundary. Archive depth explains both.
3. Collapse the duplicates
That search returned 41 articles, but not 41 events — a wire story runs across many outlets. Ask for stories instead:
curl -s "https://api.unzoi.com/stories?q=semiconductor+export+controls&limit=3" \
-H "x-api-key: $UNZOI_KEY" {
"total": 6,
"stories": [
{
"story_id": "s-9f2c",
"count": 23,
"outlets": 19,
"title": "New export controls tighten chip supply",
"url": "https://example.com/chips",
"sources": ["reuters.com", "bbc.co.uk", "ft.com"]
}
]
}
Six events rather than 41 articles, each carrying how many outlets ran it. Pass a story_id back as a
filter to expand one cluster into its articles.
4. Connect an agent
The same index is an MCP server at https://api.unzoi.com/mcp. In Claude Code, one command:
claude mcp add --transport http unzoi https://api.unzoi.com/mcp \
--header "x-api-key: $UNZOI_KEY" Then ask something that needs current reporting, and watch the tool call in the transcript.
For every other client — Claude Desktop, ChatGPT, Cursor, Windsurf, VS Code, Zed, Cline, Continue, Goose, LangChain, LlamaIndex, n8n, Bedrock AgentCore — see Agent clients. Each page carries the config for that client and the mistake people actually make with it.
5. Know your budget
curl -s https://api.unzoi.com/account -H "x-api-key: $UNZOI_KEY" Plan, per-minute rate, monthly quota, month-to-date usage, whether the key stops at its quota or bills overage, and the archive depth. Every response also carries the same figures as headers, so you rarely need to ask twice. Limits and plans covers all three.
Where next
- The search endpoint — every parameter, generated from the spec.
- Choosing a ranking mode — when to use hybrid, and when not to.
- TypeScript and Python — working clients in ~40 lines.
- The MCP tool reference — all six tools and every argument.