← all 90 tracked mock & placeholder APIs

Is Nager.Date (date.nager.at) down?

UP right now — answered HTTP 200 in 31 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: 100% · raw JSON · Atom feed of its down/recovered events

Context: The best free public-holidays API there is — keyless, CORS-enabled, open source, 200+ countries, no published rate limits. The testing trap is time, not limits: IsTodayPublicHoliday answers with a bare status code (200 = holiday, 204 = not — empty body either way, so res.json() throws), the holiday branch is untriggerable on ~350 days of the year, and NextPublicHolidays is a rolling window that rots assertions as dates pass.

What we check: GET https://date.nager.at/api/v3/PublicHolidays/2026/US — 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 date.nager.at 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 Nager.Date (date.nager.at) migration guide → (it also says when Nager.Date (date.nager.at) 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 date.nager.at? Embed a live status badge — it re-renders from our latest check (cached 5 min):

date.nager.at status badge

<!-- Markdown -->
[![date.nager.at status](https://mockbird.mockbird.workers.dev/status/nager-date/badge.svg)](https://mockbird.mockbird.workers.dev/status/nager-date)

<!-- HTML -->
<a href="https://mockbird.mockbird.workers.dev/status/nager-date"><img src="https://mockbird.mockbird.workers.dev/status/nager-date/badge.svg" alt="date.nager.at 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 date.nager.at 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": "nager-date", "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 20031 ms
2026-09-25T23:30:44ZOK 20021 ms
2026-09-25T22:30:45ZOK 20039 ms
2026-09-25T21:30:49ZOK 20011 ms
2026-09-25T20:30:50ZOK 20011 ms
2026-09-25T19:30:59ZOK 20030 ms
2026-09-25T18:30:53ZOK 20029 ms
2026-09-25T17:30:56ZOK 20034 ms
2026-09-25T16:30:56ZOK 20026 ms
2026-09-25T15:30:54ZOK 20038 ms
2026-09-25T14:31:04ZOK 20031 ms
2026-09-25T13:31:10ZOK 20049 ms
2026-09-25T12:31:05ZOK 20023 ms
2026-09-25T11:31:02ZOK 20032 ms
2026-09-25T10:30:54ZOK 20047 ms
2026-09-25T09:30:53ZOK 20027 ms
2026-09-25T08:31:02ZOK 20031 ms
2026-09-25T07:30:56ZOK 20011 ms
2026-09-25T06:30:51ZOK 20024 ms
2026-09-25T05:30:49ZOK 20020 ms
2026-09-25T04:30:47ZOK 20022 ms
2026-09-25T03:30:43ZOK 20018 ms
2026-09-25T02:30:42ZOK 20045 ms
2026-09-25T01:30:43ZOK 20022 ms
2026-09-25T00:30:45ZOK 20025 ms
2026-09-24T23:30:43ZOK 20043 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.