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.
| Method | Path | Returns | Open |
|---|---|---|---|
| GET | /api/live | Free routes usable right now | Try |
| GET | /api/upcoming | Announced pools and events, by start time | Try |
| GET | /api/ended | Withdrawn access, retained permanently | Try |
| GET | /api/providers | The provider registry | Try |
| GET | /api/models | Every model seen on a free route | Try |
| GET | /api/events | Shared pools and promotional events | Try |
| GET | /api/changes | The append-only change log | Try |
| GET | /api/stats | Headline counts and the verification cycle | Try |
| GET | /api/dataset | The whole dataset in one document | Try |
| GET | /data/latest.csv | The live set, flattened to CSV | Try |
| GET | /feed.xml | Atom feed of recent changes | Try |
Status codes
- 200 — success.
- 400 — an unknown filter value on
/api/changes. - 503 — the database is not configured, or a read failed. A failed read is never reported as an empty result: you get an explicit error, not a
200with an empty array.
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
- The Atom feed tells you when a new pool appears, a quota moves, or access is withdrawn.
- Methodology explains what qualifies as free, how claims are ranked, and why a failed source never ends an offer.
- The timeline is the full change history the API reads from.
- Ecosystem lists what people have built on top of the data.