CardTrader API

Every CardTrader offer, and the price a card really trades at

endpoints
6
credits per call
1–3

The CardTrader API returns cardtrader.com - the European marketplace for Magic, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood, Digimon, Dragon Ball Super, Star Wars Unlimited, Riftbound and six more games - as clean JSON.

This page covers what the CardTrader API returns, who uses it, a real response and pricing. Every parameter and response field is in CardTrader API parameters and responses →

POST/cardtrader/v1/search
Real result, captured Nov 8, 20263 of 12
namelowest_pricetranslated_nameversion
Charizard ☆ Gold Star δ Delta Species55000.64 EURCharizard ☆ Gold Star δ…Shiny Rare | 052/068
Shining Charizard Lv.6115000.63 EURShining Charizard Lv.61Shining Holo Rare | No.…
Charizard13183.13 EURCharizardIndonesian KFC Promo 18…
6 active endpoints, on 1, 2 and 3 credit tiers.search · expansion/products · expansions · games · product/detail · product/offersDetails ↓OpenAPI 3.0 spec ↗

2 credits per call≈ $2/1,000 calls1,000 free credits, no card

Get a free API key
Try it live

Run the call yourself, on the real endpoint

Change a parameter and press Try it. The response on the right is what your code will receive.

CardTrader API

3 of 6 endpoints, ready to run

View docs ↗

Cards and sealed products in one game by name: set, collector number, category, number of offers, lowest price and image; optional three cheapest offers matching a language, condition or foil.

2 credits0 required · 4 optional
POST/cardtrader/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

Try every endpoint in the playground

Endpoints

What CardTrader endpoints does ReefAPI ship?

6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

  • search

    2 cr

    Search CardTrader for one game by card or product name.

    required
    —
    optional
    query, game, expansion, category, rarity, sort, page, only_available, card_language, min_condition, foil, reverse_holo, first_edition, signed, altered, with_offers, language, currency, country, max_rotations
  • expansion/products

    2 cr

    Every product of one set with the same rows as search, by collector number by default.

    required
    expansion
    optional
    query, game, category, rarity, sort, page, only_available, card_language, min_condition, foil, reverse_holo, first_edition, signed, altered, with_offers, language, currency, country, max_rotations
  • expansions

    1 cr

    Every set CardTrader lists for a game, newest first.

    required
    —
    optional
    game, query, max_rotations
  • games

    1 cr

    Every game CardTrader sells, with its id, slug and product categories (Singles, Booster Boxes…

    required
    —
    optional
    max_rotations
  • product/detail

    3 cr

    One CardTrader card or product by id or URL.

    required
    product_id
    optional
    offers_limit, language, currency, country, max_rotations
  • product/offers

    3 cr

    Every public offer on one card or product, cheapest first, as CardTrader shows them to a shop…

    required
    product_id
    optional
    card_language, min_condition, foil, reverse_holo, first_edition, signed, altered, graded, seller_country, seller_type, ct_zero_only, direct_shipping_only, price_min, price_max, limit, language, currency, country, max_rotations

Every parameter, every allowed value →

Missing a CardTrader endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
How it works

How the CardTrader API works

CardTrader is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

Authenticate01
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 632 engines.

Call02
POST /cardtrader/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

Pay03
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and nothing is cached: every call reads the source live.

Read04
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Recipe

Price a card on CardTrader for a German and a US buyer

Find the card, then read its offers and price figures for each ship-to country.

01search
POST/cardtrader/v1/search
{"game": "magic", "query": "sol ring", "expansion": "teenage-mutant-ninja-turtles-eternal"}

product_id of the printing, with its offer count and lowest price.

02detail
POST/cardtrader/v1/product/detail
{"product_id": "374423"}

CT Min / CT Market / Best Deal / US Market price boxes and 35-day history, ship-to Germany, in euro.

03detail
POST/cardtrader/v1/product/detail
{"product_id": "374423", "currency": "USD", "country": "US"}

The same card as a US buyer sees it: fewer offers, prices in CardTrader's US dollars.

Two market views of the same card - euro and dollar, Germany and the US - in three calls.

request
curl -X POST https://api.reefapi.com/cardtrader/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"game":"pokemon","query":"charizard","sort":"price_desc"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "cardtrader",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}
Fields

CardTrader prints four prices on every card page - here is what each one means

The cheapest offer is rarely the price a card trades at. CardTrader shows four figures on the card page and the API returns all four, computed exactly as the page computes them, next to the full offer list (live, 2026-11-07, ship-to Germany unless noted).

Cardct_min_price (cheapest offer)ct_market_pricebest_deal_price (CT Zero, English, NM+)us_market_price
Sol Ring, Commander: TMNT (Magic)€0.18€1.24€1.35€1.63
Llanowar Elves, Foundations (Magic)€0.11€0.11€0.13€0.29
Skilled Dark Magician, Yugi Reloaded (Yu-Gi-Oh!)€0.11€0.14€0.34—
Sol Ring, Commander: TMNT - ship to the US, in USD$1.69$1.83$1.69$1.83

ct_market_price is the average of the first 15 offers after dropping outliers, as the page shows it today; the daily CT market series behind the price chart can differ (Sol Ring: €1.44 on the chart's latest day) and is returned separately as ct_market_price_daily with its history. Best Deal only counts copies that can ship through CardTrader Zero, in English and Near Mint or better, so it can sit well above the cheapest offer. US-dollar prices are CardTrader's own, not a conversion: the same Sol Ring offer costs €0.18 or $0.23.

Coverage

What CardTrader publishes, and what it does not

cardtrader.com only - 16 games, prices in EUR or USD, 34 ship-to countries. Measured 2026-11-07: 31 of 31 live cases across six actions, 7 of 7 pages matched against the rendered site, 53 offline checks on real responses. Some of these lines go against us.

Offers

Up to 1,000 per call; the largest card we measured had 386. All 92 offer rows we compared matched the rendered page.

Search

12 rows a page with no total count. Order matched the site on 11 of 11 visible rows.

Against us: shipping

Only the 'from' price of each offer, not every method.

Languages

Names translated in Italian, Spanish, French and German. USD prices come with English names only.

Not published

Sold prices.

Use cases

What people build with CardTrader

The jobs this data is most often used for.

01

Price two European marketplaces at once: the same card on CardTrader and Cardmarket, by condition and language

02

Arbitrage between EU and US buyers: euro and dollar prices for the same offers, per ship-to country

03

Buylist and repricing tools: the cheapest Near Mint English copy that ships through CardTrader Zero

04

Set trackers: every card of a new set with offer counts and the lowest price, by collector number or rarity

6

endpoints

1/2/3

credits per call

Pricing

What CardTrader data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

$0.67–$1.50 / 1,000 credits
Full pricing →
  • 1,000 free credits on signup, no card
  • One key, all 632 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire
no credit card1,000 free credits · instant API key · pay by card or crypto
Quickstart

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/cardtrader/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"game":"pokemon","query":"charizard","sort":"price_desc"}'
python
import os
import requests

REEF_KEY = os.environ["REEF_KEY"]

r = requests.post(
    "https://api.reefapi.com/cardtrader/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
        "game": "pokemon",
        "query": "charizard",
        "sort": "price_desc"
    },
    timeout=90,
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up CardTrader.

Why do I get different offers for different countries?▾

Because CardTrader only shows a shopper the offers whose seller ships to the shopper's country, directly or through CardTrader Zero. Set country to the ship-to country (DE by default; 34 countries). Measured on the same card in the same minute: 99 offers starting at €0.18 for Germany, 100 for Italy, 99 for France, 96 for the United Kingdom and 89 starting at $1.69 for the United States - the cheapest Italian and Croatian sellers do not ship there.

Is the price the seller's price or what I pay?▾

price is what the buyer pays, as CardTrader displays it. CardTrader adds a small fee on top of the seller's price; every offer also carries seller_price and buyer_fee (for example €1.25 + €0.10 = €1.35), so you can work with either.

Can I filter offers by condition, language, foil or seller country?▾

Yes. product/offers takes card_language, min_condition (mint, near_mint, slightly_played, moderately_played, played, poor - or NM, SP, MP, PL, PO), foil, reverse_holo for Pokémon, first_edition, signed, altered, graded, seller_country, seller_type (private or professional), ct_zero_only, direct_shipping_only and a price range. Every filtered field is returned on each offer so you can check the result. search takes card_language, min_condition, foil, reverse_holo and first_edition and returns the three cheapest matching offers per card.

How many offers do I get for a popular card?▾

All of them, up to 1,000 rows per call, cheapest first. The biggest card we measured, Llanowar Elves from Foundations, had 386 offer rows holding 7,150 copies for German buyers; product/offers read all 386 in one call and returned the 4 German-language Near Mint ones, from €0.31.

Does it include sold prices?▾

No - CardTrader does not publish completed sales to visitors. What it does publish is its daily CT market price and the US market price for each card over the last ~35 days, which product/detail returns as price_history.

How does this compare with the Cardmarket API?▾

The actions and parameter names follow our Cardmarket API (search, expansion/products, expansions, product/detail, product/offers, game, query, expansion, card_language, min_condition, seller_country…), so the same code can price a card on both European marketplaces. CardTrader adds US-dollar prices, the ship-to country and CardTrader Zero; Cardmarket adds its price guide and sell-price averages.

What is the CardTrader API?▾

CardTrader API is a ReefAPI endpoint group for europe's other big card marketplace: every offer, ct zero best deal and market price, in eur or usd, for any ship-to country. It returns live JSON through POST requests under /cardtrader/v1.

Is the CardTrader API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. CardTrader calls use the same shared credit balance as every other ReefAPI engine.

Do I need a CardTrader login or account?▾

No login to CardTrader is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the CardTrader data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the CardTrader API use?▾

CardTrader actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call CardTrader from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call cardtrader actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the CardTrader API a CardTrader scraper?▾

It is the managed alternative to a DIY CardTrader scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same europe's other big card marketplace: every offer, ct zero best deal and market price, in eur or usd, for any ship-to country back as clean JSON.

Why does my CardTrader scraper keep getting blocked?▾

Most CardTrader scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

Contact

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 631 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-11-07.