Why the GitHub public-apis List Is Broken in 2026 (And What to Use Instead)
· analysis
An audit of the 350k-star public-apis/public-apis repo against live HTTP checks: 6 APIs prominently listed are dead or paid, dozens more are flaky. The breadth-vs-freshness trade-off, with data.
I've been monitoring 81 free public APIs hourly for the past six months. In that time, the public-apis/public-apis repo on GitHub passed 350,000 stars and remained the single most-cited reference for 'find me a free API'. It is also, measurably, out of date.
This post isn't a teardown of the repo or its maintainers — public-apis is the result of years of community effort and is genuinely the right tool for discovery. It's a documented case for why discovery and verification are two different jobs, and why pointing a CI job at a markdown file isn't the same as pinging the actual endpoint.
The Six Dead-or-Paid APIs Worth Calling Out
Our /graveyard page tracks APIs that promised free access and either died or moved to paid since 2020. Six entries are particularly common in 'find a free X API' search results — including downstream lists that source from public-apis or its forks — and all six are unusable in 2026 as advertised.
- Twitter API v1.1 (free tier) — Killed July 2023. The basic paid tier now starts at $100/month for read access. v1.1 endpoints return 401 or 403 immediately for any non-paid token. Replacement: there is no equivalent free Twitter/X read API. For social mentions, use Reddit's OAuth tier or RSS feeds.
- Reddit API (free tier) — Effectively killed June 2023. The official API is still technically free up to 100 queries/minute for OAuth users, but bulk public read access is gone and rate limits make production use impractical. Replacement: Pushshift (community), RSS feeds, or the official OAuth tier for low-volume use.
- Dark Sky API — Discontinued December 31, 2022 after Apple's 2020 acquisition. The endpoint returns 404. Replacement: Open-Meteo (better than Dark Sky on most metrics) or Tomorrow.io's free tier.
- Yahoo Finance API (v7) — Officially discontinued 2017 but unofficial yfinance/yfin endpoints kept it alive for years. Yahoo blocks them aggressively in 2026 — any production use breaks within days. Replacement: AlphaVantage free tier, Polygon.io free tier, or StlouisFed (FRED) for macro data.
- MetaWeather — Discontinued April 2022. Domain still resolves but returns 503. Replacement: Open-Meteo (same global coverage, more data) or 7Timer (community, lower polish).
- Weather Underground API (free tier) — Sunset 2018-2019 after IBM acquisition. Personal weather station data is still accessible via the WU website but no public API. Replacement: Open-Meteo with /v1/forecast?past_days=N for recent history.
Why This Happens (And Why It Will Keep Happening)
Static markdown is the wrong data model for a fact that changes. The public-apis repo encodes 'is this API free in YYYY-MM' as a Markdown row. That row, once merged, persists forever unless someone files a PR to remove it. Removing entries is unrewarding work — it doesn't grow the catalog, doesn't ship a feature, doesn't generate stars — so removal PRs are rare and slow.
The economic pattern behind 'free' APIs that get killed is consistent: a startup launches with a generous free tier to build mindshare; the free tier becomes a non-trivial line item on the AWS bill; either monetisation pressure or acquisition pressure forces a shutdown. Dark Sky → Apple → killed. Twitter → Musk → paywalled. Yahoo Finance → already gone. The pattern continues — and any catalog that doesn't continuously verify will always be six months behind.
What Verification Looks Like in Practice
FreeAPI.watch's verification layer is conceptually simple: a Cloudflare Worker on a cron schedule hits each tracked API's documented health endpoint (or lightest functional endpoint when no health endpoint is documented), records the status code and response time, and persists the result to D1.
From that raw data, we derive: latest known status (alive / dead / broken now), 30-day rollup uptime, a composite score that combines uptime with response time and free-tier friction (no-key beats credit-card-required), and event detection for state changes (alive → dead, paid tier change announcements).
When an API dies, the corresponding /[slug] page shows the dead status immediately; within hours, the /graveyard page picks it up; within a day, anyone linking to that API's page from a search result sees the warning instead of a stale 'this is great' editorial.
The full pipeline runs on Cloudflare's free tier — Worker cron + D1 + Pages — at zero monetary cost. It's not magic. The reason the GitHub list doesn't do it is structural: a markdown file in a Git repo is not the right place for live data.
The Discovery → Verification Workflow
Here's the working pattern for finding a free API in 2026 that won't waste your weekend:
Step 1, discovery — Open the public-apis GitHub repo. Browse the category you need (Weather, Geocoding, Finance, etc.). Note 3-5 candidate APIs by name. Don't trust the free-tier description — it might be five years old.
Step 2, narrowing — For each candidate, check if FreeAPI.watch monitors it: search for the name on the homepage or browse /category/[name]. If we do, the API detail page tells you live status, 30-day uptime, current free-tier in our own words, paid alternatives, and a quick-start code snippet.
Step 3, verification — Before writing application code against the chosen API, curl the documented endpoint with the exact request shape you'll use. Check the response body matches what the docs claim. If the API requires a key, sign up and verify the key works on your first call. If anything looks off — wrong CORS headers, missing fields, 4xx for documented requests — pick a different candidate.
Step 4, monitoring — Once you ship, set up an uptime alert on the specific endpoints you depend on. Generic uptime tools (StatusGator, UptimeRobot, Cronitor) are fine. If you ship in our monitored categories, our /api/v1/ endpoint exposes the same data we use internally — you can subscribe to your specific APIs without standing up your own monitor.
What We're Not Saying
We're not saying the public-apis repo is bad. It's the largest open dataset of free APIs and it solves a real problem — discovery. We're saying the discovery and the verification jobs are different, and conflating them costs real engineering time when an API in the list turns out to be dead.
We're not saying you should always use FreeAPI.watch. We monitor six categories deeply (weather, news, finance, geocoding, cryptocurrency, public-data). If your category isn't one of those — APIs for transportation, music, games, government, or anything else — the GitHub list remains the best starting point, and you'll have to do the verification step manually.
We're not saying community-maintained lists shouldn't exist. We literally seed our catalog from public sources including the public-apis list. The point is that 'curated' and 'verified' are different words, and only one of them survives contact with a six-month-old free tier.
Further Reading
See /graveyard for the live tracking of dead and paid-tier APIs, /changelog for the rolling list of recent status changes across our 81 monitored APIs, and /blog/free-api-directories-compared-2026 for the longer comparison of the three major directories (GitHub list, publicapis.io, FreeAPI.watch).
If you maintain a downstream catalog that sources from public-apis and want to flag dead entries automatically, the /api/v1/ endpoint exposes our live status data and could be a useful upstream signal. Contact via /contact if you'd like coordination on that.