The pricing API for every trading card game
Daily-updated market prices for Pokemon, Magic: The Gathering, Yu-Gi-Oh!, and 50+ more games. One API, every card.
Live catalog prices as of Sep 28, 2026. Each printing is priced separately.
$ curl "https://api.tcgapi.dev/v1/cards/20463/prices" \ -H "X-API-Key: $TCGAPI_KEY" HTTP/2 200 { "data": [ { "card_id": 20463, "printing": "Holofoil", "game_id": 55, "set_id": 5500138, "market_price": 99.38, "low_price": 60, "median_price": 109.99, "lowest_with_shipping": 60.19, "buylist_price": null, "price_change_24h": 1.04, "price_change_7d": 0.35, "price_change_30d": -8.48, "last_updated_at": "2026-09-28T03:25:07.321Z", "missing_since": null, "card_name": "Charizard ex - 223/197", "tcgplayer_id": 509980, "foil_only": 1, "sales_volume": 2, "avg_sales_price": 97.46, "sales_as_of": "2026-09-26" } ] }
Everything you need to build with TCG data
A single API that gives you access to pricing, catalog data, and search across every major trading card game.
Universal Coverage
Every game on TCGPlayer — Pokemon, Magic, Yu-Gi-Oh!, One Piece, Lorcana, and 50+ more.
GET /v1/games Daily-Updated Prices
Market, low, and foil prices refreshed daily, with per-condition pricing (NM to Damaged) on every game. Price change tracking over 24h, 7d, and 30d.
GET /v1/cards/{id}/prices Developer-First
Clean REST API with JSON responses, pagination, search, and filtering. Works with any language.
GET /v1/search Price History
Historical price data for trend analysis and portfolio tracking. Pro and Business plans.
GET /v1/cards/{id}/history Bulk Endpoints
Fetch thousands of prices in a single request. Perfect for inventory management and storefronts.
GET /v1/bulk/prices Reliable & Fast
99.9% uptime on Cloudflare's global edge network. Sub-100ms response times worldwide.
api.tcgapi.dev No signup? Pay per request with USDC.
Every paid endpoint accepts x402 micropayments on Base or Solana. An agent with a USDC balance calls the API without an account, subscription, or API key — from $0.005 per call, settlement on-chain.
Simple, powerful API
Get started in minutes with any language. Clean JSON responses with everything you need.
curl "https://api.tcgapi.dev/v1/search?q=charizard&game=pokemon&per_page=1" \ -H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://api.tcgapi.dev/v1/search?q=charizard&game=pokemon&per_page=1",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.data[0].name); // "Charizard" import requests
res = requests.get(
"https://api.tcgapi.dev/v1/search",
params={"q": "charizard", "game": "pokemon", "per_page": 1},
headers={"X-API-Key": "YOUR_API_KEY"}
)
data = res.json()
print(data["data"][0]["name"]) # "Charizard" curl "https://api.tcgapi.dev/v1/cards/20463/prices" \ -H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://api.tcgapi.dev/v1/cards/20463/prices",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data } = await res.json();
console.log(data[0].median_price); // 109.99 import requests
res = requests.get(
"https://api.tcgapi.dev/v1/cards/20463/prices",
headers={"X-API-Key": "YOUR_API_KEY"}
)
data = res.json()["data"]
print(data[0]["median_price"]) # 109.99 curl "https://api.tcgapi.dev/v1/cards/20463/history?range=month&printing=Holofoil" \ -H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://api.tcgapi.dev/v1/cards/20463/history?range=month&printing=Holofoil",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data } = await res.json();
console.log(data.length); // 31 daily points import requests
res = requests.get(
"https://api.tcgapi.dev/v1/cards/20463/history",
params={"range": "month", "printing": "Holofoil"},
headers={"X-API-Key": "YOUR_API_KEY"}
)
data = res.json()["data"]
print(len(data)) # 31 daily points {
"data": [
{
"id": 21939,
"name": "Charizard",
"clean_name": "charizard",
"number": "025/185",
"rarity": "Rare",
"tcgplayer_id": 226395,
"product_type": "Cards",
"foil_only": 0,
"total_listings": 452,
"shipping_category_id": 1,
"game_name": "Pokemon",
"game_slug": "pokemon",
"set_name": "SWSH04: Vivid Voltage",
"printing": "Normal",
"market_price": 3.55,
"low_price": 1.7,
"median_price": 4,
"lowest_with_shipping": 1.85,
"price_updated_at": "2026-09-28T03:27:38.812Z",
"image_url": "https://product-images.tcgplayer.com/fit-in/400x400/226395.jpg"
}
],
"meta": { "total": 297, "page": 1, "per_page": 1, "has_more": true }
} {
"data": [
{
"card_id": 20463,
"printing": "Holofoil",
"game_id": 55,
"set_id": 5500138,
"market_price": 99.38,
"low_price": 60,
"median_price": 109.99,
"lowest_with_shipping": 60.19,
"buylist_price": null,
"price_change_24h": 1.04,
"price_change_7d": 0.35,
"price_change_30d": -8.48,
"last_updated_at": "2026-09-28T03:25:07.321Z",
"missing_since": null,
"card_name": "Charizard ex - 223/197",
"tcgplayer_id": 509980,
"foil_only": 1,
"sales_volume": 2,
"avg_sales_price": 97.46,
"sales_as_of": "2026-09-26"
}
]
} {
"data": [
{
"date": "2026-08-29",
"printing": "Holofoil",
"market_price": 108.59,
"low_price": null,
"avg_sales_price": 79.97,
"sales_volume": 3
},
{
"date": "2026-08-30",
"printing": "Holofoil",
"market_price": 109.11,
"low_price": null,
"avg_sales_price": 92.97,
"sales_volume": 8
},
{
"date": "2026-08-31",
"printing": "Holofoil",
"market_price": 108.5,
"low_price": 68.77,
"avg_sales_price": 101.99,
"sales_volume": 3
},
… 26 more days …
{
"date": "2026-09-27",
"printing": "Holofoil",
"market_price": 98.36,
"low_price": 60,
"avg_sales_price": null,
"sales_volume": null
},
{
"date": "2026-09-28",
"printing": "Holofoil",
"market_price": 99.38,
"low_price": 60,
"avg_sales_price": null,
"sales_volume": null
}
],
"meta": { "total": 31 }
} Prices are recorded daily. Sales (avg_sales_price, sales_volume) come from a separate per-card pull — daily for daily-refresh games, every 3 days for the rest — so the newest day or two can be null until it runs. null = not recorded yet; 0 = no sales.
Every game, one API
57 trading card games covered and growing. If it's on TCGPlayer, it's in our API — see how we compare as a TCGPlayer API alternative .
Simple, transparent pricing
Start free, upgrade when you're ready. No hidden fees, no surprises.
Free
For testing and evaluating
- 100 requests/day
- All games & sets
- Card search
- Current prices
- 7-day price history
Non-commercial use only
Get Started FreeHobby
For personal projects
- 1,000 requests/day
- 30-day price history
- All games & sets
- Email support
Non-commercial use
Start HobbyStarter
For small apps and stores
- 2,500 requests/day
- 90-day price history
- Set price dumps
- Email support
Non-commercial use
Start StarterPro
For apps and businesses
- 10,000 requests/day
- Full price history
- Per-condition pricing (NM/LP/MP)
- Bulk endpoints & export
- Commercial use license
Business
For high-volume commercial use
- 50,000 requests/day
- Full price history
- Per-condition pricing (NM/LP/MP)
- Bulk endpoints & export
- Commercial use license
All plans include access to all games and sets. See full plan comparison
For AI agents: pay per request in USDC on Base or Solana — no account needed, from $0.005/call. Learn about x402 →
Frequently asked questions
What games does TCG API cover?
We cover every trading card game available on TCGPlayer — all 57 games including Pokemon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood, and many more.
How often are prices updated?
Prices for the top 9 games (Pokemon, Pokemon Japan, Magic, Yu-Gi-Oh!, Weiss Schwarz, Lorcana, Flesh and Blood, One Piece, and Riftbound) are refreshed daily. All other games are updated every 3 days.
Do I need a credit card to start?
No! The free tier gives you 100 requests per day with no credit card required. You can upgrade to a paid plan anytime from your dashboard.
Can I use this for commercial purposes?
The Free, Hobby, and Starter plans are for personal and non-commercial use. The Pro ($49.99/mo) and Business ($99.99/mo) plans include a commercial use license for storefronts, apps, and other commercial projects.
What data is included in the API?
You get card names, set information, rarity, market prices, lowest prices, foil prices, price change tracking (24h/7d/30d), and more. Pro and Business plans also include price history data.
How far back does price history go?
Price history data starts from March 2025 with weekly data points for all cards with a market price of $1 or more. Coverage grows over time as new data points are added daily. Current prices are refreshed daily for the top 9 games and every 3 days for all others.
Is there rate limiting?
Yes, each plan has a daily request limit (100/day free, 1K Hobby, 2.5K Starter, 10K Pro, 50K Business). See our rate limits guide for details.
Where can I get support?
Free users can get help via our Discord community. Pro and Business users get email support at thetcgapi@proton.me with priority response times.
Ready to build with TCG data?
Get your free API key in seconds. No credit card required. Start building your TCG app today.