The idea
We kept running into the same wall. You want a simple list โ the chemical elements, country capitals, a random quote โ and the "free" API you find wants an account, an API key, a credit card on file "just in case," and a rate limit that trips the moment your side-project gets noticed. The free tier is bait; the real product is your lock-in.
So we set out to build the opposite: reference data about the world, served as plain files, with no keys, no limits, no tracking and no cost โ and to make it impossible for a future us to quietly take that away. That second part is why the whole thing is open source under the GPL. If we ever changed our minds, you could simply fork it.
Version one: GitHub Pages
The fastest way to host a pile of static files for free is GitHub Pages. We wrote a small generator that turns curated datasets into JSON, pushed it, pointed a branch at Pages, and โ that was it. A real API, live on the internet, for $0. It was the perfect place to prove the concept.
The catch we saw coming
GitHub Pages is generous but not infinite: it publishes a soft bandwidth limit of about 100 GB per month and is intended for modest sites. That's plenty for a hobby project โ but an API that gets popular is, by definition, a lot of bandwidth. We didn't want a success to become an outage (or an awkward email from GitHub). A "free forever" API can't live somewhere with a bandwidth ceiling.
Version two: Cloudflare
The fix was Cloudflare Pages. It serves static assets from a global
edge network with unlimited bandwidth on the free plan โ exactly the
shape of the problem we had. Same files, same generator, same clean URLs, but now the
site can be hammered as hard as anyone likes without a meter running. GitHub still holds
the source of truth; Cloudflare puts it in front of the world. As a bonus, a small
_headers file lets us serve every extension-less endpoint as real
application/json with permissive CORS.
Where we are now
- Grew from a dozen datasets to 100+ APIs and 3,000+ records.
- Added 100+ articles, an OpenAPI spec, Swagger docs, and this little museum of a story.
- Clean, key-free URLs; light and dark mode; a custom domain at
gratisapi.com. - Every byte still free to fetch, and every line still free to fork.
What's next
The static API answers one question perfectly: "give me this data." The next chapter is a dynamic API โ filtering, search, and random endpoints โ which needs a little compute at the edge. That introduces the one thing a pile of files never had: a per-request cost. We're planning it carefully and funding it out of pocket (and with donations). The technical page explains the two APIs and their trade-offs, and the cost page shows the (small) numbers.