Trading-card catalog discovery
TCGplayerエンドポイントを使えば、「Trading-card catalog discovery」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
Turn TCGplayer's public trading-card catalog into structured JSON — discover product lines and sets, search products, and compare product details, seller listings, price-guide values, history, and recent sales.
Search TCGplayer trading-card products, sets, listings, price guides, price history, and recent sales as structured JSON.
エンドポイントファミリー
6
ドキュメント化されたパラメータ
43
サンプル数
9
ライブカタログスナップショット
稼働エンドポイント
9
メソッド
GET
必須パラメータ
15
スキーマ参照
9
{
"platform": "TCGplayer",
"endpoint": "tcgplayer-search",
"method": "GET",
"path": "/tcgplayer/search",
"auth": "apiKey"
}ユースケース
Search TCGplayer trading-card products, sets, listings, price guides, price history, and recent sales as structured JSON.
TCGplayerエンドポイントを使えば、「Trading-card catalog discovery」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
TCGplayerエンドポイントを使えば、「Listing and condition comparisons」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
TCGplayerエンドポイントを使えば、「Price-guide and sales-history research」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
マネージド実行
以下の数値はすべて、稼働中のTCGplayerエンドポイントカタログから取得しています(エンドポイント9件、ドキュメント化されたリクエストパラメータ43個、公開レスポンススキーマ9件)。DocsとPlaygroundが参照しているカタログと同じものです。
TCGplayerのエンドポイントは9件、9つのリクエストファミリーに分類されています(Filters、Listings、Price Guideほか6件)。
これらのTCGplayerエンドポイントには43個のリクエストパラメータがドキュメント化されており、うち15個が必須です。統合コードを書く前に入力仕様をすべて確認できます。
9件のTCGplayerエンドポイントのうち9件が実際のサンプルレスポンスを、9件がドキュメント化されたレスポンススキーマを備えています。最初のリクエストの前に実データの形に合わせて実装できます。
TCGplayerのエンドポイントは成功時のスキーマに加えてエラーレスポンス(400、404、429、503)もドキュメント化しています。ブロック、レート制限、レコード欠損は空データではなく型付きのエラーとして返ります。
TCGplayerのエンドポイントは9個のホスト型MCPツールとして提供されており、エージェントは同じパラメータと同じJSON契約のまま、追加の実装なしに同じルートを呼び出せます。
カバレッジマップ
/tcgplayer/filters
/tcgplayer/listings
/tcgplayer/price-guide
/tcgplayer/price-history
/tcgplayer/product
/tcgplayer/product-lines
エンドポイントカタログ
/tcgplayer/product-linesLists TCGplayer's product lines (games and product families such as Pokemon, Magic: The Gathering, Yu-Gi-Oh!, One Piece and Lorcana): id, name and the url_name that tcgplayer-search and tcgplayer-sets take as product_line.
MCPツール tcgplayer_product_lines
/tcgplayer/setsLists the active sets (expansions) of one TCGplayer product line, newest first: name, the url_name that tcgplayer-search takes as set, abbreviation and release date.
MCPツール tcgplayer_sets
/tcgplayer/filtersReturns the values the tcgplayer-sales filters accept for one TCGplayer product line: the printings (variants such as Normal, Foil, Holofoil or 1st Edition), the six conditions, the languages and the listing types, each with TCGplayer's id. Printings belong to one product line (Pokemon has Reverse Holofoil, Magic has Foil), while languages are shared. Give product_line (a url_name from tcgplayer-product-lines) or id (a TCGplayer product id, which uses that product's line). An unknown product line returns invalid parameters and an unknown product returns not found.
レスポンスに関する注記
- `variants` are the line's printings in TCGplayer's display order. Printings belong to one product line and their ids are not shared: Pokemon `Normal` is `10` and Magic `Normal` is `1`. The labels seen across all 71 lines on 2026-10-26 are `1st Edition`, `1st Edition - Ultimate`, `1st Edition Cold Foil`, `1st Edition Foil`, `1st Edition Holofoil`, `1st Edition Normal`, `1st Edition Rainbow Foil`, `1st Wave Foil`, `Card Only`, `Card and Die`, `Cold Foil`, `Die Only`, `Foil`, `Holo`, `Holofoil`, `Holohex`, `Limited`, `Metal`, `Normal`, `Parallel Foil`, `Plastic`, `Promo`, `Rainbow Foil`, `Reverse Holo`, `Reverse Holofoil`, `Unlimited`, `Unlimited - Ultimate`, `Unlimited Edition Foil`, `Unlimited Edition Normal`, `Unlimited Edition Rainbow Foil`, `Unlimited Holofoil` and `Unopened`; each line offers only some of them. - `conditions` are `Near Mint`, `Lightly Played`, `Moderately Played`, `Heavily Played`, `Damaged` and `Unopened` (sealed product). Some lines offer only some of them (14 lines offer only `Unopened`). - `languages` are `English`, `Chinese (S)`, `Chinese (T)`, `French`, `German`, `Italian`, `Japanese`, `Korean`, `Portuguese`, `Russian` and `Spanish`. Their ids (1 to 11) are the same on every line. Most lines carry English only; Magic carries all eleven, Flesh and Blood English, Japanese and Korean, Lorcana English, Chinese (S) and Japanese, Grand Archive English and Chinese (T), and Pokemon Japan Japanese only. - `listing_types` are `all`, `with-photos` and `without-photos`. - An unknown `product_line` returns `400`; an unknown product `id` returns `404`. The catalog is cached for 15 minutes. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "product_line": "pokemon", "product_line_id": 3, "variants": [ { "id": 10, "name": "Normal" }, { "id": 11, "name": "Holofoil" }, { "id": 77, "name": "Reverse Holofoil" } ], "conditions": [ { "id": 1, "name": "Near Mint", "abbreviation": "NM" }, { "id": 2, "name": "Lightly Played", "abbreviation": "LP" }, { "id": 3, "name": "Moderately Played", "abbreviation": "MP" } ], "languages": [ { "id": 1, "name": "English", "abbreviation": "EN" } ], "listing_types": [ "all", "with-photos", "without-photos" ] } } ```
MCPツール tcgplayer_filters
/tcgplayer/searchSearches TCGplayer's catalog of trading-card and collectible products (Pokemon, Magic, Yu-Gi-Oh!, One Piece, Lorcana and about 70 other product lines) and returns one page of matches: product id, name, set, rarity, card number, market, lowest and median prices, listing count, links and filter facets. Filter by product line, set, product type, rarity, card type and price range, and sort by price, listings, sales or name.
レスポンスに関する注記
- `next_offset` is the offset of the next page and is omitted on the last page or when the next same-size page would pass the 9999 window. - Prices are US dollars. `market_price`, `lowest_price`, `lowest_price_with_shipping` and `median_price` are omitted for products with no recent sales or listings. - `facets` lists the product lines, sets, rarities, card types, energy types and product types present in the results, with counts. `sets[].url_value` is the value to pass as `set`. - Result order can shift slightly between calls because TCGplayer ranks by live sales, so page through with a single sort rather than relying on a stable relevance order. - `url` and `image_url` are tcgplayer.com links; images are not downloaded. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "query": "charizard", "total": 2, "limit": 3, "offset": 0, "products": [ { "product_id": 42382, "name": "Charizard", "url": "https://www.tcgplayer.com/product/42382", "image_url": "https://product-images.tcgplayer.com/fit-in/437x437/42382.jpg", "product_line": "Pokemon", "set_name": "Base Set", "set_code": "BS", "rarity": "Holo Rare", "number": "004/102", "card_types": [ "Pokemon" ], "sealed": false, "foil_only": true, "market_price": 954.65, "lowest_price": 207.29, "lowest_price_with_shipping": 207.3, "total_listings": 138 }, { "product_id": 657516, "name": "Charizard (Black Dot Error)", "url": "https://www.tcgplayer.com/product/657516", "image_url": "https://product-images.tcgplayer.com/fit-in/437x437/657516.jpg", "product_line": "Pokemon", "set_name": "Base Set", "set_code": "BS", "rarity": "Holo Rare", "number": "004/102", "card_types": [ "Pokemon" ], "sealed": false, "foil_only": true, "lowest_price": 549.99, "lowest_price_with_shipping": 549.99, "total_listings": 6 } ], "facets": { "product_lines": [ { "value": "Pokemon", "url_value": "pokemon", "count": 2 } ], "sets": [ { "value": "SWSH: Crown Zenith", "url_value": "swsh-crown-zenith", "count": 7 }, { "value": "Base Set", "url_value": "base-set", "count": 2 } ], "rarities": [ { "value": "Holo Rare", "count": 2 } ], "card_types": [ { "value": "Pokemon", "count": 2 } ], "energy_types": [ { "value": "Fire", "count": 2 } ], "product_types": [ { "value": "Cards", "count": 2 } ] } } } ```
MCPツール tcgplayer_search
/tcgplayer/productReturns one TCGplayer product in full: name, product line, set, rarity, card number, card text, attributes, the market, lowest and median prices, listing and seller counts, every purchasable condition/variant/language SKU, and TCGplayer's market and buylist price per printing.
レスポンスに関する注記
- `description` is the card text as plain text (TCGplayer sends HTML); `number` is the collector number. - `attributes` holds the other labeled facts TCGplayer shows (artist, card type, ...), which differ by product line. - `skus` lists every purchasable condition, variant (printing) and language combination with its TCGplayer SKU id. - `price_points` has one entry per printing with `market_price`, `listed_median_price` and `buylist_market_price`. A figure is omitted when TCGplayer has none. - Prices are US dollars. `total_listings` and `total_sellers` count current offers. - An unknown product id returns `404`. This call makes two upstream requests and is billed as two. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "product": { "product_id": 42382, "name": "Charizard", "url": "https://www.tcgplayer.com/product/42382", "image_url": "https://product-images.tcgplayer.com/fit-in/437x437/42382.jpg", "product_line": "Pokemon", "product_line_url_name": "pokemon", "product_type": "Cards", "set_name": "Base Set", "set_code": "BS", "rarity": "Holo Rare", "number": "004/102", "description": "Pokémon Power: Energy Burn As often as you like during your turn (before your attack), you may turn all Energy…", "sealed": false, "foil_only": true, "normal_only": false, "market_price": 954.65, "lowest_price": 207.29, "lowest_price_with_shipping": 207.3, "total_listings": 139, "total_sellers": 75, "attributes": { "Artist": "Mitsuhiro Arita", "Attack 1": "[RRRR] Fire Spin (100)\nDiscard 2 Energy cards attached to Charizard in order to use this attack.", "Card Number / Rarity": "004/102 / Holo Rare", "Card Text": "Pokémon Power: Energy Burn As often as you like during your turn (before your attack), you may turn all Energy…", "Card Type / HP / Stage": "Fire / 120 / Stage 2", "TCGplayer Tip": "The Holo Rare Charizard card from Base Set has been the holy grail of Pokémon collectibles since 1999, and man…", "Weakness / Resistance / Retreat Cost": "W / F-30 / 3" }, "skus": [ { "sku": 2999652, "condition": "Near Mint", "variant": "Holofoil", "language": "English" }, { "sku": 2999653, "condition": "Lightly Played", "variant": "Holofoil", "language": "English" }, { "sku": 2999654, "condition": "Moderately Played", "variant": "Holofoil", "language": "English" } ], "price_points": [ { "printing": "Normal" }, { "printing": "Foil", "market_price": 954.65, "listed_median_price": 587.98 } ] } } } ```
MCPツール tcgplayer_product
/tcgplayer/listingsReturns one page of the current seller listings for a TCGplayer product: seller storefront name, rating and sales volume, condition, printing, language, quantity, price, shipping price and seller location. Filter by condition, printing and language, and sort by price or price with shipping.
レスポンスに関する注記
- `seller_name` is the seller's public TCGplayer storefront name. `seller_sales` is a count as text, and `10000+` for the largest sellers. - Prices are US dollars; `price` is per item and `shipping_price` is that listing's shipping. - `next_offset` is omitted on the last page. - An unknown product id returns `404`. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "product_id": 42382, "total": 18, "limit": 3, "offset": 0, "next_offset": 3, "listings": [ { "listing_id": 4749605, "seller_name": "jlittleton", "seller_rating": 100, "seller_sales": "15", "gold_seller": false, "verified_seller": false, "direct_seller": false, "condition": "Near Mint", "printing": "Holofoil", "language": "English", "quantity": 1, "price": 1098, "shipping_price": 4.99, "listing_type": "custom" }, { "listing_id": 4743494, "seller_name": "Comic Buying Center", "seller_rating": 100, "seller_sales": "3543", "gold_seller": true, "verified_seller": true, "direct_seller": false, "condition": "Near Mint", "printing": "Holofoil", "language": "English", "quantity": 1, "price": 1100, "shipping_price": 3, "listing_type": "custom", "seller_city": "LIBERTYVILLE", "seller_state": "IL", "seller_country": "US" }, { "listing_id": 4740111, "seller_name": "PokeGirlCC", "seller_rating": 100, "seller_sales": "1085", "gold_seller": true, "verified_seller": false, "direct_seller": false, "condition": "Near Mint", "printing": "Holofoil", "language": "English", "quantity": 1, "price": 1199.99, "shipping_price": 2.49, "listing_type": "custom", "seller_city": "Riverview", "seller_state": "FL", "seller_country": "US" } ], "facets": { "conditions": [ { "value": "Near Mint", "count": 18 } ], "printings": [ { "value": "Holofoil", "count": 18 } ], "languages": [ { "value": "English", "count": 18 } ] } } } ```
MCPツール tcgplayer_listings
/tcgplayer/price-guideReturns TCGplayer's price guide for one set, one row per card, condition and printing: card id, name, collector number, rarity, condition, printing, language, low price, market price and units sold. Page through a whole set (up to 500 rows per call) instead of fetching each card; the set_id comes from tcgplayer-sets.
レスポンスに関する注記
- Rows come back in a fixed order, so paging with `next_offset` walks the whole set without repeats. `total` is the number of rows in the set, not the number of cards: a card appears once per condition and printing (a card with one printing has five rows, one per condition). - `condition` is one of `Near Mint`, `Lightly Played`, `Moderately Played`, `Heavily Played` or `Damaged`. TCGplayer folds the printing and sometimes a language into that text (for example `Near Mint Holofoil` or `Near Mint Foil - Japanese`); the response splits them into `condition`, `printing` and `language`. `language` is omitted when TCGplayer does not mark one. - `low_price` and `market_price` are US dollars; `sales` is the units sold TCGplayer counts for that row. - Only cards are listed; sealed products are not part of this price guide. Use `product_id` with `tcgplayer-product` for a card's detail. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "set_id": 604, "set_name": "Base Set", "set_abbreviation": "BS", "game": "Pokemon", "total": 505, "limit": 4, "offset": 0, "next_offset": 4, "rows": [ { "product_id": 42386, "name": "Abra", "number": "043/102", "rarity": "Common", "condition": "Damaged", "printing": "Normal", "low_price": 0.09, "market_price": 0.25, "sales": 0 }, { "product_id": 42386, "name": "Abra", "number": "043/102", "rarity": "Common", "condition": "Heavily Played", "printing": "Normal", "low_price": 0.09, "market_price": 0.31, "sales": 0 }, { "product_id": 42386, "name": "Abra", "number": "043/102", "rarity": "Common", "condition": "Lightly Played", "printing": "Normal", "low_price": 0.09, "market_price": 0.59, "sales": 0 }, { "product_id": 42386, "name": "Abra", "number": "043/102", "rarity": "Common", "condition": "Moderately Played", "printing": "Normal", "low_price": 0.09, "market_price": 0.41, "sales": 0 } ] } } ```
MCPツール tcgplayer_price_guide
/tcgplayer/price-historyReturns a TCGplayer product's price history over a month, quarter, half year or year, per condition, printing and language: market price, quantity sold, transaction count and low/high sale price for each period, plus the average daily sales volume.
レスポンスに関する注記
- `skus` has one entry per condition, printing (`variant`) and `language`, each with its `buckets`. Buckets run newest first: daily for `month` (30), every 3 days for `quarter` (30) and weekly for `semi-annual` (26) and `annual` (52). `start_date` is the first day of the bucket. - Prices are US dollars. `market_price` is TCGplayer's market price for that period; `quantity_sold` and `transaction_count` count completed sales. - A product with no sales history, or an id that does not exist, returns an empty `skus` list. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "product_id": 42382, "range": "month", "skus": [ { "sku": 2999655, "variant": "Holofoil", "language": "English", "condition": "Heavily Played", "average_daily_quantity_sold": 0, "average_daily_transaction_count": 0, "total_quantity_sold": 29, "total_transaction_count": 29, "buckets": [ { "start_date": "2026-10-25", "market_price": 247.58, "quantity_sold": 0, "transaction_count": 0, "low_sale_price": 0, "high_sale_price": 0, "low_sale_price_with_shipping": 0, "high_sale_price_with_shipping": 0 } ] } ] } } ```
MCPツール tcgplayer_price_history
/tcgplayer/salesReturns the five most recent completed sales of a TCGplayer product: condition, printing, language, quantity, sale price, shipping price and order time. Optionally restrict to one condition (near-mint, lightly-played, moderately-played, heavily-played, damaged or unopened), one printing (variant such as Normal, Foil or Reverse Holofoil), one language (such as English or Japanese) and whether the listing had photos. The printing and language values a product accepts come from tcgplayer-filters; an unlisted value returns invalid parameters. A variant or language filter makes one extra call to read the product line's filter values.
レスポンスに関する注記
- TCGplayer returns the five most recent sales and offers no paging, so there are at most five rows. Use `tcgplayer-price-history` for a longer trend. - Filters apply to the five most recent sales that match them, not to the five most recent sales overall, so a filtered call can return sales older than an unfiltered one. A filter nobody has sold under returns an empty `sales` list. - A `variant` or `language` filter makes one extra call to read the product line's filter values (cached for 15 minutes); the other filters do not. Printing ids belong to one product line, which is why the labels are resolved per product. - Prices are US dollars. `order_date` is an RFC 3339 timestamp. - Buyer and seller identities are not part of the response. - A product with no recent sales returns an empty `sales` list. Example response (long values and lists shortened): ```json { "code": 200, "msg": "OK", "data": { "product_id": 42382, "sales": [ { "condition": "Damaged", "variant": "Holofoil", "language": "English", "quantity": 1, "purchase_price": 220, "shipping_price": 0, "listing_type": "ListingWithoutPhotos", "order_date": "2026-10-24T17:53:24.483+00:00" }, { "condition": "Heavily Played", "variant": "Holofoil", "language": "English", "quantity": 1, "purchase_price": 246.49, "shipping_price": 0.99, "listing_type": "ListingWithoutPhotos", "order_date": "2026-10-24T13:37:33.393+00:00" }, { "condition": "Heavily Played", "variant": "Holofoil", "language": "English", "quantity": 1, "purchase_price": 240, "shipping_price": 0, "listing_type": "ListingWithoutPhotos", "order_date": "2026-10-24T11:40:27.84+00:00" }, { "condition": "Moderately Played", "variant": "Holofoil", "language": "English", "quantity": 1, "purchase_price": 399.97, "shipping_price": 0, "listing_type": "ListingWithoutPhotos", "order_date": "2026-10-23T14:24:34.207+00:00" }, { "condition": "Lightly Played", "variant": "Holofoil", "language": "English", "quantity": 1, "purchase_price": 565, "shipping_price": 0, "listing_type": "ListingWithPhotos", "order_date": "2026-10-23T04:25:53.693+00:00" } ] } } ```
MCPツール tcgplayer_sales
関連API
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
TCGplayerのスクレイピング方法
Crawlora's 9 TCGplayer endpoints separate product discovery from market records: product lines and sets, filters, search, then product, listings, price guide, history and sales. A Pokemon search for charizard on 2026-10-27 matched 382 products, 255 cards and 127 sealed products, and the first four rows by market price were sealed cases, not cards. Market, lowest and median price are three different numbers, and the Lorcana set list already included a set that releases in 2027. Keep condition, printing, language and retrieval time with every comparison; these are source snapshots, not checkout quotes.
/tcgplayer/product-lines lists about 70 lines and the url_name that search and sets take as product_line. Japanese cards are a separate line: the charizard facets showed pokemon-japan with 407 products beside pokemon with 382. Do not guess slugs from names; Lorcana's is lorcana-tcg.
/tcgplayer/filters for the pokemon line returned 7 printings (Normal, Holofoil, Reverse Holofoil, 1st Edition, 1st Edition Holofoil, Unlimited, Unlimited Holofoil), 6 conditions from Near Mint to Unopened and a single language, English. Those ids are what /tcgplayer/sales accepts for that line.
Searching charizard in the pokemon line sorted by market-price put the 151 Elite Trainer Box Case first (market 6,575.00, lowest 5,974.01, median 6,183.33, 7 listings), then three more cases, and the first card only fifth: Skyridge Charizard 146/144, Secret Rare, market 2,999.99 and lowest 3,500.00 with 3 listings. The case rows came back with sealed set to false, so filter with product_type=Cards from the product_types facet instead of that flag.
A listing's market price is not bounded by its cheapest offer. The Crown Zenith Booster Bundle Case showed a market price of 5,549.00 under a lowest listing of 5,999.99, while the 151 case showed the reverse. Store all three, plus total_listings, and keep lowest_price_with_shipping separate.
/tcgplayer/sets for lorcana-tcg returned 21 sets, newest first, and the first, Into the Inkdark (abbreviation 15), had a release date of 2027-02-05, months after the pull, followed by Hyperia City on 2026-10-16. Quest sets use Q1 to Q3 and promos use D23, DLPC and D100, so an abbreviation is not always a number. Compare release_date with today before treating a set as on sale.
With a product id from search, /tcgplayer/product, /tcgplayer/listings, /tcgplayer/price-history and /tcgplayer/sales return detail, seller offers and past records. /tcgplayer/price-guide takes a set's numeric id from the sets route, for example 24740 for Hyperia City. Preserve condition, printing, language and paging parameters with each pull.
FAQ
Because sealed cases and bundles outprice single cards. Add product_type=Cards, or read the product_types facet in the response (255 Cards and 127 Sealed Products for the pokemon charizard search on 2026-10-27), to rank cards only.
Yes. On 2026-10-27 the Crown Zenith Booster Bundle Case had a market price of 5,549.00 and a lowest listing of 5,999.99. Market price is not a bound on current offers, so check listings before assuming a price is obtainable.
Not necessarily. The Lorcana list included Into the Inkdark with a 2027-02-05 release date. Check release_date against the retrieval date.
The set's numeric id from /tcgplayer/sets, such as 24740 for Lorcana's Hyperia City, not its url_name. Use url_name only for search.
No. The API returns TCGplayer price-guide, listing, history and sales records as source snapshots. Keep the retrieval time and product attributes with comparisons, and verify availability and final checkout price separately.