The Pokémon Company · since 1996
Pokémon Trading Card Game API
Every English and Japanese Pokémon card, with HP, attacks, weaknesses, retreat cost and regulation marks fully structured.
- 19,840
- Cards
- 41,200
- Printings
- 168
- Sets
- 12
- Languages
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 and Japanese card pool — including promos, Trainer Gallery subsets and every reverse-holo and secret-rare printing — and normalises attack costs, energy types, evolution chains and regulation marks so you can query thirty years of history with one consistent schema.
Sourced from Pokémon TCG API, publisher set lists and TCGplayer.
Formats
- Standard
- Expanded
- Unlimited
- GLC
Price sources
- TCGplayer
- Cardmarket
- eBay sold
curl -G "https://api.tcggraph.com/v1/cards" \
-d game=pokemon \
-d limit=5 \
-H "Authorization: Bearer $TCGGRAPH_KEY"{
cards(
game: POKEMON
filter: { types: ["Fire"], hp: { gte: 300 } }
first: 5
) {
nodes {
name
set { name }
pokemon { hp types }
prices { market currency }
}
}
}Schema
Pokémon-specific fields
Every card carries the shared core fields. These live under gameData in REST, and under the typed pokemon field 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. |
| weaknesses | [Object] | Type and multiplier or modifier. |
| resistances | [Object] | Type and damage reduction. |
| retreatCost | [String] | Energy required to retreat. |
| regulationMark | String | Rotation letter used by Standard legality. |
| nationalPokedexNumbers | [Int] | Pokédex entries referenced by the card. |
Plus 21 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 |
|---|---|---|---|---|---|
| Umbreon VMAX | Evolving Skies | 215/203 | Rare Rainbow | $2,380 | €1,832 |
| Charizard | Base | 4/102 | Rare Holo | $868.56 | €812.55 |
| Charizard ex | 151 | 199/165 | Special Illustration Rare | $370.48 | €312.67 |
| Charizard V | Brilliant Stars | 154/172 | Rare Ultra | $299.24 | €307.80 |
| Pokémon Center Lady | Flashfire | 105/106 | Rare Ultra | $56.87 | €57.45 |
| Pikachu | Crown Zenith | 160/159 | Rare Secret | $48.88 | €37.78 |
| Pikachu | Base | 58/102 | Common | $16.41 | €16.21 |
| Charizard ex | 151 | 6/165 | Double Rare | $8.78 | €8.98 |
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, so you will see 199/165 and it is not a data error. Sort on the numeric portion if you want catalogue order, and expect gaps where a number was allocated to a card that only appeared in the Japanese print run.
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.
Recipes
Common Pokémon queries
Three requests that cover most of what applications in this game actually ask for.
Every printing of one Pokémon, with current prices
Collection trackers need all printings of a card, not the first match. Search by name and page wide.
One page of 100 costs 2 credits, the same as a page of 10 — always page wide.
GET /v1/cards
?game=pokemon
&name=charizard
&include=prices,set
&sort=set.releasedAt:desc
&limit=100Standard-legal attackers above 300 HP
Deck builders filter on format legality and a stat threshold at the same time. Both are indexed.
format=standard resolves the current regulation marks server-side, so it stays correct through rotation.
GET /v1/cards
?game=pokemon
&format=standard
&minHp=300
&types=Fire
&sort=hp:descNinety days of price movement for one card
Price charts need a series, not a spot value. Ask for the history directly.
Costs 3 credits and returns the whole series in one call, rather than 90 single-day lookups.
GET /v1/prices/pkm_sv3pt5_199/history
?interval=DAY
&from=2026-06-01
&source=tcgplayerGlossary
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 | pokemon.hp | Integer. Absent on Trainer and Energy cards, so check for null. |
| Retreat cost | pokemon.retreatCost | Count of colourless energy needed to switch this Pokémon out. |
| Regulation mark | pokemon.regulationMark | Single letter that determines Standard legality and rotates annually. |
| Weakness / Resistance | pokemon.weaknesses[] | Array of { type, value } — value is a multiplier or a flat modifier. |
| Subtype | pokemon.subtypes[] | ex, V, VMAX, VSTAR, Tag Team, Radiant and so on. Use this, not the name. |
| Attack cost | pokemon.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. |
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.