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

Konami · since 1999

Yu-Gi-Oh! Trading Card Game API

ATK, DEF, level, rank, link rating, pendulum scale, attribute and archetype, plus the TCG and OCG Forbidden & Limited lists.

14,010
Cards
38,435
Printings
661
Sets
1
Languages
English

Overview

What the Yu-Gi-Oh! dataset covers

Yu-Gi-Oh! remains one of the Big Three and is resurgent in 2026. TCGGraph structures the TCG card pool — Normal, Effect, Ritual, Fusion, Synchro, Xyz, Pendulum and Link monsters plus Spells and Traps — with ATK, DEF, level, rank, link rating and markers, pendulum scales, attributes, monster types and archetype membership, alongside the TCG and OCG Forbidden & Limited status of every card, re-read on every ingest.

Forbidden & Limited status is carried per list — TCG and OCG, which change on different dates — instead of being flattened into one ban flag that is wrong for one of them.

Formats

  • Advanced
  • Traditional
  • OCG

Price sources

  • Cardmarket
  • TCGplayer
REST
curl -G "https://api.tcggraph.com/v1/cards" \
  -d game=yugioh \
  -d limit=5 \
  -H "Authorization: Bearer $TCGGRAPH_KEY"
GraphQL
{
  cards(
    filter: { game: YUGIOH, gameData: { attribute: "LIGHT", level: 8 } }
  ) {
    nodes {
      name
      gameData
    }
  }
}

Schema

Yu-Gi-Oh!-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
frameTypeEnumnormal, effect, ritual, fusion, synchro, xyz, link, spell, trap, token or skill; Pendulum monsters add _pendulum (effect_pendulum, xyz_pendulum…).
attributeEnumDARK, LIGHT, EARTH, WATER, FIRE, WIND or DIVINE.
raceStringMonster type, or spell and trap sub-category.
atkIntAttack points. -1 represents ?.
defIntDefense points. Null for Link monsters.
levelIntLevel, or Rank on Xyz monsters. Null on Link monsters, spells and traps.
linkRatingIntLink rating for Link monsters.
linkMarkers[String]Arrow directions: Top, Bottom, Left, Right, Top-Left, Top-Right, Bottom-Left, Bottom-Right.
pendulumScaleIntBlue and red pendulum scale value.
archetypes[String]Archetype membership.
banlistObjectStatus on the tcg and ocg lists: unlimited, semi_limited, limited or forbidden. Filter as banlist.tcg=forbidden.

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

Live data

Yu-Gi-Oh! 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
Genex NeutronThe Shining DarknessTSHD-EN097Secret Rare$3.62€2.29
Skull Archfiend of ChaosChaos OriginsCORI-EN002Starlight Rare$2.63—
Blackwing - Tornado the Reverse Wind2017 Mega-Tin Mega PackMP17-EN067Common$0.48€0.12
Unchained Soul of AnguishBattles of Legend: Monster MayhemBLMM-EN158Ultra Rare$0.24€0.31
Mannadium AbscissionCyberstorm AccessCYAC-EN057Super Rare$0.23€0.19
Blindly Loyal GoblinDark CrisisDCR-022Common$0.20€0.65
Changshi the SpiridaoMaze of MuertosMZMU-EN097Rare$0.15€0.08
Gold SarcophagusPharaoh Tour 2007 promotional cardsPT03-EN001Ultra Rare—€8,000

The most valuable Yu-Gi-Oh! cards and their prices — each printing with Cardmarket and TCGplayer quotes, per language and grade.

The European market for Yu-Gi-Oh!

Konami prints separate European editions with their own set codes, and the 1st Edition versus Unlimited split does not map onto the American one. European cards also carry an eye-of-Anubis holofoil rather than the American square, which is why matching by name alone produces the wrong price.

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

Sets

Notable Yu-Gi-Oh! sets

  • LOB

    Legend of Blue Eyes White Dragon

    126 cards · 2002-03-08

  • RA04

    Quarter Century Bonanza

    300 cards · 2025-05-15

  • BUPR

    Burst Protocol

    100 cards · 2026-01-16

  • RA05

    Rarity Collection V

    300 cards · 2026-04-10

Modelling

Working with Yu-Gi-Oh! data

The decisions that catch people out when they first integrate Yu-Gi-Oh!. Each of these is a bug we have watched somebody ship.

  • A record is a printing, keyed by set code

    Each printing is its own record: ygo_macr_en036 is Ash Blossom & Joyous Spring in Maximum Crisis, with collectorNumber MACR-EN036 as printed on the card. The eight-digit passcode is not carried, so a YDK deck list has to be resolved by name. Group printings by name for gameplay and keep them apart for anything touching money.

  • Monster kinds change which fields exist

    Xyz monsters keep their Rank in level. Link monsters have level and def null and carry linkRating and linkMarkers instead. Pendulum monsters carry pendulumScale and a frameType ending in _pendulum. Spells and traps have no atk, def or level, and race holds their sub-category (Quick-Play, Continuous, Field…). Treat null as absent, never as zero.

  • Two banlists, on different schedules

    The TCG and OCG Forbidden & Limited lists are separate and change at different times, so Ash Blossom can be unlimited in one and semi-limited in the other. banlist carries both as tcg and ocg (forbidden, limited, semi_limited, unlimited). Filter on the one your players use: banlist.tcg=forbidden.

  • Reprints are relentless

    A staple can have dozens of printings across core sets, structure decks, tins and collector boxes, with a large spread between the first and the latest. name=ash blossom returns every one of them; sort=price with a source picks the cheapest.

Recipes

Common Yu-Gi-Oh! queries

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

Every printing of one card, cheapest first

Singles buyers want the least expensive copy, not the most famous one.

name matches a part of the name. source picks the marketplace price sorts on; printings without a TCGplayer quote sort last.

GET /v1/cards
  ?game=yugioh
  &name=ash blossom
  &source=tcgplayer
  &sort=price

High-attack LIGHT monsters that are unlimited in the TCG

A stat threshold, an attribute and the current banlist in one query.

banlist is an object, so its keys are filtered with a dot. The value is re-read on every ingest, so the filter follows each list update.

GET /v1/cards
  ?game=yugioh
  &attribute=LIGHT
  &minAtk=3000
  &banlist.tcg=unlimited

Everything in an archetype

Archetype support is how most Yu-Gi-Oh! decks are built.

archetypes is a list and matches exactly (case aside), so Branded does not also return Branded Despia unless the card lists both.

GET /v1/cards
  ?game=yugioh
  &archetypes=Branded
  &limit=100

Glossary

Yu-Gi-Oh! terms, and the fields that hold them

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

TermFieldNotes
Level / RankgameData.levelLevel, or Rank on Xyz monsters (check frameType). Null on Link monsters, spells and traps.
Link ratinggameData.linkRatingLink monsters only. The arrows are gameData.linkMarkers[], as Top, Bottom-Left and so on.
Pendulum scalegameData.pendulumScalePendulum monsters only. One number: the left and right scales are equal on every card.
AttributegameData.attributeDARK, LIGHT, EARTH, WATER, FIRE, WIND or DIVINE.
TypegameData.raceWarrior, Dragon, Spellcaster… on monsters; Quick-Play, Continuous, Field, Equip, Counter on spells and traps.
ArchetypegameData.archetypes[]Archetype membership, which is not always inferable from the name.
Banlist statusgameData.banlist.tcgforbidden, limited, semi_limited or unlimited; banlist.ocg for the OCG list. Also mirrored in legalities.
1st Editionprices[].finish1st-edition is priced as its own finish, next to normal and foil, and listed on printings[].

FAQ

Yu-Gi-Oh! API questions

Anything not covered here, email hello@tcggraph.com and a human who knows Yu-Gi-Oh! answers.

Also available

Add another game without another integration

Your Yu-Gi-Oh! key already works for every other game in the catalog. Change the YUGIOH enum and the rest of your code stays as it is.