Cardmarket API

Europe's trading-card market as JSON, with the price guide and every offer

The Cardmarket API turns Europe's largest trading-card marketplace into clean JSON, in six actions: search, expansion/products, expansions, product/detail, product/offers and search/suggest, for 21 games (Magic, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood, Digimon, Dragon Ball Super, Star Wars Unlimited, Riftbound and more) in English, German, French, Italian or Spanish.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Cardmarket endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
C
/cardmarket/v1

6 active endpoints, on 1 and 2 credit tiers.

  • POST/cardmarket/v1/search
  • POST/cardmarket/v1/expansion/products
  • POST/cardmarket/v1/expansions
  • POST/cardmarket/v1/product/detail
  • POST/cardmarket/v1/product/offers
  • POST/cardmarket/v1/search/suggest

What Cardmarket endpoints does ReefAPI ship?

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

6 endpoints

search

1 cr

Search Cardmarket by card or product name for one game.

required
query
optional
game, language, category, search_mode, sort, only_available, page, per_page, max_rotations

expansion/products

1 cr

Every product of one expansion (set) with the same rows as search, filterable by rarity and s…

required
expansion
optional
game, language, category, rarity, sort, only_available, page, per_page, max_rotations

expansions

2 cr

Every expansion (set) Cardmarket lists for a game, newest first.

required
optional
game, language, max_rotations

product/detail

1 cr

One Cardmarket product by id or URL.

required
product_id
optional
game, language, max_rotations

product/offers

2 cr

Every offer on one product in Cardmarket's own order (roughly cheapest first), 50 per page up…

required
product_id
optional
game, language, card_language, min_condition, seller_country, seller_type, foil, signed, first_edition, altered, page, max_rotations

search/suggest

1 cr

Cardmarket's search-box suggestions for what a shopper has typed so far.

required
query
optional
game, language, max_rotations

Every parameter, every allowed value →

Cardmarket API

4 of 6 endpoints, ready to run

View docs ↗

Cardmarket's product list for a card name: product id, name, expansion, collector number, rarity, how many items are for sale and the image, for any of 21 games and in five site languages.

1 credit1 required · 2 optional
POST/cardmarket/v1/search
ok2786 ms · 50 records · sample
{
  "ok": true,
  "meta": {
    "api": "cardmarket",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2786.4,
    "record_count": 50,
    "cache_hit": false
  },
  "data": {
    "results": [
      {
        "product_id": 665244,
        "name": "Charizard (PGO 010)",
        "name_en": null,
        "url": "https://www.cardmarket.com/en/Pokemon/Products/Singles/Pokemon-GO/Charizard-PGO010",
        "category": "Singles",
        "expansion": "Pokémon GO",
        "expansion_slug": "Pokemon-GO",
        "number": "010",
        "rarity": "Holo Rare",
        "available_items": 1031,
        "search_index_price_from": null,
        "currency": "EUR",
        "image": "https://product-images.s3.cardmarket.com/51/PGO/665244/665244.jpg"
      },
      {
        "product_id": 670827,
        "name": "Charizard (LOR TG03)",
        "name_en": null,
        "url": "https://www.cardmarket.com/en/Pokemon/Products/Singles/Lost-Origin/Charizard-LORTG03",
        "category": "Singles",
        "expansion": "Lost Origin",
        "expansion_slug": "Lost-Origin",
        "number": "TG03",
        "rarity": "Illustration Rare",
        "available_items": 590,
        "search_index_price_from": 18,
        "currency": "EUR",
        "image": "https://product-images.s3.cardmarket.com/51/LOR/670827/670827.jpg"
      },
      {
        "product_id": 674369,
        "name": "Charizard VMAX (SWSH 261)",
        "name_en": null,
        "url": "https://www.cardmarket.com/en/Pokemon/Products/Singles/SWSH-Black-Star-Promos/Charizard-VMAX-SWSH261",
        "category": "Singles",
        "expansion": "SWSH Black Star Promos",
        "expansion_slug": "SWSH-Black-Star-Promos",
        "number": "261",
        "rarity": "Promo",
        "available_items": 511,
        "search_index_price_from": 19.95,
        "currency": "EUR",
        "image": "https://product-images.s3.cardmarket.com/51/SWSH/674369/674369.jpg"
      }
    ],
    "count": 50,
    "total": 294,
    "total_is_lower_bound": false,
    "page": 1,
    "per_page": 50,
    "total_pages": 6,
    "total_pages_is_lower_bound": false,
    "has_more": true,
    "redirected_to_product": false,
    "query": "charizard",
    "category": null,
    "sort": "popularity",
    "search_mode": "classic",
    "search_mode_served": "classic",
    "results_may_be_incomplete": true,
    "game": "Pokemon",
    "language": "en"
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Cardmarket API works

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

01
Authenticate
x-api-key header

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

02
Call
POST /cardmarket/v1/…

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

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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

Price a card like a collector: trend first, then the right copies

One search gives you the Cardmarket product id. The same id returns the price guide and, with filters, only the copies you would actually buy.

01search
POST/cardmarket/v1/search
{"query": "charizard", "game": "Pokemon"}

Charizard products with expansion, number, rarity and items for sale. Take results[].product_id.

02detail
POST/cardmarket/v1/product/detail
{"product_id": "273699"}

Base Set Charizard: From 100.00 €, Price Trend 950.64 €, 30-day average 682.48 €, and 30 days of daily sell prices.

03offers
POST/cardmarket/v1/product/offers
{"product_id": "273699", "card_language": "en", "min_condition": "excellent", "seller_country": "DE"}

Only English copies in Excellent or better from sellers in Germany: 16 offers, starting at 549.00 € on 2026-09-15.

The real market for one card - what it sells for, and which listed copies match your standard - without mistaking the cheapest damaged copy for the price.

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

Cardmarket's From price is the cheapest copy in any condition, not what the card is worth

Every Cardmarket product page shows a From price next to the Price Trend. From is simply the cheapest offer on the market, whatever its condition or language - often a heavily played copy. Price Trend and the 30-, 7- and 1-day averages are what the card has been selling for. This API returns all of them as separate fields, and every offer with its condition and card language, so you can price like a collector rather than like a bargain hunter.

Productprice_from (cheapest offer)price_trendavg_sell_price_30dfirst offer
Charizard (Base Set 4)100.00 €950.64 €682.48 €Poor, French, seller in France
Lightning Bolt (Magic 2011)0.20 €1.03 €1.25 €seller in Portugal
VSTAR Universe Booster Box135.00 €167.46 €160.43 €seller in Spain
Destined Rivals Elite Trainer Box95.00 €125.32 €131.15 €seller in Italy

Filters change the picture fast: on the same Charizard, only English copies start at 150 €, and Near Mint or better starts at 350 €. Offer prices never include shipping, which each seller charges from its own country. Search rows carry the From figure of Cardmarket's search index, which differed from the product page on 8 of 18 products checked in the same minute, so it is returned as search_index_price_from; use product/detail for the live From price.

Which price is which, what every offer tells you, and what Cardmarket leaves out

21 games, five site languages, six actions, prices in euro. Measured on 2026-09-15 with 90 live calls across every action, an end-to-end run over every filter and a 14-product check against the page text. Three of these lines go against us.

From is not the value

price_from is the cheapest listed copy in any condition; price_trend and the 30-, 7- and 1-day averages are sell prices. On 14 checked products every one of these matched the product page, 14 of 14.

Every offer, with condition and language

Offers carry price, quantity, condition from Mint to Poor, card language, foil, signed, first edition and altered, and the seller's type, country and sales. In the check, price, quantity, card language and the seller's name, type, country and sales were filled on all 652 offers read, and condition on all 352 single-card offers; sealed offers carry no condition on Cardmarket.

Search rows show Cardmarket's index price

The From figure on search rows comes from Cardmarket's search index and differed from the product page on 8 of 18 products in the same minute. It is returned as search_index_price_from; product/detail has the live From price. Items for sale matched 18 of 18.

Paging and the classic search limit

Cardmarket's default popularity order can shift between calls, so sort by name or number for a complete sweep. The classic search stops near 300 results and says so, which the API flags as results_may_be_incomplete.

Offers are in Cardmarket's order

Roughly cheapest first, not strictly. The first offer matched price_from on all 14 verified products; sort the list yourself if strict order matters.

Not published: shipping, seller ratings, sealed details

Cardmarket does not show shipping costs or seller ratings in the offer list, and sealed products have no rarity, collector number or condition. Those fields are null, never guessed.

What people build with Cardmarket

The jobs this data is most often used for.

6

endpoints

1/2

credits per call

01

Card shops and price-tracking apps pull Cardmarket's Price Trend and 30-day average for every card in a set with expansion/products and product/detail.

02

Collectors watch product/offers for a card filtered to Near Mint English copies from sellers in their own country.

03

Portfolio tools value a collection with the daily average sell price of the last 30 days instead of the cheapest listing.

04

Sealed-product traders compare booster box and elite trainer box prices across Pokémon, Magic, Yu-Gi-Oh! and One Piece.

What Cardmarket 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.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

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/cardmarket/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"charizard","game":"Pokemon"}'
python
import requests

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

Have a question? We got answers.

The questions people actually ask before wiring up Cardmarket.

Get a free key →
Which games and languages does the Cardmarket API cover?

All 21 games Cardmarket lists: Magic: The Gathering, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood, Digimon, Dragon Ball Super, Star Wars Unlimited, Riftbound, Battle Spirits Saga, Final Fantasy, Vanguard, Weiß Schwarz, World of Warcraft, Star Wars Destiny, Cyberpunk, Dragoborne, Force of Will, My Little Pony and The Spoils. Each was checked live on 2026-09-15. language switches Cardmarket's site language between en, de, fr, it and es, which translates product names (Charizard, Glurak, Dracaufeu); prices, ids and offers stay the same. Prices are always in euro.

What is the difference between price_from, price_trend and the averages?

price_from is the cheapest offer currently listed, in any condition and language. price_trend and avg_sell_price_30d, _7d and _1d are Cardmarket's figures for what the product has actually been selling for. The 1-day average moves a lot on rare cards (3,071.67 € against a 30-day 682.48 € on Base Set Charizard). When Cardmarket has no recent sales it prints N/A, and the API returns null, never 0.

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

Yes, with Cardmarket's own filters on product/offers: card_language, min_condition (mint, near_mint, excellent, good, light_played, played, poor), seller_country (ISO code), seller_type (private, professional, powerseller), and foil, signed, first_edition and altered as true or false. Each filter was checked live against every returned offer. Offers come 50 per page, up to Cardmarket's limit of 300.

Are offers sorted by price?

Offers come in Cardmarket's own order, which is roughly cheapest first but not strictly. The first offer on page 1 matched price_from on all 14 products we verified. If you need a strict price order, sort the offers you receive.

Does the offer price include shipping?

No. Cardmarket prices exclude shipping, and every seller ships from its own country, so each offer carries price_excludes_shipping: true and the seller's country_code. Cardmarket does not publish shipping costs on the product page.

How do I page through a search reliably?

search returns total, has_more and total_pages. Cardmarket's default popularity order can shift slightly between calls, so a product may appear twice or be skipped at a page boundary. For a complete sweep, sort by name, collector number or release date, which returned the identical order on repeated calls. Cardmarket's classic search stops near 300 results and says so; the API flags that with results_may_be_incomplete, and expansion/products lists a whole set.

What does Cardmarket NOT publish?

Shipping costs, seller ratings on the offer list, rarity or collector numbers for sealed products, and conditions for sealed offers. Those fields come back as null. Misspelled searches are not corrected by Cardmarket, so a search for charizrd returns no results rather than guessed ones.

What is the Cardmarket API?

Cardmarket API is a ReefAPI endpoint group for europe's trading-card marketplace: magic, pokémon, yu-gi-oh! and more, with price guide and every seller's offer in euro. It returns live JSON through POST requests under /cardmarket/v1.

Is the Cardmarket API free to try?

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

Do I need a Cardmarket login or account?

No login to Cardmarket 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 Cardmarket 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 Cardmarket API use?

Cardmarket actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Cardmarket from an AI assistant or MCP client?

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

Is the Cardmarket API a Cardmarket scraper?

It is the managed alternative to a DIY Cardmarket 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 trading-card marketplace: magic, pokémon, yu-gi-oh! and more, with price guide and every seller's offer in euro back as clean JSON.

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Cardmarket, you are one call away from the rest of the category — no second contract, no second integration.

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 251 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-09-15.