PokeTrace 2.0 ist daÄnderungen ansehen
PokeTrace 2.0 ist daÄnderungen ansehen

Endpoints

Cards

Use the Cards API when you need the most complete Pokemon card prices in one response: TCGPlayer market prices, eBay sold listings, CardMarket price trends, active CardMarket listings, raw conditions, graded tiers and plan-filtered history.

Since API 2.0 a card sold in both markets is one card. Request it with its US id or its EU id and GET /cards/:id returns both markets: TCGPlayer and eBay prices in USD next to CardMarket prices in EUR. GET /cards lists it once, under its US id, with both markets too. Use these routes when you need one search layer across US and EU inventories for dashboards, alerts, collection tooling, sealed-product pricing and AI enrichment.

CoverageWhat you get
USTCGPlayer market prices plus eBay sold sales for raw conditions, with graded tiers on higher plans.
EUCardMarket price trend data and active listings, including condition, grade, per-country and per-language breakdowns where available.
Price depthAverage, low, high, sale count, approximate-sale flag, rolling averages, medians, top price and freshness fields.
Product taxonomyCards and sealed products expose productType and productFamily, so boosters, boxes, tins, decks and accessories can be filtered directly.

Product filters

product_type accepts single, sealed, code_card and accessory. Use product_family for narrower sealed-product groups such as booster_box, booster_pack, booster_bundle, elite_trainer_box, tin, deck, box_collection and blister.

Approximate sale counts

approxSaleCount tells you whether a source uses an approximate sale count. This matters for unstable sold-listing sources such as ebay, where revoked, removed or reclassified listings can change the visible count after the initial sale. Stable marketplace sources return approxSaleCount: false.

Both markets in one response

GET /cards/:id and each item in GET /cards carry two fields that cover both markets. Each market keeps its own currency; nothing is converted.

FieldWhat it contains
marketsOne entry per market, keyed US and EU: available, cardId, currency and variant, plus finish and link on the linked market. The linked card's id is in markets.EU.cardId or markets.US.cardId, and every id works with all /cards endpoints. The market of the id you request is always present.
pricesPrices grouped by grade or condition first, then market, then source, for example prices.NEAR_MINT.US.tcgplayer, prices.PSA_10.US.ebay or prices.NEAR_MINT.EU.cardmarket_unsold. Each price object has avg, low, high, saleCount and, where available, rolling averages and medians.

EU and graded access is unchanged. On plans without EU access the EU entry is { "available": false, "reason": "plan" } and no EU prices are returned. Graded tiers appear only on plans that include graded data. Old US and EU ids and slugs keep working, and one request now covers both markets, so most clients need fewer calls.

Related: Sets, Markets and tiers, Authentication

Search cards with prices and pagination

GET /v2/cardsAPI key required

Search cards and sealed products with pagination. Each item includes plan-filtered prices, grouped by grade or condition, then market, then source. saleCount is returned for all non-AGGREGATED tiers, and approxSaleCount tells you whether that source uses an approximate count. Filter by set, name, card number, variant, rarity, game, product taxonomy, or market. A card linked across markets is listed once, as the combined card: the US record's fields plus markets and prices for both markets, the same as GET /cards/:id. Cards without a linked card are listed on their own. Lookups by cardmarket_ids, tcgplayer_ids or an EU set slug also return linked EU cards as the combined card: the top-level id is the US id, and the EU id is in markets.EU.cardId. EU ids stay valid for GET /cards/:id and price history.

Free plan: Only US market prices (ebay raw conditions + tcgplayer) are returned, and markets.EU on linked cards is { available: false, reason: plan }. Upgrade to Pro to access graded tiers (PSA, BGS, CGC...) and EU market data (CardMarket).
Loading...
GET /v2/cards
curl -H "X-API-Key: YOUR_KEY" "https://api.poketrace.com/v2/cards?search=charizard&market=US&limit=2"
Example response
// A linked card is listed once, under its US id, with both markets. market=EU returns the same item.
// prices is grouped by grade, then market, then source.
{
"data": [{
"id": "019bff77-befa-771d-bab0-f5909f0a78c9",
"name": "Charizard",
"cardNumber": "004/102",
"set": { "slug": "base-set", "name": "Base Set" },
"variant": "Holofoil",
"rarity": "Rare Holo",
"productType": "single",
"productFamily": "card",
"image": "https://cdn.poketrace.com/cards/...",
"game": "pokemon",
"market": "US",
"currency": "USD",
"refs": { "tcgplayerId": "83356", "cardmarketId": "273927" },
"lastUpdated": "2026-11-06T12:00:00Z",
"markets": {
"US": { "available": true, "cardId": "019bff77-befa-771d-bab0-f5909f0a78c9", "currency": "USD", "variant": "Holofoil" },
"EU": { "available": true, "cardId": "eu_273927", "currency": "EUR", "variant": "Holofoil", "finish": "base", "link": "exact" }
},
"prices": {
"PSA_10": {
"US": {
"ebay": { "avg": 5200, "low": 4800, "high": 5600, "saleCount": 47, "approxSaleCount": true, "avg7d": 5100, "median7d": 5120 }
},
"EU": {
"cardmarket_unsold": { "avg": 4200, "low": 3800, "high": 4600, "saleCount": 20, "approxSaleCount": false, "median7d": 4100 }
}
},
"NEAR_MINT": {
"US": {
"ebay": { "avg": 890, "low": 750, "high": 1050, "saleCount": 156, "approxSaleCount": true, "avg7d": 870, "median7d": 875 },
"tcgplayer": { "avg": 420, "low": 380, "high": 480, "saleCount": 89, "approxSaleCount": false, "avg7d": 410, "median7d": 412 }
},
"EU": {
"cardmarket_unsold": { "avg": 420, "low": 350, "high": 890, "saleCount": 125, "approxSaleCount": false, "median7d": 410 }
}
},
"AGGREGATED": {
"EU": {
"cardmarket": { "avg": 385, "low": null, "high": null, "avg1d": 380, "avg7d": 375, "avg30d": 370 }
}
}
}
}],
"pagination": { "hasMore": true, "nextCursor": "YnNfMg==", "count": 1 }
}

Get card by ID with full pricing

GET /v2/cards/:idAPI key required

Get one card with a US id or an EU id. Linked cards return both markets: markets lists the card id, currency and variant per market, and prices groups prices by grade, then market, then source. US sources: ebay (all tiers) + tcgplayer (raw only), in USD. EU sources: cardmarket (AGGREGATED tier from Price Trend, no saleCount) + cardmarket_unsold (active listings with medians), in EUR. Includes rolling medians (median3d/7d/30d) calculated from individual listings, excluding anomalies. approxSaleCount tells you whether a source uses an approximate sale count.

Free plan: Only US market prices (ebay raw conditions + tcgplayer) are returned, and markets.EU is { available: false, reason: plan }. Upgrade to Pro to access graded tiers (PSA, BGS, CGC...) and EU market data (CardMarket).
Loading...
GET /v2/cards/:id
curl -H "X-API-Key: YOUR_KEY" "https://api.poketrace.com/v2/cards/019bff77-befa-771d-bab0-f5909f0a78c9"
Example response
// Requested with the US id. The same card requested with "eu_273927" returns the same prices; id, market,
// currency and refs then describe the EU record, and finish and link move to markets.US (the linked market).
// prices is grouped by grade, then market, then source.
{
"data": {
"id": "019bff77-befa-771d-bab0-f5909f0a78c9", "name": "Charizard", "cardNumber": "004/102", "variant": "Holofoil", "rarity": "Rare Holo", "productType": "single", "productFamily": "card", "game": "pokemon", "market": "US", "currency": "USD", "topPrice": 5200, "totalSaleCount": 292, "hasGraded": true, "lastUpdated": "2026-11-06T12:00:00Z",
"set": { "slug": "base-set", "name": "Base Set" },
"refs": { "tcgplayerId": "83356", "cardmarketId": null },
"gradedOptions": ["PSA_10", "PSA_9", "BGS_9_5", "CGC_9"],
"conditionOptions": ["NEAR_MINT", "LIGHTLY_PLAYED"],
"markets": {
"US": { "available": true, "cardId": "019bff77-befa-771d-bab0-f5909f0a78c9", "currency": "USD", "variant": "Holofoil" },
"EU": { "available": true, "cardId": "eu_273927", "currency": "EUR", "variant": "Holofoil", "finish": "base", "link": "exact" }
},
"prices": {
"PSA_10": {
"US": {
"ebay": { "avg": 5200, "low": 4800, "high": 5600, "saleCount": 47, "approxSaleCount": true, "avg7d": 5100, "median7d": 5120 }
},
"EU": {
"cardmarket_unsold": {
"avg": 4200, "low": 3800, "high": 4600, "saleCount": 20, "approxSaleCount": false, "median7d": 4100,
"country": {
"DE": { "avg": 4150, "low": 3800, "high": 4500, "saleCount": 10, "approxSaleCount": false }
}
}
}
},
"NEAR_MINT": {
"US": {
"ebay": { "avg": 890, "low": 750, "high": 1050, "saleCount": 156, "approxSaleCount": true, "avg7d": 870, "median7d": 875 },
"tcgplayer": { "avg": 420, "low": 380, "high": 480, "saleCount": 89, "approxSaleCount": false, "avg7d": 410, "median7d": 412 }
},
"EU": {
"cardmarket_unsold": {
"avg": 420, "low": 350, "high": 890, "saleCount": 125, "approxSaleCount": false, "median7d": 410,
"country": {
"DE": {
"avg": 410, "low": 350, "high": 650, "saleCount": 45, "approxSaleCount": false,
"language": {
"EN": { "avg": 432, "low": 380, "high": 650, "saleCount": 18, "approxSaleCount": false }
}
},
"FR": { "avg": 450, "low": 380, "high": 890, "saleCount": 30, "approxSaleCount": false }
}
}
}
},
"MINT": {
"EU": {
"cardmarket_unsold": { "avg": 610, "low": 540, "high": 720, "saleCount": 14, "approxSaleCount": false, "median7d": 600 }
}
},
"AGGREGATED": {
"EU": {
"cardmarket": { "avg": 385, "low": null, "high": null, "avg1d": 380, "avg7d": 375, "avg30d": 370 }
}
}
}
}
}

Get price history for a specific tier

GET /v2/cards/:id/prices/:tier/historyAPI key required

Get historical price data for a specific tier. Add market=US or market=EU to read the linked card's history in that market through the same id (404 when there is no linked card in that market). Each entry includes the source, rolling medians, saleCount, and approxSaleCount. AGGREGATED tier returns avg1d/avg7d/avg30d from Price Trend (no saleCount, null low/high). Condition/graded tiers include per-country breakdowns, with language nested under each country.

Free plan: US history and raw conditions. EU history (also through market=EU) and graded tiers need Pro or higher. Free can request up to 7d, Pro and Growth up to 1y, and period=all (all-time price history) needs Scale or Business; a longer period returns 403 UPGRADE_REQUIRED.
Loading...
GET /v2/cards/:id/prices/:tier/history
curl -H "X-API-Key: YOUR_KEY" "https://api.poketrace.com/v2/cards/019bff77.../prices/PSA_10/history?period=30d"
Example response
{
"data": [
{ "date": "2026-01-27", "source": "ebay", "avg": 5200, "low": 4800, "high": 5600, "saleCount": 3, "approxSaleCount": true, "median3d": 5180, "median7d": 5120, "median30d": 4980 },
{ "date": "2026-01-26", "source": "ebay", "avg": 5150, "low": 4750, "high": 5500, "saleCount": 5, "approxSaleCount": true, "median3d": 5140, "median7d": 5100, "median30d": 4950 }
],
"pagination": { "hasMore": true, "nextCursor": "MjAyNi0wMS0yNQ==", "count": 2 }
}

Get sold eBay listings for a card

GET /v2/cards/:id/listingsAPI key required · Scale or Business plan

Get individual sold eBay listings for a card. Includes graded and raw sales with anomaly detection flags. Rate limited to 30 requests per 30 seconds per account.

Requires the Scale or Business plan. This endpoint is not available on Free, Pro or Growth plans.
Loading...
GET /v2/cards/:id/listings
curl -H "X-API-Key: YOUR_KEY" "https://api.poketrace.com/v2/cards/019bff77.../listings?grader=PSA&grade=10"
Example response
{
"data": [
{
"id": 12345,
"sourceItemId": "123456789012",
"listingType": "sold",
"title": "PSA 10 Charizard Base Set 1999 Pokemon",
"price": 5250.00,
"currency": "USD",
"listingUrl": "https://www.ebay.com/itm/123456789012",
"condition": null,
"grader": "PSA",
"grade": "10",
"soldAt": "2026-01-27T15:30:00Z",
"anomalyFlag": null,
"anomalyReason": null
},
{
"id": 12344,
"sourceItemId": "123456789011",
"listingType": "sold",
"title": "Charizard Base Set NM/M",
"price": 890.00,
"currency": "USD",
"listingUrl": "https://www.ebay.com/itm/123456789011",
"condition": "NEAR_MINT",
"grader": null,
"grade": null,
"soldAt": "2026-01-27T14:20:00Z",
"anomalyFlag": "low_price",
"anomalyReason": "Price 60% below median"
}
],
"pagination": { "hasMore": true, "nextCursor": "MTIzNDM=", "count": 2 }
}