TCGplayer API
TCGplayer card and sealed product data as structured JSON: market price for every condition and printing, up to a year of price history with copies sold, the latest sales, whole-set price guides, every live listing, and seller profiles, feedback and catalogues, across Pokemon, Magic, Yu-Gi-Oh!, One Piece, Lorcana and 66 more product lines.
50 free credits on signup, 50 TCGplayer calls. No card, no TCGplayer developer key.
{ "data": { "query": "charizard", "game": "pokemon", "set": null, "rarity": null, "product_type": null, "total_results": 382, "page": 1, "limit": 10, "sort": "relevance", "count": 10, "has_more": true, "duplicates_removed": 0, "products": [ { "product_id": 654213, "name": "Mega Charizard X ex Ultra Premium Collection", "url": "https://www.tcgplayer.com/product/654213/pokemon-miscellaneous-cards-and-products-mega-charizard-x-ex-ultra-premium-collection", "image_url": "https://tcgplayer-cdn.tcgplayer.com/product/654213_in_400x400.jpg", "game": "Pokemon", "game_id": 3, "set_name": "Miscellaneous Cards & Products", "set_code": "MCAP", "set_id": 2374, "number": null, "rarity": null, "product_type": null, "sealed": null, "foil_only": false, "release_date": null, "market_price": 211.28, "median_price": 270, "lowest_price": 3, "lowest_price_with_shipping": 216.98, "listing_count": 231, "listings": [ { "listing_id": 4494491, "price": 7.99, "shipping_price": 0, "total_price": 7.99, "quantity": 96, "condition": "Unopened", "printing": "Normal", "language": "English", "language_code": "EN", "listing_type": "custom", "direct_listing": false, "custom_title": "Set of 60 dice", "custom_description": null, "photo_count": 1, "listed_at": "2026-05-02T21:04:29.947Z", "seller": "… (trimmed for preview)" }, "… 2 more (trimmed for preview)" ] }, "… 9 more (trimmed for preview)" ], "facets": { "card_type": [ { "value": "Pokemon", "url_value": "Pokemon", "count": 215, "active": false }, "… 4 more (trimmed for preview)" ], "energy_type": [ { "value": "Fire", "url_value": "Fire", "count": 160, "active": false }, "… 3 more (trimmed for preview)" ], "rarity": [ { "value": "Promo", "url_value": "Promo", "count": 114, "active": false }, "… 15 more (trimmed for preview)" ], "set": [ { "value": "Battle Academy", "url_value": "battle-academy", "count": 61, "active": false }, "… 68 more (trimmed for preview)" ], "product_type": [ { "value": "Cards", "url_value": "Cards", "count": 255, "active": false }, "… 1 more (trimmed for preview)" ], "game": [ { "value": "Pokemon", "url_value": "pokemon", "count": 382, "active": true }, "… 7 more (trimmed for preview)" ], "seller_country": [ { "value": "US", "url_value": "US", "count": 1017, "active": false }, "… 1 more (trimmed for preview)" ], "condition": [ { "value": "Unopened", "url_value": "Unopened", "count": 895, "active": false }, "… 5 more (trimmed for preview)" ], "language": [ { "value": "English", "url_value": "English", "count": 1791, "active": false } ], "printing": [ { "value": "Normal", "url_value": "Normal", "count": 1106, "active": false }, "… 1 more (trimmed for preview)" ] } }, "response_time": 2512}Live calls against the real endpoints. 3 free runs across every tab, then it's your own key.
What is the Scavio TCGplayer API?
The Scavio TCGplayer API is a REST API that returns tcgplayer.com (US marketplace, USD) data as structured JSON, available while TCGplayer's own API is closed to new developers. Its 13 POST endpoints cover search, product detail with market price per condition and printing, live listings, price history with sold volume, the 5 latest sales, games, sets, set price guides, suggestions, trending searches, and seller profiles, feedback and catalogues. Every call costs 1 credit.
- 13
- endpoints, all live in production
- 1
- credit per call, every endpoint
- 71
- games and product lines, Pokemon to Lorcana
The TCGplayer data buyers actually need
What a card is worth in each condition and printing, how many copies sell, and who is selling it.
Market price by condition and printing
POST /api/v1/tcgplayer/productEvery SKU of a card, condition x printing x language, with its market price and the sale range behind it. The Charizard 3/70 promo was $7.09 Near Mint (25 sales, $6.00-$9.99) and $4.79 Damaged.
A year of price history and sold volume
POST /api/v1/tcgplayer/price-historyPer SKU, per day or week: market price, copies sold, transactions and the low and high sale. The same Charizard sold 100 copies in 93 transactions over the last month.
The last 5 sales
POST /api/v1/tcgplayer/salesDate, condition, printing, quantity, price and shipping of the newest sales. The newest Charizard sale was Near Mint at $9.99 plus $1.22 shipping on 2026-11-08.
A whole set's price guide
POST /api/v1/tcgplayer/price-guideUp to 500 rows per call, one per card per condition and printing, cards or sealed. Pokemon Base Set had 505 card rows.
Every listing, every seller
POST /api/v1/tcgplayer/listingsLive offers with price plus shipping, condition, printing and language, and the seller's rating, sales and Gold Star. Lightning Bolt had 98 Near Mint listings.
71 games, every set
POST /api/v1/tcgplayer/gamesPokemon, Magic, Yu-Gi-Oh!, One Piece, Lorcana, Pokemon Japan and 65 more product lines, each with every set newest first: 221 for Pokemon, 457 for Magic.
All 13 TCGplayer API endpoints
Every route is a POST, returns JSON, and takes the same API key. 1 credit per successful call; errors are not charged.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/tcgplayer/search | Cards and sealed products across every game, up to 50 per page, six sorts, filters for game, set, rarity and cards vs sealed: product id, set, number, rarity, market, median and lowest price, listing count, up to 3 featured listings, plus facets with counts | 1 |
Product detail/api/v1/tcgplayer/product | One card or sealed product: market price per SKU (condition x printing x language) with the recent sale range and count behind it, product market, median and lowest price, listing and seller counts, card text, game attributes and images up to 1000 px | 1 |
Listings/api/v1/tcgplayer/listings | Every live seller offer, up to 50 per page, filtered by condition, printing, language, verified sellers or Direct: price, shipping, total, quantity and the seller's rating, sales, Gold Star and location | 1 |
Price history/api/v1/tcgplayer/price-history | Up to a year per SKU: market price, quantity sold, transaction count and low and high sale price per day (month), 3 days (quarter) or week (half year, year) | 1 |
Recent sales/api/v1/tcgplayer/sales | The 5 most recent sales: date, condition, printing, language, quantity, price and shipping. TCGplayer shows only the newest 5 | 1 |
Set price guide/api/v1/tcgplayer/price-guide | A whole set's price table, one row per card per condition and printing, with market and low price, up to 500 rows per page, cards or sealed | 1 |
Games/api/v1/tcgplayer/games | All 71 product lines with game id and url_name: Pokemon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana, Pokemon Japan and the rest | 1 |
Sets/api/v1/tcgplayer/sets | Every set of a game, newest first, with the set id for the price guide, url_name, abbreviation and release date | 1 |
Search suggestions/api/v1/tcgplayer/suggestions | The tcgplayer.com autocomplete: suggested products with product id, set and game, matching sets and game counts | 1 |
Trending searches/api/v1/tcgplayer/trending | The top 10 terms shoppers search right now, overall or for Pokemon, Magic or Yu-Gi-Oh!, with a popularity score | 1 |
Seller profile/api/v1/tcgplayer/seller | A seller's location, member since, sales, rating, Gold Star, Direct and Pro flags, games sold and a 365-day feedback summary by star | 1 |
Seller feedback/api/v1/tcgplayer/seller-feedback | Individual buyer feedback from the last 365 days, up to 50 per page, by star rating or with comments only | 1 |
Seller products/api/v1/tcgplayer/seller-products | A seller's listed catalogue, up to 50 products per page, by keyword or game, with the seller's own price, condition and quantity next to the market price | 1 |
50 free credits on signup covers 50 TCGplayer calls. See plans
Price a card by condition, then track it
Suggestions turns a typed name into a product id; product prices every condition and printing; price-history adds daily or weekly sold volume. The response on the right is a real capture.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# A Discord or Slack price command: name in, Near Mint prices out - 2 credits
hit = client.tcgplayer.suggestions(query="charizard")["data"]["products"][0]
p = client.tcgplayer.product(product_id=hit["product_id"])["data"]
print(p["name"], p["set_name"], "market", p["market_price"])
for s in p["skus"]:
if s["condition"] == "Near Mint":
print(s["printing"], s["language"], s["market_price"],
"recent sales", s["lowest_sale_price"], "-", s["highest_sale_price"]){
"data": {
"product_id": 219058,
"name": "Charizard - 3/70 (#39 Charizard Stamped)",
"url": "https://www.tcgplayer.com/product/219058/pokemon-battle-academy-charizard-3-70-39-charizard-stamped",
"images": {
"small": "https://tcgplayer-cdn.tcgplayer.com/product/219058_in_200x200.jpg",
"medium": "https://tcgplayer-cdn.tcgplayer.com/product/219058_in_400x400.jpg",
"large": "https://tcgplayer-cdn.tcgplayer.com/product/219058_in_1000x1000.jpg"
},
"game": "Pokemon",
"game_id": 3,
"set_name": "Battle Academy",
"set_code": "BTA",
"set_id": 2686,
"number": "003/070",
"rarity": "Promo",
"product_type": "Cards",
"product_type_id": 1,
"sealed": false,
"foil_only": false,
"normal_only": true,
"release_date": "2020-07-31",
"market_price": 7.09,
"median_price": 8.44,
"lowest_price": 4,
"lowest_price_with_shipping": 4.9,
"listing_count": 64,
"seller_count": 61,
"description": "Ability — Resolute Flame\nThis Pokémon's attacks do 30 more damage to your opponent's Active Pokémon for each of their Pokémon-GX and Pokémon-EX in play.",
"flavor_text": "NO. 006 Flame Pokémon HT: 5'07\" WT: 199.5 lbs.\nIts wings can carry this Pokémon close to an altitude of 4,600 feet. It blows out fire at very high temperatures.",
"note": null,
"attributes": {
"stage": "Stage 2",
"energy_type": [
"Fire"
],
"card_type": [
"Pokemon"
],
"retreat_cost": "2",
"card_type_b": "Fire",
"weakness": "Wx2",
"attack1": "[1RR] Fiery Blast (130)\nDiscard an Energy from this Pokémon.",
"hp": "160"
},
"details": [
{
"name": "Card Number / Rarity",
"value": "003/070 / Promo"
},
{
"name": "Card Type / HP / Stage",
"value": "Fire / 160 / Stage 2"
}
],
"sku_count": 5,
"skus": [
{
"sku_id": 4514135,
"condition": "Near Mint",
"printing": "Normal",
"language": "English",
"market_price": 7.09,
"lowest_sale_price": 6,
"highest_sale_price": 9.99,
"sale_count": 25,
"calculated_at": "2026-11-08T17:49:17.632Z"
},
{
"sku_id": 4514136,
"condition": "Lightly Played",
"printing": "Normal",
"language": "English",
"market_price": 6.25,
"lowest_sale_price": 4.99,
"highest_sale_price": 7.99,
"sale_count": 25,
"calculated_at": "2026-11-08T20:32:08.712Z"
},
{
"sku_id": 4514137,
"condition": "Moderately Played",
"printing": "Normal",
"language": "English",
"market_price": 5.79,
"lowest_sale_price": 2.5,
"highest_sale_price": 8.79,
"sale_count": 25,
"calculated_at": "2026-11-06T23:52:39.623Z"
},
{
"sku_id": 4514138,
"condition": "Heavily Played",
"printing": "Normal",
"language": "English",
"market_price": 5.95,
"lowest_sale_price": 4.25,
"highest_sale_price": 7.95,
"sale_count": 12,
"calculated_at": "2026-11-01T15:28:17.606Z"
},
{
"sku_id": 4514139,
"condition": "Damaged",
"printing": "Normal",
"language": "English",
"market_price": 4.79,
"lowest_sale_price": 2.5,
"highest_sale_price": 6.52,
"sale_count": 21,
"calculated_at": "2026-11-07T06:08:15.348Z"
}
]
},
"response_time": 4826
}Why not the official TCGplayer API?
TCGplayer has its own developer API. Here is where the Scavio TCGplayer API differs.
TCGplayer developer API
- Closed to new developers: "We are no longer granting new API access at this time" (docs.tcgplayer.com, checked 2026-11-09)
- Existing keys must follow TCGplayer's API terms, including its restrictions and required attributions
- Since September 2026 TCGplayer has been reviewing existing API users' access, rate limits and agreements
- Its own authentication and response format, a separate integration from every other marketplace you track
Scavio TCGplayer API
- One Scavio key, issued at signup with no application, shared with eBay, Amazon and 70+ other platforms
- Market price for every condition, printing and language, with the recent sale range behind it
- Up to a year of price history with copies sold per day or week
- Every live listing with seller rating and sales, plus seller profiles, feedback and catalogues
- Whole-set price guides, up to 500 rows in one call
- 1 credit per call on every endpoint
Scavio returns publicly available tcgplayer.com data only, never signs in to a TCGplayer account and never places orders.
What developers build with it
Collection and portfolio trackers
Value a collection at the market price of each card's exact condition and printing, and chart it over time from price history.
product + price-historyDiscord and Slack price bots
Turn a typed card name into a product id with suggestions, then answer with Near Mint and played prices in two calls.
suggestions + productStore repricing
Compare your listings with the cheapest live offers in the same condition and printing, shipping included, and reprice to match.
listings + seller-productsSet price lists and buylist sheets
Pull a whole set's market and low prices, card by card and condition by condition, in one 500-row call.
sets + price-guidePrice spike and dip alerts
Store market price and copies sold per day and alert when a card moves outside its usual range or its sales volume jumps.
price-history + salesSealed product investing
Track booster boxes, collections and tins by market price and sold volume, from release day on.
search + price-historyResale and arbitrage
Compare TCGplayer's market price and recent sales with eBay sold listings before you buy or list.
product + sales + eBay APISeller vetting
Check a seller's rating, sales and the last year of feedback, and read the one- and two-star comments, before a large order.
seller + seller-feedbackNew-set demand research
Watch what shoppers search for around a release and which new sets show up first.
trending + setsHow to get TCGplayer data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 free credits on signup, 50 TCGplayer calls, with no card and no TCGplayer developer key.
- 2
Find the card
Send {"query": "charizard", "game": "pokemon"} to https://api.scavio.dev/api/v1/tcgplayer/search with an Authorization: Bearer header. Each result has its product_id, set, number, rarity and market price.
- 3
Price it by condition and printing
Pass the product_id to /api/v1/tcgplayer/product for the market price of every SKU, or to /api/v1/tcgplayer/listings for every live offer.
- 4
Add history
Send the product_id with "range": "annual" to /api/v1/tcgplayer/price-history for a year of weekly market prices and copies sold.
TCGplayer API FAQ
Does TCGplayer have an API?
+
TCGplayer has its own developer API, but it is closed to new developers: its documentation says "We are no longer granting new API access at this time" (docs.tcgplayer.com, checked 2026-11-09). Existing keys still work under TCGplayer's API terms. The Scavio TCGplayer API is a separate option anyone can sign up for: 13 POST endpoints that return what tcgplayer.com shows as structured JSON.
How do I get a TCGplayer API key now?
+
You cannot get a new key from TCGplayer while new access is closed. With Scavio you sign up, copy your Scavio key from the dashboard and call /api/v1/tcgplayer/... with it as a Bearer token. There is no application or approval step, and 50 free credits come with the account.
Can I get the TCGplayer market price by condition and printing?
+
Yes. /api/v1/tcgplayer/product returns every SKU of a product, one per condition x printing x language, with its market price, the lowest and highest recent sale price and the number of sales behind it. The Charizard 3/70 promo was $7.09 Near Mint (25 sales between $6.00 and $9.99), $6.25 Lightly Played and $4.79 Damaged. Those sale figures are recent sales, not live listings; for live offers use /api/v1/tcgplayer/listings.
Can I get TCGplayer price history and sold volume?
+
Yes. /api/v1/tcgplayer/price-history returns up to a year per SKU: market price, quantity sold, transaction count and the low and high sale price, in daily buckets for a month, 3-day buckets for a quarter and weekly buckets for a half year or year. Over one month the Charizard 3/70 sold 100 copies in 93 transactions. A bucket with no sales has null sale prices.
Can I see the latest TCGplayer sales?
+
Yes, the 5 most recent: /api/v1/tcgplayer/sales returns each sale's date, condition, printing, language, quantity, price and shipping, optionally only in some conditions. TCGplayer shows only the newest 5, so it is not a full sold history; for how many copies sold and at what range, use price-history.
Which games does it cover? Pokemon, Magic, Yu-Gi-Oh!?
+
Every product line on TCGplayer, 71 at launch: Pokemon, Magic: The Gathering, Yu-Gi-Oh!, One Piece Card Game, Disney Lorcana, Flesh and Blood, Digimon, Star Wars: Unlimited and the rest, plus supplies such as sleeves and deck boxes. Japanese Pokemon products are their own line, pokemon-japan. /api/v1/tcgplayer/games lists them all with the url_name search and sets take.
Can I pull a whole set's prices at once?
+
Yes. Get the set's set_id from /api/v1/tcgplayer/sets, then call /api/v1/tcgplayer/price-guide: one row per card per condition and printing with market and low price, up to 500 rows per page for 1 credit. Pokemon Base Set (604) had 505 card rows.
Does it cover sealed products like booster boxes?
+
Yes. Search with product_type sealed for booster boxes, packs, collections, tins and decks; product, listings, sales and price-history work on them like cards (condition Unopened). price-guide with product_type sealed lists a set's sealed products.
Can I get TCGplayer seller data?
+
Yes. Every listing carries the seller's key, rating percent, sales, Gold Star, verified and Direct flags and location. /api/v1/tcgplayer/seller returns a full profile with a 365-day feedback summary by star, /seller-feedback the individual feedback entries, and /seller-products the seller's listed catalogue with their own prices.
How do I build a Discord price bot or a collection app with it?
+
Use /api/v1/tcgplayer/suggestions to turn what a user types into a product id, then /api/v1/tcgplayer/product for the market price of each condition and printing: 2 credits per lookup. For a collection app, store each card's product id and SKU and refresh the value from product or price-history on a schedule.
Is there a free TCGplayer API?
+
Scavio gives 50 free credits on signup, one time and with no card, which covers 50 TCGplayer calls since every endpoint costs 1 credit. Paid plans start at $15 per month for 3,000 credits.
How much does a TCGplayer request cost?
+
Every TCGplayer endpoint costs 1 credit per call, including product (all SKUs), price-history (up to a year), price-guide (up to 500 rows) and seller (profile and feedback summary). Invalid requests, unknown ids (404) and temporary outages (502) are not charged.
How fast and fresh is the data?
+
Every request fetches live from tcgplayer.com when you call it; nothing is cached, and each response carries fetched_at. In our captures, price-history took 0.7 seconds, games and sets 1.0, suggestions 1.2, seller 1.4, search 2.0, product 4.8 and listings 5.9. Upstream checks sometimes fail; the API retries automatically, and a call that still fails is a 502 that is not charged.
What does it not return?
+
No product reviews, no buylist prices, no store locator and no full sold-listing history: sales is the newest 5 only, and price-history gives sold volume per day or week rather than individual sales. Prices are tcgplayer.com's US marketplace prices in US dollars.
Is using TCGplayer data legal?
+
Scavio returns publicly available tcgplayer.com data and does not sign in to buyer or seller accounts, place orders or change listings. You remain responsible for how you use the data, including compliance with TCGplayer's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
Best TCGplayer price APIs
Seven options priced and tested the week Delta Reign released, November 2026.
How to get TCGplayer price history
A year of market price and copies sold per condition, step by step.
A Pokemon card price API with history
Backfill a year per card or sealed product, then keep your own.
TCGplayer API docs
All 13 endpoints with params and real responses.
TCGplayer price history
Daily or weekly market price and sold volume per SKU.
TCGplayer set price guide
A whole set's prices in one call.
eBay API
Live and sold listings for resale and graded card comps.
Etsy API
Listings, shops and reviews.
Mercado Libre API
Listings, prices and sellers in Latin America.
Amazon API
Search, product detail by ASIN and seller offers.
Walmart API
Search, product, reviews and store-level pricing.
Target API
Search, categories, detail and reviews.
Costco API
Warehouse prices, stock and coupons.
Google Shopping API
Compare prices across stores for one product.
Try the TCGplayer API free
50 free credits on signup, no card. Your first request is a POST with a card name in it.