Developer Tools
453k Stars, One File: Finding Free APIs with public-apis
One of GitHub’s most-starred repositories is essentially a single README. Here’s how to read its 51 categories and ~1,625 free APIs — and why the Auth, HTTPS, and CORS columns matter more than the links.
One of the biggest time sinks at the start of a project is finding data. Showing the weather, pulling exchange rates, connecting to a film database, generating fake users for tests… For all of it, the odds that someone already built a service are very high.
public-apis is exactly that list. With over 453,000 stars it is one of the most-starred projects on GitHub — and here’s the interesting part: there is no application inside it to run. The repo is essentially one carefully maintained README file.
What exactly is the repo?
By its own description, “a collective list of free APIs.” It opened in March 2016 and has been community-maintained ever since. It’s MIT licensed, so there’s nothing stopping you from copying, deriving from, or processing the list in your own project.
| Attribute | Value |
|---|---|
| Stars | ~453,500 |
| Forks | ~50,000 |
| Created | March 2016 |
| License | MIT |
| Default branch | master |
| Categories | 51 |
| Listed APIs | ~1,625 |
Figures as of July 2026. The star count says something about the repo, but the real story is the structure: this isn’t a random pile of links, it’s a scannable table.
How is the list organized?
The README opens with an “Index” that jumps straight to a category. The categories are alphabetical and cover a wide surface:
- Data and content: Animals, Anime, Books, Dictionaries, News, Open Data, Photography, Video, Music
- Finance: Finance, Cryptocurrency, Currency Exchange, Blockchain, Shopping
- Infrastructure and development: Development, Programming, Continuous Integration, Cloud Storage & File Sharing, Test Data, Data Validation
- Location and transport: Geocoding, Transportation, Vehicle, Weather, Environment
- Business and public sector: Business, Government, Patent, Jobs, Calendar, Documents & Productivity
- Security and identity: Authentication & Authorization, Anti-Malware, Security
- Everything else: Machine Learning, Text Analysis, Health, Science & Math, Sports & Fitness, Social, Games & Comics, Food & Drink, Events, Email, Phone, Personality, Tracking, URL Shorteners, Art & Design, Entertainment, Open Source Projects
The real value: four columns
Each category is a Markdown table, and every row carries the API name (linked), a description, plus Auth, HTTPS, and CORS. Those three technical columns are what separate this from every other “awesome” list.
| Column | What it means | Why it matters |
|---|---|---|
| Auth | apiKey, OAuth, X-Mashape-Key, or blank (no auth) | Blank means you can try it immediately without a key; OAuth means a real integration effort |
| HTTPS | Yes / No | If No, you can’t call it from the browser — modern browsers block mixed content |
| CORS | Yes / No / Unknown | If No, you can’t call it directly from the frontend; you need a server layer in between |
How to actually use it
- 01
Translate the data you need into a category; “I need to generate user avatars” usually lives under Test Data or Photography.
- 02
Jump from the Index to the category and scan the table by the CORS column.
- 03
Open the candidate API’s own documentation — the list is a summary, current limits always live at the source.
- 04
Check the free tier’s quota — being on a “free” list does not mean unlimited.
- 05
If a key is required, keep it in an environment variable and never commit it to the repo.
- 06
Build the prototype, then re-read the service’s uptime record and terms of use once more before going to production.
Contributing to the list
The repo runs on community contributions: follow the format in CONTRIBUTING.md, add your API, and open a pull request. There’s also a scripts/ folder and GitHub Actions configuration, so format and link checks run automatically.
Why does this repo work so well?
Because it got one decision right: keep the structure fixed. Beyond category, description, and three technical columns, it adds nothing. That’s why it stays scannable by a human and processable by a machine — you can build your own search UI, a CLI tool, or a data source to hand to an agent on top of it.
I use this list in two places: finding a data source for quick prototypes, and as a starting point when I give an agent a task like “compare the APIs in this category and bring me the ones that support CORS.”