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.
- No account required. Anonymous access at 60 req/min per IP.
- Self-service API keys. Create one in your account settings for 300 req/min — no forum posts, no approval queue. Supporter-tier keys get 1000 req/min (the data itself is free for everyone, forever — only infrastructure access is tiered).
- Transparent limits. Every response carries
X-RateLimit-Limit/X-RateLimit-Remaining; a 429 tells you when to retry viaRetry-After. - Open data. Only redistributable data is served (open catalogs + community contributions). Final license (ODbL expected) pending legal review — see licensing.
- Transparent coverage. Live per-platform statistics at /db/stats — no guessing what the database contains. API changes are announced on the changelog.
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
| Endpoint | Purpose |
|---|---|
| GET /lookup | Identify 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/batch | Identify 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 /games | Name search (search, platform, limit ≤ 100, offset). |
| GET /games/{id} | Full record: metadata, free artwork, all known dumps. |
| GET /platforms | Reference list of platforms. |
| GET /status | Public counters, rate limits, service version. |
| GET /media-types | Media type taxonomy (box-2D, wheel, marquee… — SS/ES naming). |
| GET /dumps | Downloadable dataset dumps (json.gz) for offline scraping — refreshed weekly. |
| GET /openapi.json | The 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.