Public API
All the data on FreeAPI.watch is also available as a free JSON API for any developer to consume. No auth, no rate limits beyond the underlying Cloudflare edge cache. Build your own dashboards, alerting, or integrations on top of the same data that powers this site.
Endpoints
Full snapshot: all APIs with latest check, 30-day rollups, and recent events.
curl -s https://freeapi-builder.a10ayassine.workers.dev/snapshot.json | head -c 200 Returns { apis: SnapshotApi[] } — the full list of tracked APIs with live status.
curl -s https://freeapi-builder.a10ayassine.workers.dev/api/v1/apis Returns a single SnapshotApi object, or 404 if the slug is unknown.
curl -s https://freeapi-builder.a10ayassine.workers.dev/api/v1/apis/open-meteo Returns { categories: string[] } — sorted list of unique category names.
curl -s https://freeapi-builder.a10ayassine.workers.dev/api/v1/categories Returns { category, apis: SnapshotApi[] } — active APIs in the specified category.
curl -s https://freeapi-builder.a10ayassine.workers.dev/api/v1/category/weather Returns { apis: SnapshotApi[] } — APIs with status dead or paid.
curl -s https://freeapi-builder.a10ayassine.workers.dev/api/v1/graveyard Response shape
Each API object follows the SnapshotApi shape:
interface SnapshotApi {
id: number;
slug: string;
name: string;
category: string;
description: string;
base_url: string;
health_url: string;
health_method: "GET" | "HEAD";
expected_status: number;
auth_type: "none" | "api_key" | "oauth";
free_tier_text: string;
free_tier_score: number; // 1–10 editorial score
docs_url: string | null;
paid_alternatives_json: string; // JSON-encoded array
affiliate_links_json: string; // JSON-encoded array
added_at: string; // ISO 8601
status: "active" | "dead" | "paid";
latest_check: {
api_id: number;
ts: string;
status_code: number | null;
response_ms: number | null;
alive: 0 | 1;
} | null;
rollups: Array<{
api_id: number;
day: string; // YYYY-MM-DD
uptime_pct: number; // 0–100
avg_ms: number;
}>;
} Rate limits & caching
All responses are cached at the Cloudflare edge for 5 minutes (Cache-Control: public, max-age=300). There is no per-client rate limit — the edge cache absorbs the load. If you hammer the origin faster than 5 minutes you will still receive the cached response. The underlying data is refreshed once per hour by our health-check Worker.
License
All data is public. Attribution appreciated but not required. Link back to freeapi.watch if you find it useful.
Example: list weather APIs in JavaScript
const res = await fetch("https://freeapi-builder.a10ayassine.workers.dev/api/v1/category/weather");
const { apis } = await res.json();
for (const api of apis) {
console.log(
api.name,
api.latest_check?.alive === 1 ? "✅ up" : "❌ down",
api.free_tier_text
);
}