Developers

Build on the radar

Read-only, no key, no account. The API returns exactly the rows the site renders, so a consumer and a page reader can never see different numbers. The data is CC0; the code is MIT.

Quick start

curl https://free-pool-radar.vercel.app/api/stats

Every response uses the same envelope: data plus generatedAt, and where relevant count, sources, lastSweepAt and nextSweepAt. Timestamps are ISO 8601 UTC.

Endpoints

Nothing below requires authentication. Filter the change log with ?type= and ?limit=; unknown values are rejected with a 400 rather than silently ignored.

Public read endpoints
MethodPathReturnsOpen
GET/api/liveFree routes usable right nowTry
GET/api/upcomingAnnounced pools and events, by start timeTry
GET/api/endedWithdrawn access, retained permanentlyTry
GET/api/providersThe provider registryTry
GET/api/modelsEvery model seen on a free routeTry
GET/api/eventsShared pools and promotional eventsTry
GET/api/changesThe append-only change logTry
GET/api/statsHeadline counts and the verification cycleTry
GET/api/datasetThe whole dataset in one documentTry
GET/data/latest.csvThe live set, flattened to CSVTry
GET/feed.xmlAtom feed of recent changesTry

Status codes

Responses are cached for five minutes (s-maxage=300). Nothing changes between sweeps, so polling tighter than that only costs you requests.

Errors are not empty results

If a route you expected to be populated comes back 503, the source could not be read. That is distinct from a genuinely empty set, and the two are never collapsed into each other — the same rule the site follows.

Go further