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

The Pokémon Company · since 1996

Pokémon Trading Card Game API

Every English Pokémon card and its French, German, Spanish and Italian printings, plus the Japanese print run as its own 453-set catalogue, with HP, attacks, weaknesses, retreat cost and regulation marks fully structured.

4,159
Cards
20,635
Printings
176
Sets
6
Languages
English, French, German, Spanish, Italian and Japanese

Overview

What the Pokémon dataset covers

Pokémon accounts for roughly 65% of all tracked secondary-market activity in 2026. TCGGraph indexes the complete English card pool — including promos, Trainer Gallery subsets and every reverse-holo and secret-rare printing — with the French, German, Spanish and Italian printings of each card linked to it, and normalises attack costs, energy types, evolution chains and regulation marks so you can query thirty years of history with one consistent schema. The Japanese print run is carried as its own catalogue -- 453 sets and 30,332 cards from the first Base Expansion Pack to this month's MEGA Expansion, the unnumbered cards of the first sets included, each its own set under language ja with a TCGplayer USD quote on 85% of them -- because Japanese sets are numbered on their own and are not translations of the English ones.

Every reverse holo, Trainer Gallery and secret rare is its own row with its own price series, rather than a variant flag hanging off one card record.

Formats

  • Standard
  • Expanded
  • Unlimited
  • GLC

Price sources

  • Cardmarket
  • TCGplayer
REST
curl -G "https://api.tcggraph.com/v1/cards" \
  -d game=pokemon \
  -d limit=5 \
  -H "Authorization: Bearer $TCGGRAPH_KEY"
GraphQL
{
  cards(
    filter: { game: POKEMON, rarity: "Rare Ultra", gameData: { types: "Fire" } }
    limit: 5
  ) {
    nodes {
      name
      set { name }
      gameData
      prices { source market currency }
    }
  }
}

Schema

Pokémon-specific fields

Every card carries the shared core fields. These live under gameData, in REST and GraphQL alike, and each is a filter: ?cost=2 in REST, gameData: { cost: 2 } in GraphQL.

FieldTypeDescription
supertypeEnumPokémon, Trainer or Energy.
subtypes[String]Basic, Stage 1, Stage 2, ex, V, VMAX, Tera, Supporter, Item…
hpIntHit points for Pokémon cards.
types[String]Energy types the Pokémon belongs to.
evolvesFromStringThe Pokémon this card evolves from.
attacks[Object]name, cost, convertedEnergyCost, damage and text.
abilities[Object]name, type (Ability, Poké-Power, Poké-Body…) and text.
weaknesses[Object]Type and multiplier or modifier.
resistances[Object]Type and damage reduction.
retreatCost[String]Energy required to retreat.
convertedRetreatCostIntNumber of energy cards needed to retreat.
regulationMarkStringRotation letter used by Standard legality.
nationalPokedexNumbers[Int]Pokédex entries referenced by the card.

Plus 26 core fields shared by every game — see the full reference.

Live data

Pokémon cards in the public dataset

Real records returned by the API right now, sorted by market value, with both the American and the European quote.

CardSetNumberRarityTCGplayerCardmarket
LugiaAquapolis149Rare Secret$4,500€5,004
Latias & Latios-GXTeam Up170Rare Ultra$4,272€2,020
CharizardSkyridge146Rare Secret$3,000€3,687
Rocket's Mewtwo exTeam Rocket Returns99Rare Holo EX$550.00€5,201
GengarSkyridge10Rare$509.99€3,905
UmbreonSkyridge32Rare$354.93€2,077
NidokingAquapolisH18Rare Holo$230.98€2,083
ArcanineWizards Black Star Promos6Promo$34.97€18.51

The most valuable Pokémon cards and their prices — each printing with Cardmarket and TCGplayer quotes, per language and grade.

The European market for Pokémon

European distribution runs through The Pokémon Company International's London office, and localised print runs are far smaller than the English ones. Modern German and French cards usually trade at a discount to English, but early localised sets invert that completely — the German Base Set is genuinely scarcer than the English one, and Cardmarket is the only venue that prices it properly.

Traded on Cardmarket in German, French, Italian, Spanish, Portuguese, Dutch beyond English. How European pricing works.

Sets

Notable Pokémon sets

  • BS

    Base Set

    102 cards · 1999-01-09

  • SV3.5

    Scarlet & Violet — 151

    207 cards · 2023-09-22

  • SWSH7

    Evolving Skies

    237 cards · 2021-08-27

  • ME01

    Mega Evolution

    230 cards · 2025-09-26

  • ME02

    Phantasmal Flames

    244 cards · 2026-01-30

Modelling

Working with Pokémon data

The decisions that catch people out when they first integrate Pokémon. Each of these is a bug we have watched somebody ship.

  • A card name is not an identifier

    There are more than a hundred distinct cards called Charizard, spread across thirty years of sets, and several of them are legal in the same format at the same time. Treat name as a search input, never as a key. The stable identifier is the card id; the human-readable one is set code plus collector number.

  • Collector numbers run past the set size

    Secret rares are numbered above the printed set total: 151 has 165 cards and a collectorNumber of 199, which is not a data error. collectorNumber is the number without the total, and the filter reads it loosely, so collectorNumber=6, 006 and 006/165 are the same card.

  • Standard legality is a moving target

    Regulation marks — the small letter in the bottom corner — gate Standard, and one rotates out every autumn. A card that was legal when you cached it may not be next September. Read legalities.standard at query time rather than deriving it from the set's release date.

  • Mechanic suffixes look alike and are not

    ex, EX, GX, V, VMAX and VSTAR are separate mechanics with separate rules, and lowercase ex from Scarlet & Violet is not uppercase EX from Black & White. Do not parse them out of the name. The subtypes array tells you exactly which one you have, compared exactly: the subtypes filter ignores case, so it cannot tell ex from EX.

Recipes

Common Pokémon queries

Three requests that cover most of what applications in this game actually ask for.

Every English printing of one Pokémon, oldest first

Collection trackers need all printings of a card, not the first match. Search by name and page wide.

Every card comes with its prices, so there is nothing to include. One page of 100 costs 2 credits, the same as a page of 10. Add language=all for the localized printings too.

GET /v1/cards
  ?game=pokemon
  &name=charizard ex
  &sort=released
  &limit=100

Fire ex above 300 HP

Deck builders combine a mechanic, a type and a stat threshold in one filter.

subtypes and types are lists, and a filter on a list matches any card carrying the value, ignoring case, so this also finds the older EX mechanic. Nothing that old reaches 300 HP. There is no format filter: add regulationMark=H (one request per mark) to narrow to a rotation, or read legalities.standard on what comes back.

GET /v1/cards
  ?game=pokemon
  &subtypes=ex
  &types=Fire
  &minHp=300

Ninety days of prices for one card

Price charts need a series, not a spot value. Ask for the history directly.

Costs 3 credits for the whole daily series, up to five years per call, rather than one lookup per day.

GET /v1/prices/pkm_sv3pt5_199/history
  ?source=tcgplayer
  &from=2026-06-26

Glossary

Pokémon terms, and the fields that hold them

What players call a thing on the left, what you query on the right.

TermFieldNotes
HPgameData.hpInteger. Absent on Trainer and Energy cards, so check for null.
Retreat costgameData.retreatCost[]The energy symbols needed to switch this Pokémon out. convertedRetreatCost is the count.
Regulation markgameData.regulationMarkSingle letter that determines Standard legality and rotates annually.
Weakness / ResistancegameData.weaknesses[]Array of { type, value } — value is a multiplier or a flat modifier.
SubtypegameData.subtypes[]ex, V, VMAX, VSTAR, Tag Team, Radiant and so on. Use this, not the name.
Attack costgameData.attacks[].costArray of energy symbols, not an integer. Length is the total energy needed.
Illustration rarerarityAlternate-art rarity tier introduced in Scarlet & Violet. Distinct from Special Illustration Rare.
Printingprintings[].keyOne physical way the card was produced, priced as its own product on both marketplaces: normal, foil, reverse-holo, cosmos-holo, cracked-ice, the pokeball, masterball, friendball, quickball, loveball, duskball and team-rocket patterns, staff, prerelease, league and pokemon-center stamps, 1st-edition and shadowless. Each has its own picture where TCGplayer shows one.

FAQ

Pokémon API questions

Anything not covered here, email hello@tcggraph.com and a human who knows Pokémon answers.

Also available

Add another game without another integration

Your Pokémon key already works for every other game in the catalog. Change the POKEMON enum and the rest of your code stays as it is.