BYTETOOLS

chucknorris.io API

Free Chuck Norris jokes API with no key. Random jokes, 16 categories and full-text search. CORS enabled. Tested curl example and live JSON response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the chucknorris.io API?

chucknorris.io is a free JSON API serving Chuck Norris jokes with no API key. It supports random jokes, filtering across 16 categories, and full-text search of the joke database.

chucknorris.io is a well-built free API with a surprisingly complete feature set for something this whimsical: random retrieval, category filtering and full-text search, all documented and all key-free.

It is a good teaching API precisely because it has more than one endpoint. You can build a project that starts with a random joke, adds a category dropdown fetched from `/jokes/categories`, and finishes with a search box — a realistic progression using one consistent data source.

Quick facts

Base URL
https://api.chucknorris.io
Authentication
No key required.
Rate limit
No published limit.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the chucknorris.io API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch a random joke

GET https://api.chucknorris.io/jokes/random

curl
curl 'https://api.chucknorris.io/jokes/random'
JavaScript (fetch)
const res = await fetch("https://api.chucknorris.io/jokes/random");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.chucknorris.io/jokes/random", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "categories": [],
  "created_at": "2020-01-05 13:42:26.991637",
  "icon_url": "https://api.chucknorris.io/img/avatar/chuck-norris.png",
  "id": "pL3PseP0RM2OYK4TWl7R0Q",
  "updated_at": "2020-01-05 13:42:26.991637",
  "url": "https://api.chucknorris.io/jokes/pL3PseP0RM2OYK4TWl7R0Q",
  "value": "CHUCK NORRIS GAVE TO CHARITY...charity gave back."
}

Parameters

ParameterTypeRequiredDescription
categoryqueryOptionalRestrict to a category from /jokes/categories. dev
queryqueryOptionalSearch term, used with /jokes/search. computer

Response fields

idstring
Joke identifier.
valuestring
The joke text.
urlstring
Permalink to the joke on chucknorris.io.
icon_urlstring
Icon image URL, handy for card layouts.
categoriesarray
Categories the joke belongs to; often empty for uncategorised jokes.

What you can build with the chucknorris.io API

  • Build a multi-endpoint tutorial project with random, category and search views
  • Add a joke command to a chat bot with category support
  • Practise building a search interface against a real API
  • Populate placeholder card layouts with text and icons

Common errors and how to fix them

404

Unknown category name.

Fix: Fetch valid categories from /jokes/categories first rather than hardcoding them.

Empty result array on search

No jokes matched the query.

Fix: Handle the empty case; the `total` field tells you how many matched.

chucknorris.io API — frequently asked questions

Is the Chuck Norris API free?

Yes, chucknorris.io is completely free with no API key or registration required.

How many categories does it have?

Around 16, including dev, movie, food, animal and science. Fetch the current list from /jokes/categories instead of hardcoding it.

Can I search the joke database?

Yes. Use /jokes/search?query=term for full-text search, which returns matching jokes plus a total count.

Why is the categories array often empty?

Most jokes in the database are uncategorised. Only a subset carry category tags, so filtering by category returns a much smaller pool than random retrieval.

Tools that pair with this API

chucknorris.io is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.