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.