RetroBase Collection — Public API

Read-only · hash-first · free · v1

A retro game database API built for scrapers and frontends (RomM, Gaseous, Skyscraper, Batocera…). Identify a ROM or disc image by its CRC32 / MD5 / SHA-1 fingerprint — the no-intro / redump way — and get normalized metadata and artwork back.

Quickstart

# Identify a ROM by CRC32
curl "https://retrobase-collection.com/api/public/v1/lookup?crc=50ABC90A"

# Disambiguate with size and platform
curl "https://retrobase-collection.com/api/public/v1/lookup?md5=abcd...&size=749652&platform=Mega%20Drive"

# Search by name (typo-tolerant)
curl "https://retrobase-collection.com/api/public/v1/games?search=sonic&platform=Mega%20Drive"

# With an API key (higher rate limit)
curl -H "X-Api-Key: rbk_..." "https://retrobase-collection.com/api/public/v1/lookup?crc=50ABC90A"

Endpoints

EndpointPurpose
GET /lookupIdentify by fingerprint — at least one of crc, md5, sha1; optional size, platform. Returns the game and the matched dump entry. 404 if no redistributable match.
POST /lookup/batchIdentify up to 100 fingerprints in one request (one rate-limit hit) — built for library scanners. Results align with input order, null where nothing matches.
GET /gamesName search (search, platform, limit ≤ 100, offset).
GET /games/{id}Full record: metadata, free artwork, all known dumps.
GET /platformsReference list of platforms.
GET /statusPublic counters, rate limits, service version.
GET /media-typesMedia type taxonomy (box-2D, wheel, marquee… — SS/ES naming).
GET /dumpsDownloadable dataset dumps (json.gz) for offline scraping — refreshed weekly.
GET /openapi.jsonThe complete OpenAPI 3 specification.

Response envelope

{
  "data": { "game": { "id": "…", "name": "Sonic The Hedgehog 2", "platform": { "name": "Sega Mega Drive" },
            "year": "1992", "media": [ { "type": "box-2D", "region": "eu", "url": "…" } ] },
            "dump": { "crc": "50ABC90A", "region": "eu", "dump_source": "no-intro" } },
  "meta": { "license": "…", "attribution": "RetroBase Collection — https://retrobase-collection.com",
            "docs": "https://retrobase-collection.com/developers" }
}

Errors: { "error": { "code": "missing_fingerprint", "message": "…" } } with proper HTTP statuses (400, 404, 429). Lookup/search responses are cacheable (Cache-Control: public, max-age=3600).

Attribution

If you use this API in your project, a visible mention of “Data: RetroBase Collection” with a link to retrobase-collection.com is appreciated (and will be required by the final data license).

Contact

Integrating a frontend or scraper? We are happy to help: contact@ixelia.fr. Content takedown requests: see /legal.