TCG Pricing APIReal-time card prices for 8 trading card games
JSON REST API with TCGPlayer market data, real eBay sold-listing data, and PSA / BGS / CGC graded prices — all in one response.
curl "https://api.tcgpricelookup.com/v1/cards/search?q=charizard&game=pokemon" \
-H "X-API-Key: YOUR_API_KEY"{
"data": [
{
"id": "019535a1-d5d0-7c12-a3e8-b7f4c6d8e9a2",
"tcgplayer_id": 510327,
"name": "Charizard ex",
"number": "006/197",
"rarity": "Double Rare",
"variant": "Standard",
"image_url": "https://cdn.tcgpricelookup.com/pkmn/sv03/006.jpg",
"set": { "slug": "obsidian-flames", "name": "Obsidian Flames" },
"game": { "slug": "pokemon", "name": "Pokemon" },
"prices": {
"raw": {
"near_mint": {
"tcgplayer": { "market": 48.97, "low": 42.50 },
"ebay": { "avg_7d": 50.75 }
}
},
"graded": {
"psa": {
"10": { "ebay": { "avg_7d": 418.50 } }
}
}
},
"updated_at": "2026-02-16T12:00:00Z"
}
],
"total": 47,
"limit": 20,
"offset": 0
}Powering tcgpricelookup.com, a top-ranked TCG price checker.
Everything in one response
One call returns market price, eBay sold-listing data, and graded values across 10 PSA / BGS / CGC grades. No three different APIs.
{
"data": [
{
"id": "019535a1-d5d0-7c12-a3e8-b7f4c6d8e9a2",
"tcgplayer_id": 510327,
"name": "Charizard ex",
"number": "006/197",
"rarity": "Double Rare",
"variant": "Standard",
"image_url": "https://cdn.tcgpricelookup.com/pkmn/sv03/006.jpg",
"set": { "slug": "obsidian-flames", "name": "Obsidian Flames" },
"game": { "slug": "pokemon", "name": "Pokemon" },
"prices": {
"raw": {
"near_mint": {
"tcgplayer": { "market": 48.97, "low": 42.50 },
"ebay": { "avg_7d": 50.75 }
}
},
"graded": {
"psa": {
"10": { "ebay": { "avg_7d": 418.50 } }
}
}
},
"updated_at": "2026-02-16T12:00:00Z"
}
],
"total": 47,
"limit": 20,
"offset": 0
}- ↳ field 1TCGPlayer market price
"market": 48.97 - ↳ field 2Real eBay sold-listing avg
"avg_7d": 50.75 - ↳ field 3PSA / BGS / CGC graded values
"10": { "ebay": { "avg_7d": 418.50 } }
Quickstart in 5 minutes
From signup to your first card lookup, in five steps.
- 1
Sign up for free
Click the Get an API Key button at the top of this page. No credit card. 10 seconds via email or social login.
- 2
Copy your API key
Your key is created and copied to your clipboard with one click. Store it in an environment variable.
export TCG_API_KEY="tk_live_..." - 3
Make your first call
Search any card by name across all 8 supported games.
curl "https://api.tcgpricelookup.com/v1/cards/search?q=charizard&game=pokemon" \ -H "X-API-Key: $TCG_API_KEY" - 4
Parse the response
Every card comes with raw and graded prices in one JSON payload.
const { data } = await res.json(); const card = data[0]; console.log(card.name, card.prices.raw.near_mint.tcgplayer.market); - 5
Build something
You're ready. Build a deck builder, portfolio tracker, marketplace integration, Discord bot — anything that needs live card prices. The same data powering tcgpricelookup.com.
Official open-source tools
Two MIT-licensed packages on npm — a typed JavaScript / TypeScript SDK and a command-line tool — both maintained at github.com/TCG-Price-Lookup.
@tcgpricelookup/sdk
Official TypeScript SDK with full typed responses, auto-chunked batch lookup, typed errors (AuthenticationError, PlanAccessError, RateLimitError, ...) and optional retry-on-429. Native fetch, zero runtime dependencies, ESM + CJS. Works in Node 18+, browsers, Cloudflare Workers, Bun, and Deno.
npm install @tcgpricelookup/sdkimport { TcgLookupClient } from "@tcgpricelookup/sdk";
const tcg = new TcgLookupClient({ apiKey: process.env.TCG_API_KEY });
const { data } = await tcg.cards.search({ q: "charizard", game: "pokemon" });tcglookup
Command-line tool for everyone — collectors, traders, shop owners, anyone who lives in a terminal. Pretty colored tables by default, --json flag for jq pipes, sparkline price-history, friendly typed errors with stable exit codes. Stores your key safely under XDG_CONFIG_HOME with file mode 600.
npm install -g tcglookup# one-time
tcglookup auth login
# every day
tcglookup search "charizard" --game pokemon
tcglookup history <card-id> --period 30d
tcglookup sets pokemonBoth packages are MIT-licensed. Issues, pull requests, and feature requests are welcome at the org — github.com/TCG-Price-Lookup.
What's included
Every endpoint, field, and feature included with the API.
- Real-time TCGPlayer market, low, mid, high prices
- eBay sold-listing data (7d / 30d averages) — Trader plan and above
- PSA, BGS, CGC graded prices, grades 1–10 — Trader plan and above
- Batch lookup via search?ids= for portfolios and watchlists
- Per-condition pricing (Near Mint → Damaged)
- Price history endpoints — Trader plan and above
- Search by name, set, rarity, ID
- 8 games: Pokemon, Pokemon JP, MTG, Yu-Gi-Oh!, One Piece, Lorcana, SWU, FAB
- JSON REST over HTTPS
- X-RateLimit-* headers for proactive backoff
- Free tier, no credit card
- Commercial license available
Endpoints
Five REST endpoints covering search, card details, price history, sets, and games. Batch lookup is built into the search endpoint.
/v1/cards/searchSearch cards
Full-text search across all 8 supported games. Filter by name, set, or game. Batch lookup by passing a comma-separated list of card IDs via the ids parameter.
curl "https://api.tcgpricelookup.com/v1/cards/search?q=charizard&game=pokemon" \
-H "X-API-Key: YOUR_API_KEY"/v1/cards/{id}Single card details
Get the full data for one card by ID, including all conditions, all graded values, and metadata.
curl "https://api.tcgpricelookup.com/v1/cards/019535a1-d5d0-7c12-a3e8-b7f4c6d8e9a2" \
-H "X-API-Key: YOUR_API_KEY"/v1/cards/{id}/historyPrice history
Historical price points for any card. Daily granularity. Track market trends, build charts. Trader plan and above.
curl "https://api.tcgpricelookup.com/v1/cards/{id}/history?period=30d" \
-H "X-API-Key: YOUR_API_KEY"/v1/setsBrowse sets
List every set across all games, or filter by game with the game query parameter. Includes release date, card count, and set slug.
curl "https://api.tcgpricelookup.com/v1/sets?game=pokemon" \
-H "X-API-Key: YOUR_API_KEY"/v1/gamesList games
Get every supported trading card game with its slug and catalog size. Use the slug to filter search and sets queries.
curl "https://api.tcgpricelookup.com/v1/games" \
-H "X-API-Key: YOUR_API_KEY"Code recipes
Common things developers build with the TCG Pricing API. Copy, paste, run.
Track price changes for a watchlist
Poll multiple cards in one request with the search endpoint's ids parameter, store today's prices, diff against yesterday's snapshot.
curl "https://api.tcgpricelookup.com/v1/cards/search?ids=ID1,ID2,ID3" \
-H "X-API-Key: $TCG_API_KEY"Calculate the value of a card collection
Sum the market price of every card in a portfolio. Pass all card IDs through the search endpoint and reduce over the response.
curl "https://api.tcgpricelookup.com/v1/cards/search?ids=$(cat ids.txt | paste -sd ,)" \
-H "X-API-Key: $TCG_API_KEY" | jq '[.data[].prices.raw.near_mint.tcgplayer.market] | add'Poll a card for live price updates
Refresh a card's market price on a 30-second loop. Good for active watchlists without needing a streaming transport.
while true; do
curl -s "https://api.tcgpricelookup.com/v1/cards/$CARD_ID" \
-H "X-API-Key: $TCG_API_KEY" | jq '.prices.raw.near_mint.tcgplayer.market'
sleep 30
doneCompare raw vs PSA 10 prices for grading premium
Show how much a graded slab is worth over the raw card. Useful for grading ROI calculators. Requires the Trader plan or above for graded data.
curl "https://api.tcgpricelookup.com/v1/cards/{id}" \
-H "X-API-Key: $TCG_API_KEY" | \
jq '{ raw: .prices.raw.near_mint.tcgplayer.market,
psa10: .prices.graded.psa["10"].ebay.avg_7d }'Get all foil cards from a Pokemon set
Filter the search endpoint by set + variant. Returns every foil printing in the set with prices.
curl "https://api.tcgpricelookup.com/v1/cards/search?game=pokemon&set=obsidian-flames&variant=foil&limit=100" \
-H "X-API-Key: $TCG_API_KEY"Build a 30-day price history chart
Pull daily price points for the last 30 days and plot them. The history endpoint returns date-indexed market values. Trader plan and above.
curl "https://api.tcgpricelookup.com/v1/cards/{id}/history?period=30d" \
-H "X-API-Key: $TCG_API_KEY"What you can build
Six things developers actually build with the TCG Pricing API.
Deck builder app
Build a deck builder for any TCG with live market prices on every card. Show the deck cost in real time as users add cards.
/cards/search/cards/search?ids=Portfolio tracker
Let collectors track the value of their collection over time. Pull batched prices nightly via search?ids=, store snapshots, chart trends.
/cards/search?ids=/cards/{id}/historyMarketplace integration
Power auto-pricing for a card marketplace. Pull TCGPlayer + eBay sold-listing data and suggest competitive listing prices.
/cards/search/cards/{id}Investment analytics
Slab-grading ROI calculators, portfolio performance vs market index, raw-vs-graded premium analysis. PSA/BGS/CGC data is included.
/cards/{id}/cards/{id}/historyDiscord / Twitch bot
Build a /price <card> command for any TCG community. One API key, one HTTP call, every game supported out of the box.
/cards/searchInventory management
Local card shop POS, online inventory sync, eBay listing automation. Batch up to 20 IDs per search?ids= call and chunk larger inventories.
/cards/search?ids=/cards/{id}Every game, one API
Eight TCGs indexed deeply. One auth header, one base URL, one JSON shape across all of them.
Largest community. Hot graded market. PSA 10 premiums on every card.
Japanese-exclusive sets, often appreciating before Western release.
Deepest catalog, 100k+ cards. Reserved list, formats, every printing.
Tournament meta moves prices fast. Refresh frequently to catch swings.
Newest hot TCG. Set releases drive aggressive price swings.
Disney IP, growing fast. New sets every quarter.
Star Wars Unlimited. Early in its lifecycle, low coverage elsewhere.
Flesh and Blood. Premium prints, low-supply specialty cards.
Built for developers
REST over HTTPS
Plain JSON endpoints you can hit with any HTTP client. Poll on your own cadence, or use our recommended refresh windows.
JSON-first
Clean, predictable response shapes. Every field is documented. No XML, no surprises.
Stable versioned endpoints
All endpoints live under /v1/. Breaking changes go to /v2/, never to existing routes.
Build it yourself or use the API
What it really takes to scrape TCG prices yourself, vs what the API gives you out of the box.
Plans
Free tier with no credit card. Commercial license on paid plans.
Free
200 requests / day · non-commercial
- 200 requests / day
- Standard rate limits
- All supported games
- Raw condition prices
- TCGPlayer prices
- Non-commercial use
- Community support
Trader
10,000 requests / day · commercial use
- 10,000 requests / day
- High rate limits
- All supported games
- All raw conditions
- TCGPlayer + eBay prices
- Graded prices (PSA/BGS/CGC)
- Price history & trends
- Commercial use
- Email support
Business
100,000 requests / day · commercial use
- 100,000 requests / day
- Higher rate limits
- All supported games
- Everything in Trader
- Priority support
- Custom integrations
- Potential partnership
What is a TCG pricing API?
Background, sourcing, and what you get instead of scraping it yourself.
A TCG pricing API is a programmatic way to fetch live trading card prices — market value, recent sales, condition-by-condition pricing, and graded slab values — without scraping the underlying marketplaces yourself. Apps, marketplaces, deck builders, portfolio trackers, and tournament tools all need fresh card prices, and a pricing API is what makes that practical at scale.
Where the prices come from
Card prices live in two main places: marketplace listings (where the cards are actively for sale) and sold-listing history (what they actually transacted at). The TCG Price Lookup API combines both. For every card, you get TCGPlayer market, low, mid, and high prices in every condition from Near Mint to Damaged, plus eBay sold-listing averages over rolling 7- and 30-day windows. For graded cards, you get PSA, BGS, and CGC values across grades 1 through 10, sourced from real sold slabs — not estimates.
Why “current price” is harder than it looks
Pricing a single card is genuinely complicated. The same card can have a dozen variants (1st edition, shadowless, holo, reverse holo, promo printings), eight conditions, and three or four grading companies each with ten grades. Multiply that across a 300,000+ card catalog spanning eight games, and you have a normalization problem that takes months to solve from scratch. The API gives you the normalized output: one canonical card record, every variant, every condition, every grade, in one JSON response.
What you avoid by using an API instead of scraping
Rolling your own scraper means standing up proxy infrastructure, solving captchas, parsing HTML that breaks every few weeks, handling rate limits that get aggressive when you exceed them, and reconciling condition strings (“LP”, “Lightly Played”, “light play”, “NM-”) into a single canonical scheme. That’s before you even touch graded data, where certified populations and sold-slab averages live across separate sites with their own anti-bot measures. Most teams that try this find the data layer ends up costing more developer time than the product they were trying to ship.
Who uses a TCG pricing API
Independent developers building deck builders and portfolio trackers, TCG marketplaces auto-pricing inventory, local card shops syncing prices across their POS and online listings, investment analytics platforms tracking grading premiums, Discord and Twitch bots answering “what is this card worth” in chat, and researchers studying secondary-market dynamics. The common thread is needing fresh prices on demand, across multiple games, without building (and maintaining) the data pipeline themselves.
How fresh is the data
Marketplace prices and sold-listing averages refresh continuously throughout the day. Card metadata and new set additions are updated as releases hit. The same data feeds tcgpricelookup.com, which is used directly by collectors every day — so the freshness bar is set by real consumer expectations, not API tier marketing.
Frequently asked questions
Common questions about the TCG Pricing API.
Glossary
Trading card and API terms used throughout this site.
- TCGPlayer market price
- The algorithmic average sale price for a card on TCGPlayer, weighted by recent transactions. The closest thing the hobby has to a single canonical 'current price' for raw cards.
- Low / Mid / High prices
- The lowest, median, and highest active listings for a card on TCGPlayer. Useful for showing the price range a buyer or seller can expect.
- eBay sold-listing average
- The average actual sale price across recent eBay sold listings for a card. Reflects what buyers really paid, not what sellers are asking. The API exposes 7-day and 30-day rolling averages.
- Near Mint / Lightly Played / Moderately Played / Heavily Played / Damaged
- Standard condition tiers used to grade raw (un-slabbed) trading cards. Each condition prices independently — Near Mint is the most valuable for the same card.
- Foil / Holo / Reverse Holo
- Card variants with reflective treatments. Holo refers to the picture area; reverse holo to the card's background. Foils almost always trade at a premium over non-foil printings.
- Raw card
- A trading card that has not been graded or encapsulated by a third-party grading service. Sold by condition (Near Mint to Damaged).
- Graded card / Slab
- A card that has been authenticated, graded on a 1–10 scale, and sealed in a tamper-evident plastic case ('slab') by a grading company like PSA, BGS, or CGC. Graded cards are priced separately from raw cards and almost always at a premium.
- PSA / BGS / CGC
- The three major third-party grading services for trading cards. PSA (Professional Sports Authenticator) and BGS (Beckett Grading Services) are the longest-established; CGC (Certified Guaranty Company) entered TCG grading more recently. The TCG Price Lookup API returns values from all three.
- Grading premium
- The price difference between a raw card and the same card in a high grade (typically PSA 10). For chase cards, the premium can be 5–20×, which is what makes grading economically interesting.
- Set / Expansion
- A batch of cards released together as a product line. Most TCGs ship multiple sets per year. Each card in the API has a `set_name` and `set_slug` so you can filter by set.
- 1st Edition / Unlimited / Shadowless
- Pokemon-specific printing variants. 1st Edition cards are the very first print run of a set; Unlimited is the later wide release; Shadowless refers to a very early Base Set printing without the drop shadow on the card art. Each variant prices independently.
- REST API
- An architectural style for web APIs where each resource (cards, sets, prices) has a stable URL and standard HTTP verbs (GET, POST) operate on it. The TCG Price Lookup API is REST over HTTPS, returning JSON.
- Batch lookup
- Fetching many cards in one request by passing a comma-separated list of IDs to /v1/cards/search via the ids parameter. Used for portfolio refreshes, watchlists, and inventory syncs. Up to 20 IDs per call.
- Rate limit
- The maximum number of API requests you can make in a given time window. The TCG Price Lookup API publishes per-tier daily quotas and returns X-RateLimit-Limit and X-RateLimit-Remaining headers so your app can back off proactively.
- API key
- A secret token that authenticates your requests. You get one for free at sign-up. Pass it in the X-API-Key header on every request, and never expose it in client-side code.