Skip to content

The catalog as JSON: /api.json

One GET, no key, CORS enabled: all 185 APIs with their latest verifier result. A public list of public APIs, for tutorials, scripts and tools.

GEThttps://freeapi.today/api.json

JavaScript (fetch)
const res = await fetch('https://freeapi.today/api.json');
const { entries, status_source, generated_at } = await res.json();

// keyless APIs a browser can call, that passed their last check
const usable = entries.filter((e) => e.cors && e.up);
console.log(usable.length, status_source, generated_at);
/api.json · one entry shown
{
  "name": "Free API Today catalog",
  "about": "https://freeapi.today/open-data/",
  "license": "Free to reuse with a link to freeapi.today. API names and documentation belong to their owners.",
  "status_source": "snapshot",
  "generated_at": "2026-10-03T09:00:39.486Z",
  "count": 185,
  "entries": [
    {
      "slug": "open-meteo",
      "name": "Open-Meteo Forecast",
      "category": "weather",
      "description": "Hourly and daily weather forecast for any coordinate, from national weather services.",
      "page": "https://freeapi.today/apis/open-meteo/",
      "docs": "https://open-meteo.com/en/docs",
      "sample_request": "https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current_weather=true",
      "auth": "none",
      "https": true,
      "cors": true,
      "up": true,
      "checked_at": "2026-10-03T09:00:39.487Z",
      "latency_ms": 859,
      "days_up": 1,
      "days_checked": 1
    }
  ]
}

Build snapshot, not live. One verifier run on , from the machine that built this site. How we check

Fields

slug
Stable id; the page is /apis/{slug}/.
name, category, description
What the API is and what it returns.
docs
Official documentation URL.
sample_request
The GET request our verifier sends.
auth
Always "none": only keyless APIs are listed.
https
Whether the sample request uses HTTPS.
cors
true if the last answer allowed browser calls; null if not checked yet.
up
true if the last check passed; null if not checked yet.
checked_at
ISO time of that check.
latency_ms
Latency of the last passing check; null otherwise.
days_up, days_checked
Days counted as up and days with data, over at most 30.

The top level carries status_source ("snapshot" or "live"), generated_at and count. A second document, /status.json, has the per-day history for every API.

Why publish it

For years, tutorials used https://api.publicapis.org/entries as the example of “an API that lists APIs”. That hostname no longer resolved in DNS when we checked on October 3, 2026, so those examples now fail on the first line.

/api.json is not a copy of that service and does not share its field names. It is our own catalog, published in the open for the same kind of use: learning to call an API, building a picker, or checking whether the API your project depends on is still answering. It is a static document; download it whole and filter in your code.

You may reuse it with a link to freeapi.today. The names and documentation of the listed APIs belong to their owners.

Questions

Is api.publicapis.org still available?

That hostname no longer resolved in DNS when we checked on October 3, 2026. Tutorials that fetch https://api.publicapis.org/entries now fail. /api.json on this site is a different document with different field names, but it serves the same purpose: a public list of free APIs as JSON.

Do I need a key for /api.json?

No. It is a static JSON document served with Access-Control-Allow-Origin: *, so you can fetch it from a browser, a script or a build step.

How fresh is the status inside /api.json?

Read the fields status_source and generated_at. "snapshot" is the run that shipped with the site build; "live" is the scheduled verifier. Each entry also carries its own checked_at.

Can I query or filter on the server?

No. The document is small enough to download whole; filter it in your code. Please cache it for at least an hour.

Keep exploring