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
curl -G "https://api.tcggraph.com/v1/cards" \
-d game=pokemon \
-d limit=5 \
-H "Authorization: Bearer $TCGGRAPH_KEY"{
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.
| Field | Type | Description |
|---|---|---|
| supertype | Enum | Pokémon, Trainer or Energy. |
| subtypes | [String] | Basic, Stage 1, Stage 2, ex, V, VMAX, Tera, Supporter, Item… |
| hp | Int | Hit points for Pokémon cards. |
| types | [String] | Energy types the Pokémon belongs to. |
| evolvesFrom | String | The 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. |
| convertedRetreatCost | Int | Number of energy cards needed to retreat. |
| regulationMark | String | Rotation 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.
| Card | Set | Number | Rarity | TCGplayer | Cardmarket |
|---|---|---|---|---|---|
| Lugia | Aquapolis | 149 | Rare Secret | $4,500 | €5,004 |
| Latias & Latios-GX | Team Up | 170 | Rare Ultra | $4,272 | €2,020 |
| Charizard | Skyridge | 146 | Rare Secret | $3,000 | €3,687 |
| Rocket's Mewtwo ex | Team Rocket Returns | 99 | Rare Holo EX | $550.00 | €5,201 |
| Gengar | Skyridge | 10 | Rare | $509.99 | €3,905 |
| Umbreon | Skyridge | 32 | Rare | $354.93 | €2,077 |
| Nidoking | Aquapolis | H18 | Rare Holo | $230.98 | €2,083 |
| Arcanine | Wizards Black Star Promos | 6 | Promo | $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=100Fire 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=300Ninety 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-26Glossary
Pokémon terms, and the fields that hold them
What players call a thing on the left, what you query on the right.
| Term | Field | Notes |
|---|---|---|
| HP | gameData.hp | Integer. Absent on Trainer and Energy cards, so check for null. |
| Retreat cost | gameData.retreatCost[] | The energy symbols needed to switch this Pokémon out. convertedRetreatCost is the count. |
| Regulation mark | gameData.regulationMark | Single letter that determines Standard legality and rotates annually. |
| Weakness / Resistance | gameData.weaknesses[] | Array of { type, value } — value is a multiplier or a flat modifier. |
| Subtype | gameData.subtypes[] | ex, V, VMAX, VSTAR, Tag Team, Radiant and so on. Use this, not the name. |
| Attack cost | gameData.attacks[].cost | Array of energy symbols, not an integer. Length is the total energy needed. |
| Illustration rare | rarity | Alternate-art rarity tier introduced in Scarlet & Violet. Distinct from Special Illustration Rare. |
| Printing | printings[].key | One 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.