Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Cardmarket API page →
E-commerce & Marketplaces

Cardmarket API & Scraper

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.

6 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

A search or set listing returns 30, 50 or 100 products per call with the Cardmarket product id, name, expansion, collector number, rarity, how many items are for sale and the image. product/detail returns Cardmarket's price guide - the From price, the Price Trend and the 30-, 7- and 1-day average sell prices - plus the daily average sell price of the last 30 days and the first 50 offers. product/offers pages through up to 300 offers with Cardmarket's own filters: card language, minimum condition, seller country, seller type, foil, signed, first edition and altered. Every offer carries price, quantity, condition (Mint to Poor), card language, the foil and signed flags, and the seller's name, type, country and number of sales. A verification on 2026-09-15 read 14 products across singles, booster boxes, boosters and elite trainer boxes twice, once through the API and once from the page text: items for sale, From, Price Trend, the three averages, the first offer's price and the seller's country matched 14 of 14 times. No Cardmarket account, no browser - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/cardmarket/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "charizard",
    "game": "Pokemon"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "cardmarket",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 9793.1,
    "record_count": 0,
    "bytes": 109024,
    "cache_hit": false,
    "game": "Pokemon",
    "language": "en",
    "upstream_requests": 2,
    "pagination": {
      "page": 1,
      "has_more": false,
      "page_size": 0,
      "total": null
    }
  },
  "data": {
    "results": [],
    "count": 0,
    "total": null,
    "total_is_lower_bound": false,
    "page": 1,
    "per_page": 50,
    "total_pages": null,
    "total_pages_is_lower_bound": false,
    "has_more": false,
    "redirected_to_product": false,
    "query": "charizard",
    "category": null,
    "sort": "popularity",
    "search_mode": "classic",
    "search_mode_served": "classic",
    "results_may_be_incomplete": false,
    "game": "Pokemon",
    "language": "en"
  }
}
Actions

What the Cardmarket API does

ActionDescriptionConcrete use caseKey params
searchSearch Cardmarket by card or product name for one game: product id, name, expansion, collector number, rarity, number of offers, the cheapest offer price and the image. Narrow to a category (Singles, Booster-Boxes…), only products with offers; sort by popularity, price, name, number or release date; page through results.Pricing teams call search to search Cardmarket by card or product name for one game.query, game, language, category, search_mode, ...
expansion/productsEvery product of one expansion (set) with the same rows as `search`, filterable by rarity and sortable by collector number, price or popularity.Marketplace operators call expansion/products to get every product of one expansion (set) with the same rows as `search`, filterable by rarity and….expansion, game, language, category, rarity, ...
expansionsEvery expansion (set) Cardmarket lists for a game, newest first: name, slug, set code where published, number of cards, release date.Catalog enrichment teams call expansions to get every expansion (set) Cardmarket lists for a game, newest first.game, language, max_rotations
product/detailOne Cardmarket product by id or URL: name, expansion, number, rarity, image, number of items for sale, Cardmarket's price guide (From, Price Trend, 30/7/1-day average sell price), the daily average sell price of the last 30 days, and the first 50 offers with condition, card language, foil/signed/first-edition flags, quantity and the seller's country.Retail analysts call product/detail to get one Cardmarket product by id or URL.product_id, game, language, max_rotations
product/offersEvery offer on one product in Cardmarket's own order (roughly cheapest first), 50 per page up to Cardmarket's 300: price, quantity, condition, card language, foil/signed/first-edition/altered, seller name, type, country and sales. Filter with Cardmarket's own filters: card language, minimum condition, seller country, seller type, foil, signed, first edition, altered.Pricing teams call product/offers to get every offer on one product in Cardmarket's own order (roughly cheapest first), 50 per page up….product_id, game, language, card_language, min_condition, ...
search/suggestCardmarket's search-box suggestions for what a shopper has typed so far: product name, expansion, link and image.Marketplace operators call search/suggest to get cardmarket's search-box suggestions for what a shopper has typed so far.query, game, language, max_rotations
Code samples

Call search from your stack

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.cardmarket.search with {"query":"charizard","game":"Pokemon"}.
Use cases

Who uses this API and why

  • 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.
  • Collectors watch product/offers for a card filtered to Near Mint English copies from sellers in their own country.
  • Portfolio tools value a collection with the daily average sell price of the last 30 days instead of the cheapest listing.
  • Sealed-product traders compare booster box and elite trainer box prices across Pokémon, Magic, Yu-Gi-Oh! and One Piece.
FAQ

Questions developers ask before integrating

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.

docs / cardmarket

Cardmarket

Europe's trading-card marketplace: Magic, Pokémon, Yu-Gi-Oh! and more, with price guide and every seller's offer in euro.

base /cardmarket/v16 endpoints
post/cardmarket/v1/expansion/products1 credit

Every product of one expansion (set) with the same rows as `search`, filterable by rarity and sortable by collector number, price or popularity.

ParameterAllowed / rangeDescription
expansionrequiredExpansion slug from `expansions` (e.g. Base-Set, 151) or a cardmarket.com expansion / listing URL.
game = PokemonoptionalMagic · Pokemon · YuGiOh · OnePiece · Lorcana · FleshAndBlood · Digimon · DragonBallSuper · StarWarsUnlimited · Riftbound · BattleSpiritsSaga · FinalFantasy · Vanguard · WeissSchwarz · WoW · StarWarsDestiny · Cyberpunk · Dragoborne · FoW · MyLittlePony · SpoilsThe trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.
language = enoptionalen · de · fr · it · esCardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.
categoryoptionalCardmarket category path name, e.g. Singles, Boosters, Booster-Boxes, Elite-Trainer-Boxes, Sealed-Products (game-specific). Omit for all categories.
rarityoptionalRarity name or Cardmarket rarity id as listed in `rarity_options` of the response.
sort = popularityoptionalpopularity · price_asc · price_desc · name_asc · name_desc · number_asc · number_desc · release_asc · release_descCardmarket's own orderings: popularity, price, name, collector number, release date.
only_available = falseoptionalOnly products that currently have offers.
page = 1optional1–500Result page (1-based).
per_page = 50optional30 · 50 · 100Rows per page, one of Cardmarket's own page sizes.
max_rotations = 3optional1–5How many fresh exits to try before giving up.
Try in playground →
post/cardmarket/v1/expansions2 credits

Every expansion (set) Cardmarket lists for a game, newest first: name, slug, set code where published, number of cards, release date.

ParameterAllowed / rangeDescription
game = PokemonoptionalMagic · Pokemon · YuGiOh · OnePiece · Lorcana · FleshAndBlood · Digimon · DragonBallSuper · StarWarsUnlimited · Riftbound · BattleSpiritsSaga · FinalFantasy · Vanguard · WeissSchwarz · WoW · StarWarsDestiny · Cyberpunk · Dragoborne · FoW · MyLittlePony · SpoilsThe trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.
language = enoptionalen · de · fr · it · esCardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.
max_rotations = 3optional1–5How many fresh exits to try before giving up.
Try in playground →
post/cardmarket/v1/product/detail1 credit

One Cardmarket product by id or URL: name, expansion, number, rarity, image, number of items for sale, Cardmarket's price guide (From, Price Trend, 30/7/1-day average sell price), the daily average sell price of the last 30 days, and the first 50 offers with condition, card language, foil/signed/first-edition flags, quantity and the seller's country.

ParameterAllowed / rangeDescription
product_idrequiredCardmarket's numeric product id (from any search row) or a cardmarket.com product URL.
game = PokemonoptionalMagic · Pokemon · YuGiOh · OnePiece · Lorcana · FleshAndBlood · Digimon · DragonBallSuper · StarWarsUnlimited · Riftbound · BattleSpiritsSaga · FinalFantasy · Vanguard · WeissSchwarz · WoW · StarWarsDestiny · Cyberpunk · Dragoborne · FoW · MyLittlePony · SpoilsThe trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.
language = enoptionalen · de · fr · it · esCardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.
max_rotations = 3optional1–5How many fresh exits to try before giving up.
Try in playground →
post/cardmarket/v1/product/offers2 credits

Every offer on one product in Cardmarket's own order (roughly cheapest first), 50 per page up to Cardmarket's 300: price, quantity, condition, card language, foil/signed/first-edition/altered, seller name, type, country and sales. Filter with Cardmarket's own filters: card language, minimum condition, seller country, seller type, foil, signed, first edition, altered.

ParameterAllowed / rangeDescription
product_idrequiredCardmarket's numeric product id (from any search row) or a cardmarket.com product URL.
game = PokemonoptionalMagic · Pokemon · YuGiOh · OnePiece · Lorcana · FleshAndBlood · Digimon · DragonBallSuper · StarWarsUnlimited · Riftbound · BattleSpiritsSaga · FinalFantasy · Vanguard · WeissSchwarz · WoW · StarWarsDestiny · Cyberpunk · Dragoborne · FoW · MyLittlePony · SpoilsThe trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.
language = enoptionalen · de · fr · it · esCardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.
card_languageoptionalen · fr · de · es · it · zh-cn · ja · pt · ru · ko · zh-tw · nlOnly offers of cards printed in this language.
min_conditionoptionalmint · near_mint · excellent · good · light_played · played · poorOnly offers in this condition or better (Mint > Near Mint > Excellent > Good > Light Played > Played > Poor).
seller_countryoptionalAT · BE · BG · CH · CY · CZ · DE · DK · EE · ES · FI · FR · GB · GR · HU · IE · IT · LI · LT · LU · LV · MT · NL · NO · PL · PT · RO · SE · SG · SI · SK · CA · HR · JP · ISOnly offers from sellers located in this country (ISO code).
seller_typeoptionalprivate · professional · powersellerOnly offers from this seller type.
foiloptionaltrue = only foil offers, false = only non-foil (games with foil printings).
signedoptionaltrue/false: signed cards.
first_editionoptionaltrue/false: first-edition cards (Pokémon, Yu-Gi-Oh!).
alteredoptionaltrue/false: altered cards.
page = 1optional1–6Offer page, 50 offers each, in Cardmarket's order (roughly cheapest first). Cardmarket stops at 6 pages (300 offers).
max_rotations = 3optional1–5How many fresh exits to try before giving up.
Try in playground →
post/cardmarket/v1/search/suggest1 credit

Cardmarket's search-box suggestions for what a shopper has typed so far: product name, expansion, link and image.

ParameterAllowed / rangeDescription
queryrequiredWhat a shopper typed so far (3+ characters).
game = PokemonoptionalMagic · Pokemon · YuGiOh · OnePiece · Lorcana · FleshAndBlood · Digimon · DragonBallSuper · StarWarsUnlimited · Riftbound · BattleSpiritsSaga · FinalFantasy · Vanguard · WeissSchwarz · WoW · StarWarsDestiny · Cyberpunk · Dragoborne · FoW · MyLittlePony · SpoilsThe trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.
language = enoptionalen · de · fr · it · esCardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.
max_rotations = 3optional1–5How many fresh exits to try before giving up.
Try in playground →