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

The Card object

One printing of one card in one language. Every game returns the same fields; what is particular to a game is under gameData.

Returned by GET /v1/sets/{code}, GET /v1/cards and GET /v1/cards/{id}.

Fields

Every field is always present. A field is null only where its type says | null, and a list with nothing in it is [], never null.

FieldTypeDescription
idstringStable identifier, unique across every game. If a set is re-keyed the old id keeps resolving on every by-id endpoint, and the response carries meta.movedFrom.
gamestringThe game's slug.

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

namestringThe English name, on every language's printing. ?name= searches this.
languagestringThe language this printing is in, as a code: en, ja, de, zhs and so on. The list endpoints return en unless ?language= asks otherwise.
printedNamestring | nullThe name as printed, in the card's language (Glurak-ex). Null on English printings and where the source list carries no name.
englishIdstring | nullThe English printing this one corresponds to: the same set and number for a translated printing, the same illustration for a card in a set of its own (Japanese Pokémon). Null on English printings and where none has been found.
pricesFromstringown when prices, gradedPrices and priceStatus are this printing's. englishTwin when they are the English printing's, because the marketplace sells one product across languages.

One of: own, englishTwin

setCardSetThe set the card was printed in.
set.codestringThe set code. Unique within a game and language, not across them.
set.namestringThe set name.
set.languagestringThe set's own language: en for an English set whatever language the printing is in, ja for a set printed only in Japan.
set.releasedAtstring | nullRelease date, YYYY-MM-DD.
collectorNumberstringThe number printed on the card, as printed (6, TG12, OP16-077), without the /total. Where several printings share one printed number (One Piece and Dragon Ball Super parallels and reprints) each carries a suffix after _ that tells them apart: OP05-119_p2, BT15-033_SPR.
raritystringThe publisher's rarity, as each game spells it (Double Rare, uncommon, SR).
artiststring | nullThe illustrator credit.
textstring | nullRules text. Null on a card with none, and on a Pokémon whose attacks and abilities are structured under gameData instead.
imagesImagesThe card's picture in three widths. On our CDN (cards.tcggraph.io) the URLs end in .webp; the same path ending in .avif serves AVIF. Before a card is mirrored all three are the source's original URL. Image requests cost no credits.
images.smallstring | null244 px wide.
images.normalstring | null488 px wide.
images.largestring | null745 px wide.
hashesobject | nullPerceptual hashes of the artwork, for matching a photo to a printing yourself. Null until the image has been processed.
hashes.phashstring64-bit luminance pHash, 16 hex characters.
hashes.phashColorstring | null192-bit colour pHash, 48 hex characters.
pricesPrice[] (Price reference)Every current quote, one per source, list type and finish. Every quote is always returned; ?source= changes which one filters and sorts read, not what comes back.
gradedPricesGradedPrice[] (GradedPrice reference)What graded copies sell for, one entry per grader and grade the index quotes. Empty when there are none; priceStatus.graded says why.
languagePricesLanguagePrice[] (LanguagePrice reference)Cardmarket's live listings split by language and finish, with the cheapest copy per condition. Empty until we have read the card's product page, which is not the same as nothing for sale.
printingsPrinting[] (Printing reference)prices regrouped by finish: one entry per physical printing, the plain card first, each with its own picture where a marketplace shows one.
priceStatusPriceStatusWhy each source does or does not quote this card.
priceStatus.cardmarketstring | nullpriced, or the reason Cardmarket has no quote. Null when the card has not been matched yet.

One of: priced, unquoted, ambiguous, collapsed, unlisted, set_unlisted, game_unlisted

priceStatus.tcgplayerstring | nullpriced, or the reason TCGplayer has no quote. Always null on Magic, which is priced through MTGJSON.

One of: priced, unquoted, ambiguous, unlisted, set_unlisted

priceStatus.gradedstring | nullpriced, or the reason the graded index has no quote. Null when the card has not been considered yet.

One of: priced, unquoted, ambiguous, collapsed, unlisted, set_unlisted, game_unlisted

legalitiesmap<string, string>Format to status. Formats are each game's own (standard, commander, tcg, core). Statuses are legal, not_legal, banned and restricted, except on Yu-Gi-Oh!, which uses its Forbidden & Limited list: unlimited, semi_limited, limited, forbidden. A format the card has never been legal in may be absent rather than not_legal. Empty on One Piece, Star Wars: Unlimited, Digimon, Grand Archive and Dragon Ball Super, whose catalogue sources publish none. Read it, don't filter on it: /v1/cards has no legality filter, except Yu-Gi-Oh!'s banlist.tcg and banlist.ocg game fields.
gameDataobjectThe game-specific fields: HP and attacks on Pokémon, mana cost and colours on Magic, ATK and DEF on Yu-Gi-Oh!. Each game's fields are listed on its game page and returned by GET /v1/games/{slug} as schema, and each one is a filter on /v1/cards.
externalIdsExternalIdsThe marketplace products this printing is sold as, for joining to their data.
externalIds.cardmarketIdinteger | nullCardmarket's product id (idProduct).
externalIds.tcgplayerIdinteger | nullTCGplayer's product id.

Price

One marketplace quote.

FieldTypeDescription
sourcestringThe marketplace the quote was read from.

One of: cardmarket, tcgplayer, cardkingdom, manapool

regionstringEU for Cardmarket, NA for the three US sources.

One of: EU, NA

listTypestringretail is what a buyer pays. buylist is what a dealer pays you for a copy; only Card Kingdom publishes one, on Magic.

One of: retail, buylist

finishstringWhich printing of the card the quote is for. A closed list, the same word on every source.

One of: normal, foil, etched, reverse-holo, cosmos-holo, pokeball, masterball, energy-symbol, duskball, loveball, staff, prerelease, league, 1st-edition, 1st-edition-foil, shadowless, limited

currencystringEUR on Cardmarket, USD everywhere else. Amounts are never converted.

One of: EUR, USD

marketnumber | nullThe headline price, in major units (8.44 is €8.44). Cardmarket's trend price (so equal to trend); TCGplayer's market price, null on a product with too few sales for one; the listed retail or buylist price on Card Kingdom and Mana Pool. This is the number minPrice, maxPrice and sort=price read.
lownumber | nullThe lowest listing price the source reports. On Cardmarket that spans every language; languagePrices has the cheapest copy per language. Card Kingdom and Mana Pool publish none, so it is null there.
trendnumber | nullCardmarket's trend price. Null on the other sources.
avg1number | nullCardmarket's average sale price over 1 day. Null elsewhere.
avg7number | nullCardmarket's average sale price over 7 days. Null elsewhere.
avg30number | nullCardmarket's average sale price over 30 days. Null elsewhere.
updatedAtstringWhen we last read this quote from the source. ISO 8601 timestamp, UTC.

Graded price

One slot of the graded index.

FieldTypeDescription
graderstringraw is an ungraded copy, any is any company at that grade, the rest are one grading company.

One of: raw, any, psa, bgs, cgc, sgc

gradestringungraded pairs with raw; 7 to 9.5 pair with any; 10 pairs with each company.

One of: ungraded, 7, 8, 9, 9.5, 10

currencystringAlways USD.

One of: USD

pricenumberWhat a copy in this slot sells for, in major units.
salesVolumeinteger | nullCopies of this printing sold in the last year, all grades together, so the same figure repeats on every slot.
updatedAtstringWhen the graded index was last read for this card. Refreshed daily. ISO 8601 timestamp, UTC.

Language price

Cardmarket's live listings for one language and finish.

FieldTypeDescription
sourcestringAlways cardmarket: these are read from its product pages.

One of: cardmarket

languagestringThe language of the copies counted: en, de, fr, es, it, ja, ko, pt, ru, zhs or zht.
finishstringThe same closed list as prices[].finish.

One of: normal, foil, etched, reverse-holo, cosmos-holo, pokeball, masterball, energy-symbol, duskball, loveball, staff, prerelease, league, 1st-edition, 1st-edition-foil, shadowless, limited

currencystringAlways EUR.

One of: EUR

lownumber | nullCheapest live copy in this language, any condition. Null when none is for sale.
lowNmnumber | nullCheapest Near Mint or Mint copy in this language. Null when none is for sale.
marketnumber | nullMedian asking price of the cheapest copies in this language.
offersintegerLive listings counted in this language. 0 is a real answer: none for sale.
truncatedbooleanTrue when the product page showed only its 50 cheapest listings, so dearer copies in this language may exist unseen.
truncatedAbovenumber | nullOn a truncated row, the dearest price the page showed. Null when the read was complete.
conditionsobject[]Cheapest copy per condition, best condition first. Only conditions with at least one listing appear.
conditions[].conditionstringMint, Near Mint, Excellent, Good, Light Played, Played, Poor.

One of: mt, nm, ex, gd, lp, pl, po

conditions[].lownumberCheapest copy in this condition, in EUR.
conditions[].offersintegerListings in this condition.
updatedAtstringWhen the product page was read. ISO 8601 timestamp, UTC.

Printing

One physical printing of a card and its quotes.

FieldTypeDescription
keystringThe finish value its quotes carry. Stable: key user selections on this.

One of: normal, foil, etched, reverse-holo, cosmos-holo, pokeball, masterball, energy-symbol, duskball, loveball, staff, prerelease, league, 1st-edition, 1st-edition-foil, shadowless, limited

labelstringThe finish in words (Reverse holo, Poké Ball pattern).
kindstringWhat distinguishes the printing: its foil treatment, a pattern, a stamp or an edition marking.

One of: surface, pattern, stamp, edition

imagesImagesThe printing's own picture where a marketplace shows one, otherwise the card's.
images.smallstring | null244 px wide.
images.normalstring | null488 px wide.
images.largestring | null745 px wide.
imageFromstringWhich of the two images is.

One of: printing, card

externalIdsExternalIdsThe product this printing is read from.
externalIds.cardmarketIdinteger | nullCardmarket's product id (idProduct).
externalIds.tcgplayerIdinteger | nullTCGplayer's product id.
pricesPrice[] (Price reference)This printing's quotes.

A real one

From the production API, unedited.

{
  "id": "pkm_sv3pt5_6",
  "game": "pokemon",
  "name": "Charizard ex",
  "language": "en",
  "printedName": null,
  "englishId": null,
  "pricesFrom": "own",
  "set": {
    "code": "sv3pt5",
    "name": "151",
    "language": "en",
    "releasedAt": "2023-09-22"
  },
  "collectorNumber": "6",
  "rarity": "Double Rare",
  "artist": "PLANETA Mochizuki",
  "text": null,
  "images": {
    "small": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/small.webp",
    "normal": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/normal.webp",
    "large": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/large.webp"
  },
  "hashes": {
    "phash": "c35f14b4727b1a8c",
    "phashColor": "c35916b46aebb984c35f04a6737b1c8cfb6f84e4d05a1a0b"
  },
  "prices": [
    {
      "source": "cardmarket",
      "region": "EU",
      "listType": "retail",
      "finish": "foil",
      "currency": "EUR",
      "market": 8.62,
      "low": 4,
      "trend": 8.62,
      "avg1": 7.03,
      "avg7": 8.8,
      "avg30": 8.47,
      "updatedAt": "2026-09-24T07:34:30.239Z"
    },
    {
      "source": "tcgplayer",
      "region": "NA",
      "listType": "retail",
      "finish": "foil",
      "currency": "USD",
      "market": 8.79,
      "low": 6,
      "trend": null,
      "avg1": null,
      "avg7": null,
      "avg30": null,
      "updatedAt": "2026-09-24T07:19:35.232Z"
    }
  ],
  "gradedPrices": [
    {
      "grader": "raw",
      "grade": "ungraded",
      "currency": "USD",
      "price": 8.12,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "any",
      "grade": "7",
      "currency": "USD",
      "price": 16.76,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "any",
      "grade": "8",
      "currency": "USD",
      "price": 17.75,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "any",
      "grade": "9",
      "currency": "USD",
      "price": 25,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "any",
      "grade": "9.5",
      "currency": "USD",
      "price": 25,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "psa",
      "grade": "10",
      "currency": "USD",
      "price": 125.65,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "bgs",
      "grade": "10",
      "currency": "USD",
      "price": 163,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "cgc",
      "grade": "10",
      "currency": "USD",
      "price": 34.46,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    },
    {
      "grader": "sgc",
      "grade": "10",
      "currency": "USD",
      "price": 39,
      "salesVolume": 370,
      "updatedAt": "2026-09-23T09:20:51.748Z"
    }
  ],
  "languagePrices": [
    {
      "source": "cardmarket",
      "language": "en",
      "finish": "foil",
      "currency": "EUR",
      "low": 5,
      "lowNm": 5,
      "market": 5.5,
      "offers": 2,
      "truncated": true,
      "truncatedAbove": 6.26,
      "conditions": [
        {
          "condition": "nm",
          "low": 5,
          "offers": 2
        }
      ],
      "updatedAt": "2026-09-24T02:51:27.427Z"
    },
    {
      "source": "cardmarket",
      "language": "it",
      "finish": "foil",
      "currency": "EUR",
      "low": 4,
      "lowNm": 4,
      "market": 5.49,
      "offers": 47,
      "truncated": true,
      "truncatedAbove": 6.26,
      "conditions": [
        {
          "condition": "nm",
          "low": 4,
          "offers": 41
        },
        {
          "condition": "ex",
          "low": 4.5,
          "offers": 6
        }
      ],
      "updatedAt": "2026-09-24T02:51:27.427Z"
    },
    {
      "source": "cardmarket",
      "language": "de",
      "finish": "foil",
      "currency": "EUR",
      "low": 7.5,
      "lowNm": 7.5,
      "market": 7.5,
      "offers": 1,
      "truncated": true,
      "truncatedAbove": 7.5,
      "conditions": [
        {
          "condition": "nm",
          "low": 7.5,
          "offers": 1
        }
      ],
      "updatedAt": "2026-09-13T03:15:59.919Z"
    },
    {
      "source": "cardmarket",
      "language": "fr",
      "finish": "foil",
      "currency": "EUR",
      "low": 6,
      "lowNm": 6,
      "market": 6,
      "offers": 1,
      "truncated": true,
      "truncatedAbove": 6.26,
      "conditions": [
        {
          "condition": "nm",
          "low": 6,
          "offers": 1
        }
      ],
      "updatedAt": "2026-09-24T02:51:27.427Z"
    }
  ],
  "printings": [
    {
      "key": "foil",
      "label": "Holofoil",
      "kind": "surface",
      "images": {
        "small": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/small.webp",
        "normal": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/normal.webp",
        "large": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/large.webp"
      },
      "imageFrom": "card",
      "externalIds": {
        "cardmarketId": 733601,
        "tcgplayerId": 502558
      },
      "prices": [
        {
          "source": "cardmarket",
          "region": "EU",
          "listType": "retail",
          "finish": "foil",
          "currency": "EUR",
          "market": 8.62,
          "low": 4,
          "trend": 8.62,
          "avg1": 7.03,
          "avg7": 8.8,
          "avg30": 8.47,
          "updatedAt": "2026-09-24T07:34:30.239Z"
        },
        {
          "source": "tcgplayer",
          "region": "NA",
          "listType": "retail",
          "finish": "foil",
          "currency": "USD",
          "market": 8.79,
          "low": 6,
          "trend": null,
          "avg1": null,
          "avg7": null,
          "avg30": null,
          "updatedAt": "2026-09-24T07:19:35.232Z"
        }
      ]
    }
  ],
  "priceStatus": {
    "cardmarket": "priced",
    "tcgplayer": "priced",
    "graded": "priced"
  },
  "legalities": {
    "expanded": "legal",
    "standard": "legal",
    "unlimited": "legal"
  },
  "gameData": {
    "hp": 330,
    "types": [
      "Fire"
    ],
    "attacks": [
      {
        "cost": [
          "Fire"
        ],
        "name": "Brave Wing",
        "text": "If this Pokémon has any damage counters on it, this attack does 100 more damage.",
        "damage": "60+",
        "convertedEnergyCost": 1
      },
      {
        "cost": [
          "Fire",
          "Fire",
          "Fire",
          "Fire"
        ],
        "name": "Explosive Vortex",
        "text": "Discard 3 Energy from this Pokémon.",
        "damage": "330",
        "convertedEnergyCost": 4
      }
    ],
    "subtypes": [
      "Stage 2",
      "ex"
    ],
    "abilities": [],
    "supertype": "Pokémon",
    "weaknesses": [
      {
        "type": "Water",
        "value": "×2"
      }
    ],
    "evolvesFrom": "Charmeleon",
    "resistances": [],
    "retreatCost": [
      "Colorless",
      "Colorless"
    ],
    "regulationMark": "G",
    "convertedRetreatCost": 2,
    "nationalPokedexNumbers": [
      6
    ]
  },
  "externalIds": {
    "cardmarketId": 733601,
    "tcgplayerId": 502558
  }
}