Cardmarket APIcardmarket.com ↗
Access Cardmarket card prices, seller listings, expansions, and best bargains for Magic, Pokemon, Yu-Gi-Oh, and more via a structured REST API.
What is the Cardmarket API?
This API exposes 8 endpoints covering Cardmarket's catalog of trading card games, returning card details, paginated seller listings, expansion sets, and best bargain feeds. Use get_card_details to retrieve price trend data, lowest available price, and the first page of seller offers for any card identified by its game, expansion, and card slug. Supported games include Magic: The Gathering, Pokemon, Yu-Gi-Oh, One Piece, Lorcana, and Star Wars Unlimited.
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'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cardmarket-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.cardmarket_api import Cardmarket, GameSlug, Game, CardSummary, Card, Expansion, Bargain, SellerProfile
client = Cardmarket()
# List all supported trading card games
for game in client.games.list():
print(game.name, game.slug)
# Use the Pokemon game to search for cards
pokemon = client.game(GameSlug.POKEMON)
# Search for Charizard cards within the Pokemon game
for card_summary in pokemon.singles.search(query="Charizard", limit=5):
print(card_summary.name, card_summary.expansion, card_summary.lowest_price)
# Get full details for a specific card
card = client.cards.get(game=GameSlug.POKEMON, expansion="Base-Set", card="Charizard-V1-BS4")
print(card.name, card.printed_in, card.price_trend, card.available_items)
# Browse listings for the card
for listing in card.listings:
print(listing.seller.name, listing.seller.country, listing.condition, listing.price)
# List expansions for Pokemon
for expansion in pokemon.expansions.list(limit=5):
print(expansion.name, expansion.slug, expansion.release_date)
# Browse cards in a specific expansion
base_set = client.expansion("Base-Set")
for exp_card in base_set.singles.list(game=GameSlug.POKEMON, limit=10):
print(exp_card.name, exp_card.lowest_price, exp_card.available_count)
# Get best bargains for Magic
magic = client.game(GameSlug.MAGIC)
for bargain in magic.bargains.list(limit=5):
print(bargain.name, bargain.expansion, bargain.price)
# Look up a seller profile
seller = pokemon.sellers.get(username="CardCorner")
print(seller.username, seller.url)
Returns the list of all supported trading card games on Cardmarket. Each game has a name and a slug used as identifier in other endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"games": "array of game objects each with name (string) and slug (string)"
},
"sample": {
"data": {
"games": [
{
"name": "Magic: The Gathering",
"slug": "Magic"
},
{
"name": "Pokémon",
"slug": "Pokemon"
},
{
"name": "Yu-Gi-Oh!",
"slug": "YuGiOh"
},
{
"name": "One Piece Card Game",
"slug": "OnePiece"
},
{
"name": "Lorcana",
"slug": "Lorcana"
},
{
"name": "Star Wars: Unlimited",
"slug": "StarWarsUnlimited"
}
]
},
"status": "success"
}
}About the Cardmarket API
Games, Expansions, and Card Browsing
get_games returns the full list of supported trading card games as name/slug pairs — those slugs feed directly into every other endpoint. get_expansions accepts a game slug and returns each set's name, slug, url, card_count, and release_date. Once you have an expansion slug, get_expansion_singles paginates through all singles in that set, exposing name, url, rarity, available_count, and lowest_price per card.
Card Details and Listings
get_card_details requires three parameters — game, expansion, and card slug — and returns the card's full URL, Price Trend, From (lowest listed price), Available items, card number, and the first page of seller listings. For deeper pagination of seller offers, get_card_listings provides the same trio of identifiers plus an optional page parameter, returning listing objects that include seller name, country, condition, attributes, price, quantity, and any seller comment.
Search and Discovery
search_singles lets you query by partial card name within a specific game. Results include the card's expansion, rarity, available_count, and lowest_price, and support pagination via the page parameter. get_best_bargains returns the current best-value cards for a given game as a list of objects with name, url, expansion, and price — useful for surfacing underpriced inventory without a specific card target.
Seller Profiles
get_seller_profile takes a game slug and a username (as it appears in listing data) and returns the seller's profile URL and username. Additional profile fields are included when the page exposes them, making it straightforward to enrich listing data with seller context.
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 trends for specific Magic: The Gathering or Pokemon cards using
get_card_detailsprice guide fields. - Build an expansion release calendar by calling
get_expansionsfor each supported game and sorting byrelease_date. - Aggregate lowest prices across all singles in a set via
get_expansion_singlesto identify the cheapest available cards. - Monitor seller listings for a high-demand card using paginated
get_card_listingsresults filtered by condition. - Surface daily deal opportunities by polling
get_best_bargainsfor multiple game slugs. - Search for a card by partial name across games using
search_singlesand comparelowest_pricevalues in results. - Enrich a card listing dataset with seller location and feedback by resolving usernames through
get_seller_profile.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cardmarket provide an official developer API?+
What does `get_card_details` return beyond the price?+
get_card_details returns the card's Price Trend, the From field (current lowest listed price), Available items count, card number within the set, the expansion name under Printed in, the full page URL, and the first page of seller listings. Each listing includes seller name, country, condition, price, and quantity.Does the API cover foil or alternate-art variants separately in listings?+
get_card_listings include an attributes field that carries variant information (such as foil or language) when it appears on the listing. The search and expansion endpoints do not split results by variant at the index level — they surface one entry per card slug. You can fork this API on Parse and revise it to add variant-level filtering if your use case requires it.Is seller feedback or rating data available from `get_seller_profile`?+
username and url, plus any additional fields present on the public profile page. Structured feedback scores and sale history are not guaranteed response fields in the current schema. You can fork this API on Parse and revise it to extract additional seller reputation fields.