Entertainment — entry 008 of 9

Random Useless Facts

Verified Jul 2026

Random Useless Facts is a free, keyless API that returns one trivia snippet at a time — random, "fact of the day", or lookup by ID — each with its own permalink and a source URL crediting the site it was pulled from (largely djtech.net). Responses come back as JSON by default, but requesting with an `Accept: text/plain` header returns the same fact formatted as plain Markdown-style text instead. There's no rate limiting, authentication, or paid tier — it's a small side project by its Polish maintainer.

Random Useless Facts is a keyless trivia API with two live picks — a live GET to /facts/random and to /facts/today both returned HTTP 200 with a JSON fact object — plus a second response format: sending Accept: text/plain on the same /facts/random endpoint returned the identical fact re-formatted as a Markdown-style blockquote with source links, confirmed on a live probe this run.

factstriviarandomkeyless
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, TextResponses can be requested as JSON or Text.

GreatAPIs Score

Score80out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 80 on greatapis.com
<a href="https://greatapis.com/api/random-useless-facts/"><img src="https://greatapis.com/badge/random-useless-facts.svg" alt="Scored 80 on greatapis.com"></a>

Auth quickstart

  1. No API key or signup required — the live probes above returned facts with no auth header sent at all.
  2. Set Accept: text/plain (not a format query param) to get the plain-text rendering — confirmed live; the default Accept gets JSON.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Get a random fact as JSON

GEThttps://uselessfacts.jsph.pl/api/v2/facts/random

200 application/json; charset=UTF-8

{"id":"d5a6c7d7b9817de0e90cb0da490957f0","text":"The only domestic animal not mentioned in the Bible is the cat. ","source":"djtech.net","source_url":"https://www.djtech.net/humor/shorty_useless_facts.htm","language":"en","permalink":"https://uselessfacts.jsph.pl/api/v2/facts/d5a6c7d7b9817de0e90cb0da490957f0"}

Captured byte-for-byte from this run's live probe — the id/text are whichever fact the endpoint happened to return that request, not a fixed example; a repeat call returns a different fact.

Developer reference

Base URLhttps://uselessfacts.jsph.pl/api/v2

Gotchas & limits

  • Accept: text/plain changes both the content type and the body shape, not just formatting: a live probe of /facts/random with that header returned content-type: text/plain; charset=UTF-8 and a body of "> The Nullarbor Plain of Australia covers 100,000 square miles (160,900 km) without a tree.\n\nSource: [djtech.net](...)\nVia: [uselessfacts](...)" — a Markdown blockquote plus link lines, not the JSON field values as plain text.
  • HEAD is not supported even though GET is: a live HEAD /facts/random returned HTTP 405, while the equivalent GET on the same path returned HTTP 200 in the same run — don't use HEAD to health-check this API.
  • An unknown fact id doesn't return the API's own JSON error shape: a live GET to /facts/not-a-real-id returned HTTP 404 with content-type: text/plain; charset=utf-8 and the literal body 404 page not found — a bare Go-style router 404, not a JSON envelope, even though every successful call on this API returns JSON by default.
  • No rate-limit headers were observed on any probe this run (/facts/random, /facts/today, the text/plain variant, or the bad-id 404) — there's nothing in the response to signal a cap if one exists server-side.