← all 90 tracked mock & placeholder APIs

Is ip-api.com down?

UP right now — answered HTTP 200 in 12 ms.

Last checked 2026-09-26T00:30:43Z · checked every hour (a timeout/TLS/DNS blip on an otherwise-up service is confirmed with a same-run retry before it counts) · OK-rate 24h: 100% · 7d: 99.4% · raw JSON · Atom feed of its down/recovered events

Context: The classic keyless IP-geolocation API — but the free tier is HTTP-only: the same URL over https:// answers 403 (SSL is the paid tier), so every https-served page is locked out by mixed-content blocking before CORS even matters. Lookup failures (invalid query, private ranges) arrive as HTTP 200 with status:"fail". 45 requests/min per IP with a 1-hour ban for repeat overruns; free tier is non-commercial only. This probe uses the plain-HTTP endpoint — the only one the free tier has.

What we check: GET http://ip-api.com/json/8.8.8.8?fields=status,query — a plain, keyless request from Cloudflare's network with an honest bot UA, exactly what a tutorial curl or an <img> tag experiences. OK = HTTP 2xx/3xx within 8s. No retries, no cookies, no API keys.

Need reference data you own?

If ip-api.com is failing (or you're tired of finding out mid-demo), Mockbird gives you your own copy of the reference data — 250 countries (names, ISO codes, capitals, regions, currencies, flags) or 170+ currencies with dated sample rates — served as a queryable REST API in one pipe, no key, no monthly cap — free, no signup:

curl -s https://mockbird.mockbird.workers.dev/data/countries.db.json \
| curl -s -X POST 'https://mockbird.mockbird.workers.dev/api/projects/import?name=countries' \
    --data-binary @-
# then e.g. ?region=Europe or ?code=FR on /m/YOUR_ID/countries
# currencies + sample rates: /data/currencies.db.json (see /guides/mock-exchange-rates-api)

Read the honest ip-api.com migration guide → (it also says when ip-api.com is the better tool) or create your own mock API in one click.

README badge

Does your project's test suite or tutorial depend on ip-api.com? Embed a live status badge — it re-renders from our latest check (cached 5 min):

ip-api.com status badge

<!-- Markdown -->
[![ip-api.com status](https://mockbird.mockbird.workers.dev/status/ip-api/badge.svg)](https://mockbird.mockbird.workers.dev/status/ip-api)

<!-- HTML -->
<a href="https://mockbird.mockbird.workers.dev/status/ip-api"><img src="https://mockbird.mockbird.workers.dev/status/ip-api/badge.svg" alt="ip-api.com status"></a>

Green = answering plain GETs, red = network-dead, amber = answering but with an error status. Every tracked service has one; there's also a summary badge for all 90.

Get pinged when it goes down

Subscribe any webhook URL — no account needed. One message when ip-api.com goes down, one when it recovers (debounced: two consecutive hourly checks must agree, so a single blip never fires). Slack and Discord incoming-webhook URLs get a formatted message; anything else gets an HMAC-signed JSON POST.

Or from a terminal / CI script:

curl -X POST https://mockbird.mockbird.workers.dev/api/status/watch \
  -H "content-type: application/json" \
  -d '{"service": "ip-api", "url": "https://hooks.slack.com/services/T000/B000/XXXX"}'

Use "service": "*" to watch all 90 tracked services at once. The response includes an unsubscribe curl; 5 consecutive failed deliveries auto-unsubscribe. No webhook? Omit "url" to get a pollable subscription instead — GET the returned poll URL anytime for the transitions since your last poll. Full API details →

The same checker can watch your own URL: POST /api/status/monitor {"url": "https://api.example.com/health", "notify": "<webhook>"} — every 30 minutes, alert on down + recovery, free, no account. Monitor API →

Recent checks

Checked at (UTC)ResultTime
2026-09-26T00:30:43ZOK 20012 ms
2026-09-25T23:30:44ZOK 20014 ms
2026-09-25T22:30:45ZOK 20013 ms
2026-09-25T21:30:49ZOK 20013 ms
2026-09-25T20:30:50ZOK 20049 ms
2026-09-25T19:30:59ZOK 20031 ms
2026-09-25T18:30:53ZOK 20024 ms
2026-09-25T17:30:56ZOK 20021 ms
2026-09-25T16:30:56ZOK 20015 ms
2026-09-25T15:30:54ZOK 20027 ms
2026-09-25T14:31:04ZOK 20016 ms
2026-09-25T13:31:10ZOK 20024 ms
2026-09-25T12:31:05ZOK 20020 ms
2026-09-25T11:31:02ZOK 20018 ms
2026-09-25T10:30:54ZOK 20016 ms
2026-09-25T09:30:53ZOK 20017 ms
2026-09-25T08:31:02ZOK 20016 ms
2026-09-25T07:30:56ZOK 20014 ms
2026-09-25T06:30:51ZOK 20018 ms
2026-09-25T05:30:49ZOK 20012 ms
2026-09-25T04:30:47ZOK 20016 ms
2026-09-25T03:30:43ZOK 20013 ms
2026-09-25T02:30:42ZOK 20013 ms
2026-09-25T01:30:43ZOK 20013 ms
2026-09-25T00:30:45ZOK 20013 ms
2026-09-24T23:30:43ZOK 20013 ms

Bias disclosure: this page is run by Mockbird, a free hosted mock-API service. The status data is real and logged verbatim (pull it yourself), and the linked guides say when the incumbent wins.