Skip to content
pokemontcgapi.com

TCGplayer price data

TCGplayer prices for Pokémon cards, without a TCGplayer API key

US guide figures in dollars, low and market, per printing, next to European prices in euro from the same endpoint. Signing up takes one request and no application form.

Currency
USD, as published
Variants
LOW and MARKET, per printing
Basis
GUIDE: a published reference figure
Join key
tcgplayer_id on the card object

Developers look for TCGplayer prices because that is the figure the US hobby quotes. The rows with source: "TCGPLAYER" are those figures: low and market, in USD, one row per printing, so a holofoil and a reverse holo of the same card stay separate.

They arrive in the same response as the European rows and the EUR index. An app with users on both sides of the Atlantic shows each of them their own market from one call, instead of converting one currency into the other and being wrong for everybody.

One call, and what comes back

The price rows of one card. `?source=TCGPLAYER` keeps only the US guide rows; `?variant=MARKET` keeps only market.

GET/v1/cards/{id}/prices2 credits · from Trialfull reference
curl -s "https://api.pokemontcgapi.com/v1/cards/base1-4/prices" \
  -H "X-Api-Key: $PTCG_API_KEY"
response.json
{
  "data": {
    "card_id": "base1-4",
    "index": {
      "eur": 556.23,
      "as_of": "2026-09-02",
      "sample_n": 16,
      "by_locale": [
        {
          "locale": "en",
          "printing": null,
          "eur": 556.23,
          "as_of": "2026-09-02",
          "sample_n": 16
        },
        {
          "locale": "fr",
          "printing": null,
          "eur": 900.58,
          "as_of": "2026-09-02",
          "sample_n": 3
        },
        {
          "locale": "de",
          "printing": null,
          "eur": 399.95,
          "as_of": "2026-09-02",
          "sample_n": 5
        },
        {
          "locale": "es",
          "printing": null,
          "eur": 1313.14,
          "as_of": "2026-09-02",
          "sample_n": 8
        },
        {
          "locale": "it",
          "printing": null,
          "eur": 400.64,
          "as_of": "2026-09-02",
          "sample_n": 11
        }
      ]
    },
    "quotes": [
      {
        "source": "CARDMARKET",
        "variant": "LOW",
        "basis": "ASKING",
        "amount": 599.9,
        "currency": "EUR",
        "locale": "en",
        "condition": "NEAR_MINT",
        "printing": null,
        "grading": null,
        "as_of": "2026-09-01",
        "sample_n": null,
        "provenance": "Cardmarket"
      },
      {
        "source": "CARDTRADER",
        "variant": "LOW",
        "basis": "ASKING",
        "amount": 1250.64,
        "currency": "EUR",
        "locale": "en",
        "condition": "NEAR_MINT",
        "printing": null,
        "grading": null,
        "as_of": "2026-09-01",
        "sample_n": 4,
        "provenance": "CardTrader"
      },
      {
        "source": "TCGPLAYER",
        "variant": "LOW",
        "basis": "GUIDE",
        "amount": 510,
        "currency": "USD",
        "locale": "en",
        "condition": null,
        "printing": "HOLOFOIL",
        "grading": null,
        "as_of": "2026-07-30",
        "sample_n": null,
        "provenance": "TCGplayer"
      },
      {
        "source": "EBAY",
        "variant": "MEDIAN_GRADED",
        "basis": "ASKING",
        "amount": 400,
        "currency": "USD",
        "locale": "en",
        "condition": null,
        "printing": null,
        "grading": {
          "company": "PSA",
          "score": "1"
        },
        "as_of": "2026-08-26",
        "sample_n": 7,
        "provenance": "eBay"
      },
      {
        "source": "PRICECHARTING",
        "variant": "MEDIAN_GRADED",
        "basis": "GUIDE",
        "amount": 20061.4,
        "currency": "USD",
        "locale": "en",
        "condition": null,
        "printing": null,
        "grading": {
          "company": "PSA",
          "score": "10"
        },
        "as_of": "2026-08-24",
        "sample_n": null,
        "provenance": "PriceCharting"
      }
    ]
  },
  "meta": {
    "quotes": 5,
    "delayed_hours": 0
  }
}

Moving an existing integration

If your code stores card ids in the set-number form, those resolve directly, including the historical aliases, and GET /v1/cards/batch reports the ones it cannot resolve instead of dropping them. tcgplayer_id is a field of the card where the pairing is known, so a table keyed on TCGplayer product ids can be joined once the cards are read; there is no search by marketplace id.

The price object is flat and explicit: amount and currency rather than a nested map keyed by printing name. A row you do not understand is a row you can skip, and a new printing never breaks your parser.

Cost

The trial key is 800 credits, granted once and valid for 30 days, with no credit card. It reaches every catalogue route and the current prices, with 7 days of price history. Paid plans start at €29/month for 50,000 credits a month. A nightly refresh of a 5,000-card collection through /v1/prices/current is 800 credits.

What it is not

Read this before you build on it. Every line here is a support ticket somebody else already opened.

This is not the TCGplayer API
No listings, orders, inventory or seller tools. It serves price data with attribution for applications that display or analyse card values.
Guide figures, daily
Rows are published once a day with a 24-hour delay and carry the day they refer to in as_of. Check it before you call a number current.
Western printings
These rows exist for the cards the US guide lists, which is mostly the international print line. The coverage page shows what each print region holds.

Questions people ask before signing up

Is this the official TCGplayer API?
No. pokemontcgapi.com is an independent service and is not affiliated with, endorsed by or a reseller of TCGplayer. TCGplayer appears here as the stated source of a price row, the same way a newspaper names the exchange a quote came from. If you need to list, buy or sell on TCGplayer, you need TCGplayer's own tools; this API is for reading card and price data.
Can I look a card up by TCGplayer product id?
Not directly. tcgplayer_id is a field of the card where the pairing is known, so you can join on it after reading the cards, but searches go by name, set, number and the other catalogue fields. Reading a whole set is one paginated call.
Do you have both low and market price?
Yes. They are separate rows, variant LOW and variant MARKET, each per printing, in USD, with the day they refer to.
Do I get EUR prices too?
Yes, in the same response: Cardmarket and CardTrader rows in EUR and a composite EUR index. Nothing is converted between currencies. Cardmarket price data

Keep reading