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

Scrydex · Pokémon, Magic, Lorcana, One Piece, Gundam, Riftbound

Scrydex alternative — TCGGraph compared

Scrydex is pokemontcg.io's successor. TCGGraph adds Cardmarket prices per language and condition and five games Scrydex does not carry, at the same $29 a month.

What Scrydex does well

  • The successor pokemontcg.io's maintainers name. It keeps their card ids, their q syntax and a very similar JSON shape, which makes it the shortest move off pokemontcg.io.
  • Graded prices and population reports, with webhooks for price and population updates.
  • English and Japanese Pokémon, with English translations on the Japanese cards.
  • Gundam and Riftbound, which we do not carry yet, plus sealed products and image recognition under the same credits.

Where TCGGraph differs

  • Cardmarket in EUR on every card, next to TCGplayer in USD. Scrydex's own FAQ lists Cardmarket and other European marketplaces as under evaluation.
  • Cardmarket's low per language, finish and condition: the cheapest French Near Mint copy of a card, not the cheapest copy in any language.
  • The French, German, Spanish and Italian printings of each English Pokémon card are rows of their own, with their own images. Scrydex lists French, German, Italian, Portuguese, Chinese and Korean as on its roadmap.
  • 9 games behind one schema, including Yu-Gi-Oh!, Star Wars: Unlimited, Digimon, Grand Archive and Dragon Ball Super, which Scrydex does not carry.
  • REST and GraphQL, and webhooks for new sets and cards, errata, legality changes and price thresholds.
  • Recognition is its own product: a live camera stream over one connection, billed per matched card, with frames we cannot place answered for free.

Side by side

Feature comparison

FeatureScrydexTCGGraph
Games covered6 games9 games
Yu-Gi-Oh!, Star Wars: Unlimited, Digimon, Grand Archive, Dragon Ball Super
Gundam, RiftboundIn preparation
Cardmarket prices (EUR)Under evaluation8 games
Cardmarket low per language and condition
TCGplayer prices (USD)
Graded prices
Population reports
Japanese Pokémon453 sets
French, German, Spanish and Italian Pokémon printingsOn its roadmap
InterfacesRESTREST and GraphQL
WebhooksPrices, populationSets, cards, legality, prices
Entry plan$29/mo, 5,000 credits$29/mo, 10,000 credits
A search page of up to 100 cards1 credit2 credits
One card's price history3 credits3 credits

When to use Scrydex instead

If you are moving off pokemontcg.io and want to change as little code as possible, Scrydex is the shorter path: the same ids, the same q syntax, a very similar JSON shape. It is also the choice if you need population reports, graded data from the wider set of graders it lists, or Gundam and Riftbound today. Consider TCGGraph when you price or sell for Europe, need a game Scrydex does not carry, or want one schema and GraphQL across all of them.

Migration

What the change looks like

Concepts map closely. Most migrations are a single afternoon of find-and-replace plus a test pass.

Scrydex
# Scrydex
curl "https://api.scrydex.com/pokemon/v1/en/cards?q=name:charizard&include=prices" \
  -H "X-Api-Key: $SCRYDEX_KEY" \
  -H "X-Team-ID: $SCRYDEX_TEAM"
TCGGraph
# TCGGraph: every card carries its prices, no include
curl "https://api.tcggraph.com/v1/cards?game=pokemon&name=charizard" \
  -H "Authorization: Bearer $TCGGRAPH_KEY"

Signals

When it is worth switching

None of these are reasons on their own. Two or three together usually are.

  • You price or sell for European buyers and need Cardmarket, not a US figure.
  • You need the cheapest copy in one language and condition, French Near Mint say, rather than one price per card.
  • Your app needs Yu-Gi-Oh!, Star Wars: Unlimited, Digimon, Grand Archive or Dragon Ball Super next to Pokémon.
  • You want GraphQL, or webhooks for new sets, errata and legality changes as well as price moves.

Migration

Moving off Scrydex, step by step

The honest version, including the parts that are not one-to-one.

  1. Step 1

    Swap the auth headers

    Scrydex takes X-Api-Key and X-Team-ID on every request. Here it is one header, Authorization: Bearer with your key, and every key on the account draws from the same plan.

  2. Step 2

    Translate q into parameters

    Scrydex keeps pokemontcg.io's Lucene-style q. Here each field is its own parameter: q=name:charizard types:fire becomes name=charizard&types=Fire, ranges take min and max prefixes (minHp=300), and filters combine with AND. A parameter we do not know is refused with a 400 that lists the valid ones.

  3. Step 3

    Re-key English cards by rule

    Scrydex keeps pokemontcg.io's ids for English cards, and so do we, with pkm_ in front and hyphens as underscores: sv3pt5-199 is pkm_sv3pt5_199. Japanese cards are a catalogue of their own here, keyed like pkm_ja_sv2a_1 from their own set codes, with englishId naming the English printing of the same artwork.

  4. Step 4

    Drop include=prices

    Every card in every response carries its prices, with no parameter: prices[] per marketplace and finish, languagePrices[] per language and condition on Cardmarket, gradedPrices per grader and grade. A page of 100 cards with all of that costs the same 2 credits as one without. The daily series is GET /v1/prices/{id}/history, 3 credits as on Scrydex.

Field mapping

What each field becomes

The part that takes the longest is discovering that Scrydex spells the same concept differently. Here it is, written down.

ScrydexTCGGraphNotes
ididFor English Pokémon, pkm_ + the id, hyphens as underscores.
expansion.idset.codeThe same code for English Pokémon sets.
expansion.release_dateset.releasedAtAn ISO date, 2023-09-22 rather than 2023/09/22.
variants[].nameprices[].finishholofoil is foil, reverseHolofoil is reverse-holo.
variants[].prices[] (raw)prices[]One entry per marketplace and finish, EUR and USD side by side.
variants[].prices[] (graded)gradedPricesUSD by grading company and grade.
prices[].conditionlanguagePrices[].conditions[]Cardmarket's ladder (mt, nm, ex…), per language.
/cards/{id}/price_history/v1/prices/{id}/historyDaily series, 3 credits on both.
images[0].largeimages.largeOne object rather than an array of faces. Never metered.

FAQ

Common questions

Anything else, email hello@tcggraph.com. We will tell you if the answer is that you should stay where you are.