Most public-API lists copy their examples from a README that stopped working years ago. This one runs on one rule: on the 768 fully documented pages, the curl command and the JSON response are the real request and the real reply, and each page carries the date it was run. A verifier script re-hits all 768 endpoints in CI so the claim doesn't quietly rot. 2,227 APIs catalogued across 26 categories, 963 of which need no API key at all. No signup, no key of mine in the middle.
Hey Product Hunt
I kept hitting the same wall with public-API lists: the examples were copied from a README that was last true in 2019, and half of them 404 by the time you paste them into a terminal.
So I built this around one rule. On the 768 fully documented pages, every curl command and every JSON response was actually executed against the live API, and each page carries the date it was run. A verifier script re-hits all 768 endpoints, exits non-zero if anything fails, and runs in CI so the claim doesn't quietly rot.
Writing that verifier taught me more than the directory did:
- Several APIs return 403 to Node's fetch and 200 to curl from the identical URL with identical headers. It's WAF TLS-fingerprinting, not auth.
- Agify, Genderize and Nationalize look like three separate APIs but are one provider sharing a single 100-names/day allowance, so all three 429 at once and it reads exactly like an outage.
- NASA's DEMO_KEY is shared globally at ~30 requests/hour, so a 429 there tells you nothing about NASA's uptime.
- OpenF1 returns 401 to everyone, past seasons included, while an F1 session is live.
- OECD's SDMX endpoint answers fine standalone and 500s under concurrency.
2,227 APIs catalogued across 26 categories, 963 of which need no key at all. No signup, no key of mine in the middle - the pages just show you how to call the API directly. When one dies I delete the entry rather than leave it listed.
If an example doesn't reproduce for you, that's a bug and I'd genuinely like to hear about it.