Cardmarket APIcardmarket.com ↗
Access Cardmarket trading card listings, price history, seller profiles, expansion data, and best bargains via a structured REST API with 17 endpoints.
What is the Cardmarket API?
The Cardmarket API gives developers structured access to Europe's largest trading card marketplace through 17 endpoints covering cards, sellers, sealed products, and pricing. The get_card_details endpoint returns a full price guide — including Price Trend, 30/7/1-day averages, and the lowest current offer — alongside up to 50 seller listings in a single call, filterable by language and condition. Additional endpoints cover expansion browsing, price history charts, and batch offer lookups.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/6e8ae7ea-a15a-4125-aada-1e116c8060b5/get_games' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns every trading card game currently listed on Cardmarket's homepage game grid (22 observed, from Magic: The Gathering and Pokémon through smaller and legacy games such as Riftbound, Gundam, Cyberpunk, Weiss Schwarz, Force of Will, World of Warcraft TCG and The Spoils), in the site's display order, in one request. Each entry has name (the display name shown on the tile) and slug (the game's URL segment, used as the game parameter of the other endpoints). The list is read live from the page, so newly added games appear automatically. Note that GameSlug enumerates only the games this API has been exercised against; any slug returned here is accepted by the other endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"games": "array of game objects each with name (string, display name) and slug (string, URL segment used as the game parameter elsewhere)"
},
"sample": {
"data": {
"games": [
{
"name": "Magic: The Gathering",
"slug": "Magic"
},
{
"name": "Pokémon",
"slug": "Pokemon"
},
{
"name": "One Piece",
"slug": "OnePiece"
},
{
"name": "Yu-Gi-Oh!",
"slug": "YuGiOh"
},
{
"name": "Riftbound",
"slug": "Riftbound"
},
{
"name": "Lorcana",
"slug": "Lorcana"
},
{
"name": "Cyberpunk",
"slug": "Cyberpunk"
},
{
"name": "Dragon Ball Super",
"slug": "DragonBallSuper"
},
{
"name": "Digimon",
"slug": "Digimon"
},
{
"name": "Gundam",
"slug": "Gundam"
},
{
"name": "Flesh And Blood",
"slug": "FleshAndBlood"
},
{
"name": "Star Wars Unlimited",
"slug": "StarWarsUnlimited"
},
{
"name": "Cardfight!! Vanguard",
"slug": "Vanguard"
},
{
"name": "Final Fantasy TCG",
"slug": "FinalFantasy"
},
{
"name": "Force of Will",
"slug": "FoW"
},
{
"name": "Weiss Schwarz",
"slug": "WeissSchwarz"
},
{
"name": "World of Warcraft TCG",
"slug": "WoW"
},
{
"name": "Battle Spirits Saga",
"slug": "BattleSpiritsSaga"
},
{
"name": "Star Wars: Destiny",
"slug": "StarWarsDestiny"
},
{
"name": "Dragoborne",
"slug": "Dragoborne"
},
{
"name": "My Little Pony CCG",
"slug": "MyLittlePony"
},
{
"name": "The Spoils",
"slug": "Spoils"
}
]
},
"status": "success"
}
}About the Cardmarket API
Card Data and Listings
get_card_details identifies a card by its game, expansion, and card slugs and returns the card's collector number, rarity, price guide (Price Trend, 30-day/7-day/1-day averages, From price, Available items), and the first page of seller listings sorted cheapest-first. Optional language and min_condition parameters (e.g. NM, EX) filter both the From price and the listings array. get_card_listings pages through the same listing stream in blocks of 50 — up to 300 retrievable offers across 6 pages — and accepts a graded_only flag to scan the full stream for graded copies. get_top_card_offers_batch accepts up to 25 card objects in one call, each with its own language, condition, and optional variant, and returns the cheapest matching offers per card alongside a request_index so results map back to inputs.
Price History and Card Versions
get_price_history returns timestamped daily average sell prices across 30-day and recent chart periods, packaged alongside the current price guide object. The language filter narrows the displayed trend data; min_condition affects only the From price field. get_card_versions resolves every printing of a named card across all expansions — returning expansion, card_number, id_product, available_count, lowest_price, and a direct Singles URL per version — and can be filtered by id_expansion, language, min_condition, or seller_country.
Expansions, Games, and Sealed Products
get_games returns name and slug pairs for every supported game. get_expansions lists all sets for a game ordered by release date descending, including card_count and release_date. get_expansion_singles browses all cards in a set with optional sort, language, and min_condition filters. On the sealed side, get_booster_box_listings pages through up to 50 listings per page for a specific product slug, with language and seller_country filters. get_sealed_product_languages resolves a numeric product_id to per-language listing counts and lowest prices, while get_cheapest_sealed_listings returns sorted listings with a stats object covering total_count, total_quantity, and price statistics across the full retrievable set.
Seller Data
get_seller_account returns a seller's seller_type (Private or Professional), seller_rating, sales_count, on_vacation status, and per-category evaluation percentages. get_seller_types accepts up to five comma-separated usernames and returns the same account fields in batch, with optional professional_only filtering and separate excluded, failed, and not_found arrays. get_seller_singles reads a seller's public singles inventory for a game, one page of 20 listings at a time, filterable by language, expansion, card_name, and reverse_holo.
The Cardmarket API is a managed, monitored endpoint for cardmarket.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cardmarket.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cardmarket.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track Price Trend and daily average sell price movements for specific cards using
get_price_historyto inform buy/sell timing. - Compare the cheapest listings for a Pokémon single across all its printings using
get_card_versionsandget_card_listings. - Build a sealed product price monitor by polling
get_cheapest_sealed_listingswith a language filter and comparingstats.avg_priceover time. - Identify arbitrage opportunities by combining
get_best_bargainswithget_card_detailsprice guide fields. - Audit seller trustworthiness before purchase by pulling
seller_rating,sales_count, and evaluation percentages fromget_seller_account. - Batch-check stock and pricing for a TCG store's buy list using
get_top_card_offers_batchwith up to 25 cards per call. - Filter a seller's inventory for NM Reverse Holo copies in a specific language using
get_seller_singleswithreverse_holoandlanguageparams.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cardmarket have an official developer API?+
How does pagination work for card listings, and can I retrieve all available offers?+
get_card_listings page returns 50 listings. Pages 1 through 6 cover up to 300 offers — Cardmarket's retrievable maximum. The sort parameter controls order (price_asc or price_desc). Setting graded_only to true scans the full 300-offer stream and returns only graded copies. Offers beyond position 300 are not accessible through any page parameter.Can I filter card listings or expansion browsing by seller country?+
get_card_versions, get_booster_box_listings, and get_top_card_offers_batch all accept a seller_country integer (e.g. 7 for Germany). The get_card_listings and get_expansion_singles endpoints do not currently expose a seller_country filter at the listing level. You can fork this API on Parse and revise it to add country filtering to those endpoints.Does the API return want-list data, order history, or private account information?+
What condition codes does the API accept, and what does `min_condition` do?+
min_condition is set, listings in worse condition than the threshold are excluded from the returned listings array, and the From price reflects only qualifying offers. The Available items field in get_card_details always reflects total unfiltered stock.