Pricing
The pricing endpoints return per-product price data from three sources:
| Source | What it is | Currency |
|---|---|---|
cardmarket |
Cardmarket's daily price snapshot — low/mid/high/marketValue tiers plus 24h/7d/30d trend percentages |
EUR |
tcgplayer |
TCGplayer's daily price snapshot, with the same fields | USD |
cardnexus |
The listings live on the CardNexus marketplace at the moment of the request — a EUR-converted floor across the whole marketplace, plus per-region prices with the cheapest listing, listing count, and quantity for sale broken down per condition and per language | EUR floor; EUR (eu) and USD (na) |
Three endpoints, all keyed by productId:
GET /v1/products/{productId}/prices— the current prices from all three sources, keyed by finish.GET /v1/products/{productId}/prices/history— day-by-day Cardmarket and TCGplayer prices, up to 365 days per request.GET /v1/products/{productId}/sales— the product's CardNexus sales from the last 30 days, anonymized.
All amounts are decimal major units — 42.50 is €42.50.
Market regions
The European and North American card markets trade at different prices in different currencies, so CardNexus listing data is reported per market region rather than averaged into one number. There are two regions:
| Region | Countries | Currency |
|---|---|---|
eu |
Europe | EUR |
na |
The United States and Canada | USD |
A listing belongs to the region of its seller's country: the United States and Canada are na, everywhere else is eu. When no country is on file, the listing currency decides instead: USD and CAD mean na, every other currency means eu. Every listing belongs to exactly one region.
Every one of a region's prices is in that region's currency. A seller inside the region who lists in another currency (for example a UK seller listing in GBP) has their prices converted into the region's currency at the current exchange rate. Prices from one region are never mixed into the other region's.
The cardnexus block's top-level low is the cheapest listing anywhere on the marketplace, converted to EUR at the current exchange rate — the only place a price crosses regions.
Sales carry the same regions: each sale has a region field (eu or na), the price the card was listed at in its own currency, and a EUR conversion.
Sales are anonymized
Sales carry the card's finish, condition (or grading), language, quantity, prices, region, and timestamps — and nothing else. There are no buyer, seller, or order identifiers, and the window is fixed at the last 30 days.
Rate limits
Each pricing endpoint has its own rate limit, on top of your account's global limit:
| Endpoint | Limit |
|---|---|
GET /v1/products/{productId}/prices |
600 requests per hour |
GET /v1/products/{productId}/prices/history |
120 requests per hour |
GET /v1/products/{productId}/sales |
60 requests per hour |
To get prices for a whole game in one download, use the prices feed — it carries the same cardmarket/tcgplayer/cardnexus blocks, rebuilt when the game's prices are refreshed. The endpoints are the fresh per-product view; the feed is the bulk view.
The pricing endpoints require an API key but no scope — any valid key works. See Authentication.