About this site
JSON API
About · Privacy · Terms · Contact
Every page on ForecastGeo is also readable as JSON. No key, no registration, no
rate limit beyond what keeps the server up. Responses are
{ "data": ... }, with a meta block on list endpoints.
CORS is open.
Endpoints
| Endpoint | Returns |
|---|---|
GET /api/news |
Newest located stories. limit (max 100), offset, order=asc|desc. |
GET /api/news/:id/forecast |
The forecast run for one article, with each scenario's deadline, status and evidence. |
GET /api/clusters |
Stories currently covered by two or more outlets. |
GET /api/clusters/:slug |
One story's cross-outlet framing analysis: shared claims, per-outlet emphasis, attribution, omissions, divergences. Retired slugs 301 to the surviving one. |
GET /api/sources |
Every newsroom in the archive with article counts, countries covered, and body-text availability. |
GET /api/sources/:slug |
One outlet in full, including its framing and image-audit record. |
GET /api/places |
Countries with at least three articles. |
GET /api/coverage |
Attention share, outlet-by-country matrix, attention decay, and burst concentration, plus the window they describe. |
GET /api/ledger |
Forecast accuracy: run counts by outcome, Brier score per model, calibration buckets, and recently resolved runs. |
GET /api/fulltext |
Article-body fetch outcomes overall and per outlet. |
GET /api/search?q= |
Full-text search over headlines and fetched bodies. page for paging. |
Also machine-readable
/feed.xml is an Atom feed of the newest stories. /llms.txt describes what is here and how to read it. /sitemap.xml lists every page.
What the fields mean
Anything a model wrote carries the model name and the time it was generated, and
cites the article it came from. status on a forecast is one of
pending, confirmed, contradicted or
unresolved — the last is a real outcome and is never folded into the
accuracy numbers as a hit. Image reuse means an identical SHA-256, nothing weaker.
Attribution
Headlines and summaries belong to the newsrooms that published them, and the API returns the outlet with every story. The derived analysis is ForecastGeo's own; a link back is appreciated. Please don't use this to reconstruct publishers' full article text — the API does not serve it, and that is deliberate.