Skip to content
Prepaid, no subscription trap. Top up a balance and we draw the monthly fee from it.
tcggraph

Get a game

One game, with its gameData schema: the fields every card of the game carries and you can filter on.

GEThttps://api.tcggraph.com/v1/games/{slug}1 credit · metering

schema is the contract for gameData: every field listed is on the game's cards and is accepted as a /v1/cards filter. Numeric fields (Int, Float) also take min and max bounds.

Path parameters

ParameterTypeDescription
slugrequiredstringThe game's slug.

One of: pokemon, magic-the-gathering, one-piece, yugioh, disney-lorcana, star-wars-unlimited, digimon, grand-archive, dragon-ball-super

Response

200 The game.

FieldTypeDescription
dataGame (Game reference)A Game object with three more fields.
data.schemaobject[]The game's gameData fields.
data.schema[].namestringThe field name, as it appears under gameData and as a filter.
data.schema[].typestringInt and Float fields take min/max bounds; Object fields are filtered by dotted path.

One of: String, Int, Float, Boolean, [String], [Int], Enum, Object, [Object]

data.schema[].descriptionstringWhat the field holds.
data.schema[].examplestringA value from a real card.

Absent unless it applies.

data.notableSetsobject[]Sets we call out on the game's page.
data.notableSets[].codestringSet code.
data.notableSets[].namestringSet name.
data.notableSets[].releasedstringRelease date or year, as the page shows it.
data.notableSets[].cardsintegerCards in the set.
data.priceSourcesstring[]The marketplaces that quote this game, by display name (Cardmarket, TCGplayer, Card Kingdom, Mana Pool), not source id.

Examples

Real responses from the production API, recorded on 2026-09-24 by the script that also checks every field above against them. Arrays are shown in full.

Pokémon

curl "https://api.tcggraph.com/v1/games/pokemon" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
200 · X-Credits-Cost: 1
{
  "data": {
    "slug": "pokemon",
    "name": "Pokémon Trading Card Game",
    "shortName": "Pokémon",
    "publisher": "The Pokémon Company",
    "released": 1996,
    "counts": {
      "cards": 4159,
      "sets": 176,
      "printings": 20635,
      "languages": 6
    },
    "languages": [
      "en",
      "de",
      "es",
      "fr",
      "it",
      "ja"
    ],
    "formats": [
      "Standard",
      "Expanded",
      "Unlimited",
      "GLC"
    ],
    "sampleCount": 20,
    "indexed": {
      "cards": 26447,
      "sets": 230,
      "printingsByLanguage": {
        "de": 13331,
        "en": 26447,
        "es": 12561,
        "fr": 16760,
        "it": 12812,
        "ja": 27861
      }
    },
    "schema": [
      {
        "name": "supertype",
        "type": "Enum",
        "description": "Pokémon, Trainer or Energy."
      },
      {
        "name": "subtypes",
        "type": "[String]",
        "description": "Basic, Stage 1, Stage 2, ex, V, VMAX, Tera, Supporter, Item…"
      },
      {
        "name": "hp",
        "type": "Int",
        "description": "Hit points for Pokémon cards."
      },
      {
        "name": "types",
        "type": "[String]",
        "description": "Energy types the Pokémon belongs to."
      },
      {
        "name": "evolvesFrom",
        "type": "String",
        "description": "The Pokémon this card evolves from."
      },
      {
        "name": "attacks",
        "type": "[Object]",
        "description": "name, cost, convertedEnergyCost, damage and text."
      },
      {
        "name": "abilities",
        "type": "[Object]",
        "description": "name, type (Ability, Poké-Power, Poké-Body…) and text."
      },
      {
        "name": "weaknesses",
        "type": "[Object]",
        "description": "Type and multiplier or modifier."
      },
      {
        "name": "resistances",
        "type": "[Object]",
        "description": "Type and damage reduction."
      },
      {
        "name": "retreatCost",
        "type": "[String]",
        "description": "Energy required to retreat."
      },
      {
        "name": "convertedRetreatCost",
        "type": "Int",
        "description": "Number of energy cards needed to retreat."
      },
      {
        "name": "regulationMark",
        "type": "String",
        "description": "Rotation letter used by Standard legality."
      },
      {
        "name": "nationalPokedexNumbers",
        "type": "[Int]",
        "description": "Pokédex entries referenced by the card."
      }
    ],
    "notableSets": [
      {
        "code": "BS",
        "name": "Base Set",
        "released": "1999-01-09",
        "cards": 102
      },
      {
        "code": "SV3.5",
        "name": "Scarlet & Violet — 151",
        "released": "2023-09-22",
        "cards": 207
      },
      {
        "code": "SWSH7",
        "name": "Evolving Skies",
        "released": "2021-08-27",
        "cards": 237
      },
      {
        "code": "ME01",
        "name": "Mega Evolution",
        "released": "2025-09-26",
        "cards": 230
      },
      {
        "code": "ME02",
        "name": "Phantasmal Flames",
        "released": "2026-01-30",
        "cards": 244
      }
    ],
    "priceSources": [
      "Cardmarket",
      "TCGplayer"
    ]
  }
}

Errors

Every error has the same body; switch on error.code. Any endpoint can also answer 401, 402, 403 or 429 for reasons of key, plan or rate; those are on Errors.

StatusCodeWhen
404not_foundNo game has that slug. Slugs are lowercase and hyphenated: magic-the-gathering, not mtg.

Unknown slug

curl "https://api.tcggraph.com/v1/games/mtg" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
404
{
  "error": {
    "code": "not_found",
    "message": "No game with slug \"mtg\"."
  }
}