tcgplayer.com APIwww.tcgplayer.com ↗
Search TCGPlayer trading cards, get per-condition market prices, and retrieve seller listings with ratings and shipping costs via a simple REST API.
curl -X GET 'https://api.parse.bot/scraper/5d1e8a71-43a6-400a-9f41-6f2a4ad5cbe7/search_cards?limit=5&query=charizard' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for trading cards by name, set, or any keyword. Returns matching cards with market prices, set info, and top seller listings. Use product_id from results to get full details or listings.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return (max 50) |
| queryrequired | string | Search query (e.g. 'black lotus', 'dark magician', 'charizard base set') |
| offset | integer | Offset for pagination (0-based) |
{
"type": "object",
"fields": {
"cards": "array of card objects with product_id, name, set_name, rarity, market_price, lowest_price, total_listings, top_listings, and more",
"limit": "integer, max results returned",
"query": "string, the search query used",
"offset": "integer, current pagination offset",
"total_results": "integer, total number of matching cards",
"available_sets": "array of {name, url_value, count} for filtering by set"
},
"sample": {
"data": {
"cards": [
{
"name": "Pikachu - 19/68 (#2 Pikachu Stamped)",
"rarity": "Promo",
"set_name": "Battle Academy",
"foil_only": false,
"image_url": "https://tcgplayer-cdn.tcgplayer.com/product/219154_200w.jpg",
"product_id": 219154,
"card_number": "019/068",
"product_url": "https://www.tcgplayer.com/product/219154",
"lowest_price": 1.96,
"market_price": 3.68,
"median_price": 4.125,
"product_line": "Pokemon",
"set_url_name": "Battle Academy",
"top_listings": [
{
"price": 1.96,
"printing": "Normal",
"quantity": 2,
"condition": "Lightly Played",
"seller_name": "AkenoMart",
"seller_sales": "336",
"seller_rating": 99.7,
"shipping_price": 1.31,
"verified_seller": false
}
],
"total_listings": 26,
"lowest_price_with_shipping": 1.96
}
],
"limit": 5,
"query": "pikachu",
"offset": 0,
"total_results": 1438,
"available_sets": [
{
"name": "SV4a: Shiny Treasure ex",
"count": 5,
"url_value": "sv4a-shiny-treasure-ex"
}
]
},
"status": "success"
}
}About the tcgplayer.com API
The TCGPlayer API provides 3 endpoints to search trading cards across all games and sets, retrieve per-condition pricing breakdowns, and pull live seller listings. The search_cards endpoint returns market price, lowest price, and top listings in a single call, while get_card_details exposes condition-level pricing with fields like sku_id, market_price, lowest_price, and highest_price for conditions ranging from Near Mint to Damaged.
Searching Cards
The search_cards endpoint accepts a query string (card name, set name, or keyword) and returns an array of card objects, each containing product_id, name, set_name, rarity, market_price, lowest_price, and total_listings. Results also include an available_sets array of {name, url_value, count} objects you can use to understand set distribution across a result set. Pagination is handled via limit (max 50) and offset parameters.
Per-Condition Pricing
Passing a product_id to get_card_details returns a pricing_by_condition array where each entry carries a sku_id, condition label (e.g. "Near Mint", "Lightly Played"), variant, market_price, lowest_price, and highest_price. This is the primary way to compare a card's value across grades without querying individual listings. The response also includes card metadata like set_code, set_name, rarity, and an attacks array for games like Pokémon and Magic.
Seller Listings
The get_card_listings endpoint retrieves individual seller offers for a given product_id. Each listing in the listings array includes seller_name, price, shipping_price, total_price, condition, seller_rating, and verified_seller status. You can filter by condition ('Near Mint', 'Lightly Played', 'Moderately Played', 'Heavily Played', 'Damaged') and sort by price+shipping in ascending or descending order. The response includes a condition_breakdown array showing listing counts per condition, useful for gauging supply before iterating pages.
- Build a price alert tool that monitors
market_pricechanges for a watchlist ofproduct_idvalues. - Compare Near Mint vs. Lightly Played pricing using
pricing_by_conditionto calculate the grade discount for grading arbitrage decisions. - Aggregate
total_listingsandcondition_breakdowndata to assess market liquidity for a given card before purchasing. - Power a deck-building app with live
lowest_priceandmarket_pricefields for each card in a user's list. - Rank seller offers by
total_price(price + shipping) usingget_card_listingswithsort_by=price+shippingandsort_order=asc. - Track
available_setscounts fromsearch_cardsto build a set-completion checklist with current pricing context. - Validate card values for insurance or collection appraisal by pulling
highest_priceandmarket_priceper condition.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does TCGPlayer have an official developer API?+
What does `get_card_details` return that `search_cards` does not?+
get_card_details returns a full pricing_by_condition array with sku_id, market_price, lowest_price, and highest_price broken out for each condition grade (Near Mint through Damaged). search_cards returns a single aggregate market_price and lowest_price per card without condition-level granularity.Can I filter `get_card_listings` to only see verified sellers?+
verified_seller field, so you can apply that filter client-side after retrieving results. You can fork this API on Parse and revise it to add a server-side verified_only parameter.Does the API cover card buylist or buy prices from stores?+
Are all trading card games covered, or only specific ones?+
search_cards endpoint is query-driven and returns results across TCGPlayer's full catalog, which includes Magic: The Gathering, Pokémon, Yu-Gi-Oh!, and other games stocked on the platform. There is no game-type filter parameter exposed, so results for a broad query may span multiple games. You can fork this API on Parse and add a game-filter parameter to scope results to a single game.