Historical pricing
Pokemon Card Price History API
| Period | Tier | Plan |
|---|---|---|
7d, 30d, 90d, 1y, all Default is 7d; request longer windows explicitly. | Raw or graded Examples: NEAR_MINT, PSA_10, BGS_9_5, AGGREGATED. | Pro+ History is gated; EU and graded tiers also require plan access. |
Endpoint
GET /cards/:id/prices/:tier/history
curl -H "X-API-Key: YOUR_KEY" \
"https://api.poketrace.com/v1/cards/019bff77.../prices/PSA_10/history?period=30d&limit=30"Returns dated rows grouped by source with avg, low, high, sale counts, rolling medians, optional EU breakdowns, and cursor pagination.
- Price history requires Pro or higher.
- EU card history requires EU market access.
- Graded tiers such as PSA_10 and BGS_9_5 require graded data access.
Parameters
Path Parameters
id string | PokeTrace card ID from /cards or /cards/:id. 019bff77-befa-771d-bab0-f5909f0a78c9 |
tier string | Raw condition, graded tier, or EU aggregate tier. PSA_10 |
Query Parameters
period enum | History window. Supported values are 7d, 30d, 90d, 1y, and all. 30d |
limit number | Number of dated rows to return. Max 365, default 30. 30 |
cursor string | Pagination cursor from pagination.nextCursor. MjAyNi0wMS0yNQ== |
Response fields
History Row
Core fields returned for US and EU history rows.
date string | ISO date for the price row. 2026-01-27 |
source string | Price source. Common values: ebay, tcgplayer, cardmarket, cardmarket_unsold. ebay |
avg number | null | Main price value for the row. For EU active listings this may be a weighted median after grouping source/date rows. 5200 |
low / high number | null | Lowest and highest observed value for the row. AGGREGATED CardMarket rows can return null. 4800 / 5600 |
saleCount number | null | Observed sale/listing count where the source supports it. 3 |
approxSaleCount boolean | True for sources where sold-listing counts can change after ingestion, currently eBay. true |
Trend and Breakdown Fields
Additional fields used for smoother charts and EU marketplace analysis.
median3d / median7d / median30d number | null | Rolling medians calculated from individual listings with anomalies excluded. 5120 |
avg1d / avg7d / avg30d number | null | CardMarket Price Trend averages for AGGREGATED rows. 375 |
country object | EU seller-country breakdown on condition and graded tiers. country.DE.avg |
language object | Language breakdown. Usually nested under country; top-level language can appear when country is missing. country.DE.language.EN.avg |
pagination object | hasMore, nextCursor, and count. Rows sharing the final date can be kept together across sources. { hasMore, nextCursor, count } |
Examples
const response = await fetch(
"https://api.poketrace.com/v1/cards/019bff77.../prices/PSA_10/history?period=30d&limit=30",
{ headers: { "X-API-Key": process.env.POKETRACE_API_KEY } },
)
const history = await response.json()
const chartPoints = history.data.map((row) => ({
x: row.date,
y: row.median7d ?? row.avg,
})){
"data": [{
"date": "2026-01-27",
"source": "cardmarket",
"avg": 385,
"low": null,
"high": null,
"avg1d": 380,
"avg7d": 375,
"avg30d": 370
}],
"pagination": { "hasMore": false, "nextCursor": null, "count": 1 }
}When to Use It
Use /cards for search and current prices. Use price history only after the user opens one card and asks for a chart, alert threshold, valuation audit, or tier trend.
Source Behavior
US cards can return eBay sold-listing rows and TCGPlayer raw-condition rows. EU cards keep CardMarket Price Trend separate from CardMarket active-listing summaries.
Charting Rule
For noisy sold-listing sources, chart median7d or median30d when present and keep avg available as the raw daily signal.
Frequently asked questions
Can I request PSA 10 Pokemon card price history?
Yes. Use the card ID and tier PSA_10 on /cards/:id/prices/:tier/history. Half grades use underscores, for example BGS_9_5.
How is CardMarket history different from eBay history?
CardMarket AGGREGATED rows are Price Trend style values without saleCount, while cardmarket_unsold rows are active-listing summaries that can include condition, grade, country, and language breakdowns.