ICNDb now serves gambling spam โ€” the beginner-API graveyard, and what to use instead

For years, the Internet Chuck Norris Database (api.icndb.com) was the fun first API in countless fetch/AJAX tutorials, bootcamp exercises, and "build your first app" videos: one keyless GET, one joke back. Today that request does something worse than fail:

curl -sL http://api.icndb.com/jokes/random | grep -o '<title>[^<]*'
# <title>ROYALTOGEL Situs Slot Gacor Terpercaya 2025 โ€“ Bonus Besar & Mudah Jackpot

The API is gone and the domain has been taken over: every path 301-redirects to a slot-machine gambling-spam page. Verified by direct request on September 7, 2026 โ€” and tracked hourly here, so if that ever changes, the status page will say so before this one does.

This one is worth a code search, not just a shrug. A dead API fails loudly. A hijacked domain doesn't: anything still fetching api.icndb.com โ€” an old tutorial repo someone forks, a demo app still deployed, a README "try it" link โ€” now pulls content from, or sends readers to, a spam site. If you've ever shipped or published code with an ICNDb URL in it, grep for icndb and remove it.

The rest of the graveyard

ICNDb has company. These are the little keyless APIs that a generation of beginner tutorials were built on โ€” all re-verified by direct request on September 7, 2026, all tracked hourly on the live status board:

APIWhat tutorials used it forStatus today
api.icndb.comChuck Norris jokesDomain hijacked โ†’ gambling spam (tracked)
boredapi.com"I'm bored" activity suggestionsDNS no longer resolves (tracked)
numbersapi.comNumber triviaHTTP 404 on every fact URL (tracked)
jservice.ioJeopardy! trivia questionsConnection times out (tracked)
api.forismatic.comRandom quotesConnection times out (tracked)
balldontlie.io (old /api/v1)NBA statsOld keyless API 404s; lives on at api.balldontlie.io but now requires an API key (keyless GET โ†’ 401) (tracked)
swapi.coStar Wars dataRedirects to a Pipedream marketing page โ€” use swapi.dev instead (tracked)

The survivors (use these if you want the same fun data)

Being generous first โ€” if the point was the joke/trivia itself, these keyless APIs answered a plain GET with real JSON when we checked on September 7, 2026:

APIWhat you getTry
api.chucknorris.ioThe spiritual ICNDb successor โ€” random Chuck Norris jokes, categories, searchcurl https://api.chucknorris.io/jokes/random
official-joke-apiSetup/punchline jokescurl https://official-joke-api.appspot.com/random_joke
uselessfacts.jsph.plRandom factscurl https://uselessfacts.jsph.pl/api/v2/facts/random
opentdb.comTrivia questions (the jservice niche)curl "https://opentdb.com/api.php?amount=1"
bored-api.appbrewery.comThe Bored API dataset, rehosted by App Brewery for course studentscurl https://bored-api.appbrewery.com/random
swapi.devStar Wars data (the swapi.co successor)curl https://swapi.dev/api/people/1/

These are mostly volunteer-run side projects too โ€” which is exactly how the graveyard above got filled. Enjoy them, but don't build a course, a README, or a deployed demo on the assumption that any of them outlives your content.

The structural fix: teach against an API you control

Every entry in that graveyard broke someone's tutorial the same way: the author didn't control the API. If you're writing a tutorial (or following one), the durable move is an API that belongs to the tutorial. With Mockbird, one curl turns your own jokes into your own random-joke endpoint โ€” no signup:

curl -s -X POST "https://mockbird.mockbird.workers.dev/api/projects/import?name=jokes" \
  -H 'content-type: application/json' --data '{"jokes":[
    {"id":1,"setup":"Why do programmers prefer dark mode?","punchline":"Because light attracts bugs."},
    {"id":2,"setup":"Why did the developer go broke?","punchline":"He used up all his cache."},
    {"id":3,"setup":"How many programmers does it take to change a light bulb?","punchline":"None โ€” hardware problem."}
  ]}'
# โ†’ { "id": "abc123xyz0", "baseUrl": "https://mockbird.mockbird.workers.dev/m/abc123xyz0", ... }

Your records, hosted verbatim, full CRUD. And the ICNDb move โ€” one random joke per request โ€” is a query param:

curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/jokes?sortBy=random&limit=1"
# [ { "id": 2, "setup": "Why did the developer go broke?", "punchline": "He used up all his cache." } ]

No account, CORS on by default (browser fetch() works from any origin), writes persist, 10,000 requests/day per project. Want something to hit right now without creating anything? The shared demo project is keyless:

curl "https://mockbird.mockbird.workers.dev/m/demo/products?sortBy=random&limit=1"

Prefer clicking to curling: paste your db.json in the dashboard or create a seeded project in one click.

Honest comparison

Survivor APIs (chucknorris.io etc.)Mockbird
Pre-loaded fun data (jokes, trivia)โœ… the pointโ€” you bring the data (or use faker-style seeds)
Under your control / can't vanish under your tutorialโŒ volunteer-runโœ… your project, your records; eject anytime via /db.json
Writes persist (teach POST/PUT/DELETE for real)โŒ read-onlyโœ… full CRUD
Filters, pagination, relations, GraphQL, OpenAPI exportโ€”โœ…
Simulate errors/latency (?mock_status=500, ?mock_delay=2000)โ€”โœ…

Written by the Mockbird maker โ€” bias disclosed. If you just want a Chuck Norris joke, api.chucknorris.io is alive and delightful โ€” use it. Use Mockbird when the API is teaching material or test scaffolding: something you need to still work when a stranger runs your tutorial three years from now. Every status claim above was verified by direct request on September 7, 2026, and each service is re-checked every 30 minutes.

FAQ

Is ICNDb coming back? Almost certainly not in place: the domain itself now serves unrelated spam, which usually means it lapsed and was re-registered. api.chucknorris.io is the maintained successor for the same jokes. The status page keeps checking anyway.

Why did all of these die? Free, keyless, no revenue, one maintainer, growing abuse traffic. It's the natural life cycle of hobby APIs โ€” the surprise isn't that they die, it's how much published teaching material assumes they won't.

I maintain a tutorial that used one of these โ€” what's the least-work fix? Point it at a survivor above if the data matters, or spend one curl making the tutorial its own API (recipe up top) if the fetching is what you're teaching. Either way, embed the API's status badge so readers can see at a glance whether the endpoint is up.

Related: Quotable (quotes API) alternative ยท free fake REST APIs compared ยท JSONPlaceholder alternative ยท host a JSON file as an API ยท REST Countries alternative. Create your API โ†’