Schema specification

If you want to write a scraper that emits Retronian GameDB-compatible JSON, this page is the contract. The authoritative machine-readable definition lives at schema/game.schema.json (JSON Schema Draft 2020-12).

File layout

One JSON file per game, stored at:

data/games/{platform}/{id}.json

The id field inside the file must equal the file name without the .json extension. The platform field must equal the directory name.

Top-level fields

FieldTypeRequiredDescription
idstringyesSlug, lowercase ASCII with hyphens. Matches the file name.
platformstring (enum)yesPlatform identifier. See the home page for the current list.
categorystring (enum)nomain_game (default), dlc, expansion, bundle, remake, remaster, port, compilation.
first_release_datestringnoISO 8601 date or partial date (YYYY, YYYY-MM, YYYY-MM-DD).
titlesarrayyesAt least one entry. See below.
descriptionsarraynoEnglish and Japanese descriptions, see below.
developersstring[]noDeveloper slugs.
publishersstring[]noPublisher slugs.
genresstring[]noGenre slugs.
external_idsobjectnoCross-references to other databases.

Title objects (the core)

Every entry in titles[] has these fields:

FieldTypeRequiredDescription
textstringyesThe title as it appears.
langstringyesPublic API language: en or ja.
scriptstring (enum)yesISO 15924 script code. See the table below.
regionstringnoISO 3166-1 alpha-2 country code, lowercase.
formstring (enum)noofficial, boxart, ingame_logo, manual, romaji_transliteration, alternate.
sourcestring (enum)nowikidata, igdb, mobygames, screenscraper, no_intro, community, manual.
verifiedbooleannoWhether the entry has been confirmed against a primary source.

The script field (ISO 15924)

This is what makes Retronian GameDB different from every other game DB. The language tag ja alone cannot tell katakana-only titles apart from kanji-mixed titles, but in retro game metadata that distinction often matters. The valid values are:

CodeMeaningExample
JpanJapanese with kanji and kana mixed星のカービィ
HiraJapanese, hiragana onlyくにおくん
KanaJapanese, katakana onlyスーパーマリオブラザーズ
LatnLatin scriptKirby's Dream Land
ZyyyUndeterminedUse as last resort.

Description objects

Each public descriptions[] entry has text, lang (en or ja), and an optional source.

External IDs

external_ids is an object mapping a source name to its identifier. Recognized keys:

Example

{
  "id": "hoshi-no-kirby",
  "platform": "gb",
  "category": "main_game",
  "first_release_date": "1992-04-27",
  "titles": [
    {
      "text": "星のカービィ",
      "lang": "ja",
      "script": "Jpan",
      "region": "jp",
      "form": "boxart",
      "source": "wikidata",
      "verified": true
    },
    {
      "text": "Kirby's Dream Land",
      "lang": "en",
      "script": "Latn",
      "region": "us",
      "form": "official",
      "source": "wikidata",
      "verified": true
    }
  ],
  "developers": ["hal-laboratory"],
  "publishers": ["nintendo"],
  "genres": ["platformer"],
  "external_ids": {
    "wikidata": "Q1064715",
    "igdb": 1083
  }
}

API endpoints

The static API mirrors the on-disk layout:

Everything is cache-friendly static JSON. There is no rate limiting and no authentication.