The US trading-card market as JSON, with the price of every condition
The TCGplayer API turns the United States' largest trading-card marketplace into clean JSON, in seven actions: search, product/detail, product/listings, product/sales, product/price_history, sets and games.
7 active endpoints. Every call is 1 credit.
- POST/tcgplayer/v1/search
- POST/tcgplayer/v1/product/detail
- POST/tcgplayer/v1/product/listings
- POST/tcgplayer/v1/product/sales
- POST/tcgplayer/v1/product/price_history
- POST/tcgplayer/v1/sets
- POST/tcgplayer/v1/games
What TCGplayer endpoints does ReefAPI ship?
7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
TCGplayer API
4 of 7 endpoints, ready to run
One card or sealed product: market price per printing and per condition, lowest listing with and without shipping, live listing and seller counts, the 10 cheapest listings and the 5 latest sales.
{ "ok": true, "meta": { "api": "tcgplayer", "endpoint": "product/detail", "mode": "live", "latency_ms": 1433.6, "record_count": 1, "cache_hit": false }, "data": { "product": { "product_id": 42382, "name": "Charizard", "url": "https://www.tcgplayer.com/product/42382", "images": [ "https://tcgplayer-cdn.tcgplayer.com/product/42382_in_1000x1000.jpg" ], "game": "Pokemon", "game_url_name": "pokemon", "game_id": 3, "set": "Base Set", "set_id": 604, "set_code": "BS", "number": "004/102", "rarity": "Holo Rare", "product_type": "Cards", "product_type_id": 1, "sealed": false, "foil_only": true, "normal_only": false, "release_date": "1999-01-09", "description": "Pokémon Power: Energy Burn As often as you like during your turn (before your attack), you may turn all Energy attached to Charizard into Fire Energy for the rest of the turn. This power can't be used if Charizard is Asleep, Confused, or Paralyzed.", "flavor_text": "Flame Pokémon. Length: 5'7\", Weight: 200 lbs.\nSpits fire that is hot enough to melt boulders. Known to unintentionally cause forest fires. LV. 76 #6", "note": null, "attributes": { "Card Number / Rarity": "004/102 / Holo Rare", "Card Type / HP / Stage": "Fire / 120 / Stage 2", "Card Text": "Pokémon Power: Energy Burn As often as you like during your turn (before your attack), you may turn all Energy attached to Charizard into Fire Energy for the rest of the turn. This power can't be used if Charizard is Asleep, Confused, or Paralyzed.", "Attack 1": "[RRRR] Fire Spin (100)\nDiscard 2 Energy cards attached to Charizard in order to use this attack.", "Weakness / Resistance / Retreat Cost": "W / F-30 / 3", "Artist": "Mitsuhiro Arita", "TCGplayer Tip": "The Holo Rare Charizard card from Base Set has been the holy grail of Pokémon collectibles since 1999, and many fans consider it the most iconic Pokémon card ever printed. This version from the Unlimited print run has a “drop shadow” behind the art frame." }, "currency": "USD", "market_price": 882.02, "lowest_price": 183.58, "lowest_price_with_shipping": 185, "listed_median_price": null, "record_listings_count": 144, "listings_count": 143, "sellers_count": 110, "quantity_available": 162, "as_low_as": 185 }, "market_price_by_printing": [ { "printing": "Normal", "market_price": null, "listed_median_price": null }, { "printing": "Foil", "market_price": 882.02, "listed_median_price": 980.22 } ], "skus": [ { "sku_id": 2999652, "condition": "Near Mint", "printing": "Holofoil", "language": "English", "market_price": 882.02, "market_price_low": 426.5, "market_price_high": 1499.65, "market_price_sample_size": 13, "market_price_calculated_at": "2026-09-14T22:58:11Z" }, { "sku_id": 2999653, "condition": "Lightly Played", "printing": "Holofoil", "language": "English", "market_price": 535.43, "market_price_low": 444.99, "market_price_high": 678.38, "market_price_sample_size": 25, "market_price_calculated_at": "2026-09-15T14:34:36Z" }, { "sku_id": 2999654, "condition": "Moderately Played", "printing": "Holofoil", "language": "English", "market_price": 381.78, "market_price_low": 365, "market_price_high": 400, "market_price_sample_size": 25, "market_price_calculated_at": "2026-09-16T03:11:18Z" } ], "cheapest_listings": [ { "listing_id": 870632137, "sku_id": 2999656, "price": 185, "shipping_price": 0, "price_with_shipping": 185, "sort_price": 185, "shipping_included": true, "free_shipping_over_threshold": false, "currency": "USD", "quantity": 2, "condition": "Damaged", "printing": "Holofoil", "language": "English", "language_code": "EN", "listing_type": "standard", "title": null, "description": null, "photos": null, "listed_at": null, "direct_listing": false }, { "listing_id": 806672410, "sku_id": 2999656, "price": 183.58, "shipping_price": 1.5, "price_with_shipping": 185.08, "sort_price": 185.08, "shipping_included": false, "free_shipping_over_threshold": false, "currency": "USD", "quantity": 2, "condition": "Damaged", "printing": "Holofoil", "language": "English", "language_code": "EN", "listing_type": "standard", "title": null, "description": null, "photos": null, "listed_at": null, "direct_listing": false }, { "listing_id": 866302536, "sku_id": 2999656, "price": 189.22, "shipping_price": 0, "price_with_shipping": 189.22, "sort_price": 189.22, "shipping_included": true, "free_shipping_over_threshold": false, "currency": "USD", "quantity": 1, "condition": "Damaged", "printing": "Holofoil", "language": "English", "language_code": "EN", "listing_type": "standard", "title": null, "description": null, "photos": null, "listed_at": null, "direct_listing": false } ], "latest_sales": [ { "sold_at": "2026-09-16T03:09:33Z", "price": 381.4, "shipping_price": 0, "price_with_shipping": 381.4, "currency": "USD", "quantity": 1, "condition": "Moderately Played", "printing": "Holofoil", "language": "English", "listing_type": "standard", "title": "Charizard" }, { "sold_at": "2026-09-16T00:52:20Z", "price": 194, "shipping_price": 0, "price_with_shipping": 194, "currency": "USD", "quantity": 1, "condition": "Damaged", "printing": "Holofoil", "language": "English", "listing_type": "standard", "title": "Charizard" }, { "sold_at": "2026-09-15T18:13:01Z", "price": 440, "shipping_price": 19.99, "price_with_shipping": 459.99, "currency": "USD", "quantity": 1, "condition": "Moderately Played", "printing": "Holofoil", "language": "English", "listing_type": "with_photos", "title": "Charizard Mp Base set AB" } ], "partial": null } }
How the TCGplayer API works
TCGplayer is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Price a card by its condition, then find the copies worth buying
One search gives you the TCGplayer product id. The same id returns the market price of every condition, and the listings in the condition you want, with shipping counted the way a single-card buyer pays it.
{"query": "charizard", "game": "pokemon", "set": "base-set"}Base Set Charizard products with set, number, rarity and market price. Take results[].product_id.
{"product_id": "42382"}Market price $882.02 for Near Mint, $535.43 Lightly Played, $183.58 Damaged, and 143 live listings from 109 sellers on 2026-09-16.
{"product_id": "42382", "condition": "near_mint"}Only Near Mint copies: 20 listings on 2026-09-16, each with price, shipping and the seller's rating.
What the card sells for in the condition you care about, and the copies listed in that condition, without mistaking the cheapest damaged copy for the price.
curl -X POST https://api.reefapi.com/tcgplayer/v1/product/detail \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"product_id":"42382"}'{
"ok": true,
"data": { … },
"meta": {
"api": "tcgplayer",
"endpoint": "product/detail",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}TCGplayer shows three different prices for one card, and none of them is simply the price
Market Price is what the card has been selling for, and it describes a Near Mint copy. The lowest listing is the cheapest copy for sale in any condition, with shipping on top. And TCGplayer's own Price + Shipping order counts shipping as free for sellers that ship free above an order total, even though one copy alone still pays shipping. This API returns each figure as its own field, plus the market price for every condition, so a Damaged copy never passes for the card's value.
| Product | market_price (NM) | lowest listing + shipping | Lightly Played SKU | Damaged SKU |
|---|---|---|---|---|
| Charizard (Base Set, Holofoil) | $882.02 | $183.58 + $1.50 | $535.43 | $183.58 |
| Lightning Bolt (Commander: Marvel, Foil) | $4.41 | $1.55 + $1.49 | - | - |
| Lightning Bolt (Commander: Marvel, Normal) | $1.04 | $0.42 ($0.75 with shipping) | - | - |
| Mega Charizard X ex Ultra Premium Collection | $232.40 | $220.00 ($234.00 with shipping) | - | - (sealed: Unopened) |
Figures from 2026-09-16 and they move daily. On the Mega Charizard X Ultra Premium Collection, the cheapest listings were photo listings of parts only - a deck box, a playmat - at $7.99 to $14.99, which is what the page's As low as showed; every listing carries its type, title and description so you can drop them. The product page's own Market Price box follows whichever copy is selected (on Base Set Charizard it showed the Damaged price, $183.58); the API returns the Near Mint figure and every condition separately.
Which price is which, what every listing tells you, and what TCGplayer leaves out
70 product lines, seven actions, prices in US dollars. Measured on 2026-09-16 with 99 live calls and no errors, an end-to-end run over every filter, and an 11-product check against the product page. Four of these lines go against us.
market_price describes a Near Mint copy; skus carries the market price of every condition, printing and language. On 11 checked products the Near Mint price for each printing matched the product page 11 of 11.
price, shipping_price for one copy, their sum, and TCGplayer's own ranking figure, which treats shipping as free for sellers that ship free above an order total. On the product pages 99 of 99 listings matched on price, shipping and the free-shipping note.
Search rows' prices matched the product record on 18 of 18 products, but the listing count matched only 10 of 18, so rows carry it as search_index_listings_count. product/detail returns the live count, which matched the page 11 of 11.
product/sales returns the 5 most recent sales, all TCGplayer shows without an account. For volume and price over time use product/price_history, up to a year per condition.
Photo listings on sealed products sometimes sell parts only, such as a deck box or playmat. They set the As low as figure ($7.99 on a $232.40 collection). Filter with listing_type=standard or read each listing's title.
TCGplayer does not publish the seller's free-shipping threshold amount, barcodes, buylist prices or product reviews, and sealed products have no number or rarity. Those fields are null, never guessed.
What people build with TCGplayer
The jobs this data is most often used for.
endpoints
credit per call
Collection trackers value cards by condition with the per-SKU market prices from product/detail instead of the cheapest damaged copy.
Card shops reprice inventory from product/listings filtered to Near Mint English copies, comparing price plus shipping the way buyers see it.
Price-history dashboards chart a year of weekly market price and sales volume per condition with product/price_history.
Sealed-product traders track booster boxes and premium collections across Pokémon, Magic, One Piece and Lorcana, dropping photo listings that sell parts only.
What TCGplayer data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 252 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/tcgplayer/v1/product/detail \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"product_id":"42382"}'import requests
r = requests.post(
"https://api.reefapi.com/tcgplayer/v1/product/detail",
headers={"x-api-key": REEF_KEY},
json={
"product_id": "42382"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up TCGplayer.
Get a free key →Which games does the TCGplayer API cover?▾
All 70 product lines TCGplayer lists: Magic: The Gathering, Pokémon, Pokémon Japan, Yu-Gi-Oh!, One Piece Card Game, Disney Lorcana, Flesh and Blood, Star Wars: Unlimited, Digimon, Dragon Ball Super: Fusion World, Riftbound, Gundam Card Game, Sorcery, Weiss Schwarz and more, plus supplies such as sleeves and deck boxes. The games action returns the full list with ids. Sports cards are not sold on TCGplayer. Prices are always US dollars.
What is the difference between market_price, lowest_price and as_low_as?▾
market_price is TCGplayer's figure from recent sales for a Near Mint copy of the product's main printing. lowest_price is the cheapest listing in any condition, without shipping, and lowest_price_with_shipping the cheapest once shipping is added. as_low_as is the figure TCGplayer prints as As low as: its own Price + Shipping ranking, which counts shipping as free for sellers that ship free above an order total. On Base Set Charizard these were $882.02, $183.58, $185.00 and $185.00. For the value of a specific copy, use skus, which carries the market price per condition, printing and language.
Does a listing's price include shipping?▾
No. Each listing has price, shipping_price (what TCGplayer shows for one copy), price_with_shipping (the two added) and sort_price, TCGplayer's own ranking figure. free_shipping_over_threshold is true when the seller ships free above an order total, which is why TCGplayer ranks a $3.60 + $1.49 listing above a $2.44 + $1.49 one. The threshold amount itself is not part of the listing data.
Can I filter listings by condition, printing or language?▾
Yes, with TCGplayer's own filters on product/listings: condition (near_mint, lightly_played, moderately_played, heavily_played, damaged, unopened, one or several), printing exactly as TCGplayer names it (Normal, Foil, Holofoil, 1st Edition Holofoil and so on), language, listing_type (standard or with_photos) and direct_only for TCGplayer Direct. Each filter was checked live against every returned listing. Listings come 50 per page, sorted by TCGplayer's Price + Shipping or by item price.
How many past sales can I get?▾
product/sales returns the 5 most recent sales, which is what TCGplayer shows without an account, filterable by condition and by listings with photos. For volume over time, product/price_history returns TCGplayer's market price, quantity sold, number of sales and low and high sale price per SKU, daily for the last month or in 3-day or weekly buckets for up to a year. Days without a sale return null for the low and high price, never 0.
Are search results padded when nothing matches?▾
No. Eight nonsense searches all returned zero results. Misspellings such as charizrd or dark magican return TCGplayer's corrected results with corrected_query set. Search also matches card text, so luffy returns One Piece cards that mention Luffy, not only cards named Luffy. Results page up to position 9,999; narrow with game, set or rarity to reach everything.
What does TCGplayer NOT publish?▾
The shipping threshold amount per seller, more than 5 recent sales without an account, buylist prices, barcodes, and product ratings or reviews. Sealed products have no collector number or rarity, and most non-English SKUs have no market price. Those fields come back as null, never guessed.
What is the TCGplayer API?▾
TCGplayer API is a ReefAPI endpoint group for the us trading-card marketplace: market price per condition, every listing with shipping, sales history. It returns live JSON through POST requests under /tcgplayer/v1.
Is the TCGplayer API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. TCGplayer calls use the same shared credit balance as every other ReefAPI engine.
Do I need a TCGplayer login or account?▾
No login to TCGplayer is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the TCGplayer data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the TCGplayer API use?▾
TCGplayer actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call TCGplayer from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call tcgplayer actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the TCGplayer API a TCGplayer scraper?▾
It is the managed alternative to a DIY TCGplayer scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same the us trading-card marketplace: market price per condition, every listing with shipping, sales history back as clean JSON.
91 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling TCGplayer, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.