Cards API — Card Data, Sealed Products & Prices
Card endpoints return card metadata, pricing data per printing type, and sealed product information.
Get Card by ID
Section titled “Get Card by ID”GET /v1/cards/:idAuthentication: API key required
Example:
curl "https://api.tcgapi.dev/v1/cards/12345" \ -H "X-API-Key: YOUR_KEY"Response:
{ "data": { "id": 12345, "name": "Charizard ex", "clean_name": "charizard ex", "number": "006", "rarity": "Double Rare", "image_url": "https://tcgplayer-cdn.tcgplayer.com/product/...", "tcgplayer_id": 534280, "tcgplayer_url": "https://www.tcgplayer.com/product/534280", "product_type": "Cards", "foil_only": 0, "total_listings": 847, "shipping_category_id": 1, "product_status_id": 1, "hp": "330", "custom_attributes": { "stage": "Stage 2", "energyType": ["Fire"], "weakness": "Wx2", "retreatCost": "3", "attack1": "[1RR] Brave Wing (100)", "attack2": "[1RRR] Burning Dark (180)" }, "set_id": 1234, "set_name": "Obsidian Flames", "game_id": 55, "game_name": "Pokemon" }}Get Card by TCGPlayer ID
Section titled “Get Card by TCGPlayer ID”If you have a TCGPlayer product ID, look up the card directly:
GET /v1/cards/tcgplayer/:tcgplayerIdAuthentication: API key required
Example:
curl "https://api.tcgapi.dev/v1/cards/tcgplayer/534280" \ -H "X-API-Key: YOUR_KEY"Returns the card with all price data per printing type:
{ "data": { "id": 12345, "name": "Charizard ex", "foil_only": 0, "prices": [ { "printing": "Normal", "market_price": 24.99, "low_price": 19.50, "median_price": 26.50, "lowest_with_shipping": 20.99, "buylist_price": 18.00, "price_change_24h": 2.15, "last_updated_at": "2026-02-19T07:00:00.000Z" }, { "printing": "Foil", "market_price": 42.50, "low_price": 35.00, "median_price": 45.00, "lowest_with_shipping": 37.99, "buylist_price": null, "price_change_24h": 5.30, "last_updated_at": "2026-02-19T07:00:00.000Z" } ] }}Get Card Prices
Section titled “Get Card Prices”GET /v1/cards/:id/pricesAuthentication: API key required
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
printing | string | Filter by Normal or Foil (optional) |
Returns price data for all available printing types:
{ "data": [ { "card_id": 12345, "printing": "Normal", "market_price": 24.99, "low_price": 19.50, "median_price": 26.50, "lowest_with_shipping": 20.99, "buylist_price": 18.00, "price_change_24h": 2.15, "price_change_7d": -5.30, "price_change_30d": 12.00, "last_updated_at": "2026-02-19T07:00:00.000Z" } ]}If a card has only one printing type, a single object is returned instead of an array.
Get Per-Condition Prices
Section titled “Get Per-Condition Prices”GET /v1/cards/:id/prices/conditionsAuthentication: API key required (Pro tier or higher)
Card condition pricing broken out by grade — Near Mint, Lightly Played, Moderately Played, Heavily Played, and Damaged — per printing, computed from live TCGPlayer listings. Available for every card across all 89+ supported games.
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
printing | string | Filter to one printing, e.g. Normal or Holofoil (optional) |
Example:
curl "https://api.tcgapi.dev/v1/cards/12345/prices/conditions" \ -H "X-API-Key: YOUR_KEY"Response:
{ "data": [ { "card_id": 12345, "printing": "Holofoil", "condition": "Near Mint", "language": "English", "low_price": 1.38, "lowest_with_shipping": 2.87, "median_with_shipping": 3.10, "sample_count": 41, "last_updated_at": "2026-07-24T13:32:17.078Z" }, { "card_id": 12345, "printing": "Holofoil", "condition": "Lightly Played", "language": "English", "low_price": 0.99, "lowest_with_shipping": 2.48, "median_with_shipping": 3.13, "sample_count": 9, "last_updated_at": "2026-07-24T13:32:17.078Z" } ], "meta": { "cached": true, "as_of": "2026-07-24T13:32:17.078Z" }}Field notes:
low_price— lowest listed item price for that printing + condition.lowest_with_shipping— lowest listed price including shipping.median_with_shipping— median of the sampled shipping-inclusive prices;nullwhen fewer than 3 listings were sampled. Prefer this overlow_pricewhen pricing inventory — it is robust against $0.01 junk listings.sample_count— listings sampled for that row, not total market depth.
Freshness: the whole catalog is refreshed nightly. If a card’s rows are older than 24 hours, your request triggers a live refresh from TCGPlayer, bounded by a daily per-account quota (Pro: 200, Business: 1,000 live refreshes/day — cached reads are unlimited). Over quota, the newest cached rows are served with meta.stale: true; a card with no cached rows returns 429 LIVE_FETCH_LIMIT. Live-refreshed responses also include meta.condition_counts — total live listings per condition across all printings.
Get Card Price History
Section titled “Get Card Price History”GET /v1/cards/:id/historyAuthentication: API key required (Pro tier)
Data coverage: History is available for all cards with a market price of $1 or more across all supported games. Data starts from March 2025 with weekly data points, and coverage grows over time as new data is added daily.
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
range | string | month, quarter, year, or all (default: month). all returns the complete history available for your tier. |
printing | string | Filter by Normal or Foil (optional) |
Example:
curl "https://api.tcgapi.dev/v1/cards/12345/history?range=month&printing=Normal" \ -H "X-API-Key: YOUR_PRO_KEY"Response:
{ "data": [ { "date": "2026-02-19", "printing": "Normal", "market_price": 24.99, "low_price": 19.50, "avg_sales_price": 23.50, "sales_volume": 12 }, { "date": "2026-02-18", "printing": "Normal", "market_price": 24.47, "low_price": 19.25, "avg_sales_price": 22.80, "sales_volume": 8 } ]}Get Detailed Price History
Section titled “Get Detailed Price History”GET /v1/cards/:id/history/detailedAuthentication: API key required (Business tier)
Returns full history without date range limit. Includes all printing types, average sales prices, and daily sales volume.
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
printing | string | Filter by Normal or Foil (optional) |
Card Data Fields
Section titled “Card Data Fields”| Field | Type | Description |
|---|---|---|
product_type | string | Cards or Sealed Products |
foil_only | integer | 1 if card only exists as foil/holo |
total_listings | integer | Number of active seller listings |
shipping_category_id | integer | 1=card, 3=box, 4=case |
product_status_id | integer | 1=active, 20=presale |
custom_attributes | object | Game-specific data (see below) |
Custom Attributes by Game
Section titled “Custom Attributes by Game”Pokemon: stage, energyType, hp, weakness, resistance, retreatCost, attack1-attack4, cardType, flavorText
Magic: The Gathering: color, manaCost, power, toughness, cardType, subType, flavorText, oracleText
Yu-Gi-Oh!: cardType, attribute, level, attack, defense, description