Skip to main content

Get a key

Create one at gdeltcloud.com/api-keys. Keys look like gdelt_sk_… and are shown once.
That is the whole authentication story: a bearer token on every request.
A new account starts a 7-day evaluation with 1,000 QU, the full UI, REST API and MCP access, and up to three daily email Monitors (one 7-day extension on request). Bulk downloads remain paid-only. When the evaluation ends, Free keeps the web app, API Arena, saved Monitor settings and previews with 50 QU a month. API keys, OAuth, the MCP server and scheduled Monitor execution require active access; Monitor webhooks and bulk downloads remain paid-only. A key without active access answers 403 PROGRAMMATIC_ACCESS_DENIED (errors). Eligible existing personal Free workspaces can claim a one-time 500 QU grant, valid 7 days from activation.
When adding filters, pick values from the value reference and Event taxonomy. Use explicit dates for repeatable queries; the effective request window is in meta.query_window, and available history is in meta.coverage. When part of a valid Event or Story date range has not published, the API returns the safely published rows with coverage.served_dates, lists withheld partitions and reasons in coverage.missing_dates, and sets coverage.window_complete to false. It returns a retryable snapshot error only when no requested partition can safely answer.

Hello, world

No filters. The most significant event in the endpoint’s default window:
A real response, trimmed to the fields worth meeting first:
That is the whole product in one row. An event is a coded claim — a date, a place, actors, a taxonomy code and metrics — and story_refs points at the clustered coverage it was read from. The 162 articles behind it are one event, not 162.
Every response on this page was returned on 2026-08-26 and is reproduced as returned, trimmed to the fields under discussion. A live row carries more — metric sub-factors with their stated reasons, entity references, a language breakdown and the top source articles — and the values move with the news.

Then, in the workspace

In the signed-in workspace, investigate a company, follow a country or retrieve coded Events. Use this data shows the actual request and response; copy its code or open the supported scope in the API Arena. Confirm a company’s identity before following its reporting. Profile overview panels retain their labelled recent windows; the Events and Stories links carry your chosen reporting dates. Semantic search retrieves a bounded similarity candidate pool. Changing page size can change that pool, and deep pagination is not an exhaustive, stable export of every matching record. For extraction jobs, use structured filters and the documented dataset download scope. Inspect the source articles: a Story may match a country through a linked Event while its representative geography describes another location. Monitor this carries compatible filters into a draft. Preview shows 7 or 30 days of evidence; scheduled matching follows newly committed records since the previous successful checkpoint. The original discovery dates remain in the saved request for context. It does not save a Monitor or enable deliveries automatically. If a source needs additional access, its plan link retains your results and shows current catalog options. Return to the same work after reviewing access. The Data & coverage page is the source inventory; it distinguishes measured holdings from planned coverage and available API access from published bulk files.

The same shape, for narratives

/events answers what happened. /stories answers what is being said — the article clusters underneath.
443 articles, one story, one linked event. That collapse is why an article count and an event count answer different questions — the nouns are in Concepts.

Count before you list

This is the step that saves the most time. The summary endpoints return counts grouped by date, geography or category — the shape of a period — so you can see where the volume actually is before committing to a filter.
Seventeen buckets came back; the first six, with the noisiest fields dropped:
Read it before you filter. The first bucket holds 1,786 events and the fifth holds 72 — and the fifth is the one carrying the highest average significance of the six. Volume and importance are different questions, and a list query aimed at the biggest bucket would have walked past the answer.
A summary endpoint takes almost the same filters as its list sibling — days, date, entity, country_match and geo_precision_* all work here. The handful it does not take are listed in the endpoint index, and it tells you about them: near/lat/lon/radius_km come back under applied_filters.ignored, and search is refused with a 400.
/stories/summary does the same for narrative clusters. Now filter the list endpoint down to the buckets that actually carried volume — and read applied_filters on both calls to confirm the two describe the same population.
Add filters one at a time. Stacking four on the first call is the most common way to get an empty result and conclude the data is missing, when it is really the AND of your filters. Check applied_filters in the response — it echoes exactly what the server used.

Prefer to work through an agent?

Two MCP servers, and connecting the wrong one is the most common setup mistake. The docs server is unauthenticated and returns documentation — every page, parameter and value list, so your assistant can write correct code without copy-pasting:
Claude Code, Codex and Cursor can install both servers plus eight skills in one command instead — see Plugins. The data server is a different URL, requires your API key or an OAuth sign-in, and is the one that answers questions about the world rather than about this site:
Connecting only the docs server and then reporting “no events found” is the mistake — see the MCP overview for both.
https://docs.gdeltcloud.com/mcp is a JSON-RPC endpoint, not a page — opening it in a browser returns 405, which is expected. The page describing the MCP surface is /mcp/overview.

Then pick your path

I'm building something

Resolve an entity once, then reuse that id across news, tone, awards and physical assets.

I'm answering a question

Work in plain language through the MCP server, with citations.

Two things that will save you time

Event and story lists do not default to a week, and they do not default to all of history. Omitting the window bounds the request to the last two days — today and yesterday. Other families carry their own default, declared on each days parameter in Parameters. Pass days or an explicit date_start/date_end whenever the window matters to your answer. Coverage does not run all the way back. A query reaching before the coded window returns a near-empty result that looks like a bug and is not. The window, and what it means for a query, is in Coverage; per-dataset windows are in the data catalog.