TCGPlayer Listings Scraper — Prices, Sellers & Market Data
Pricing
from $1.79 / 1,000 tcgplayer listings
TCGPlayer Listings Scraper — Prices, Sellers & Market Data
Scrape TCGPlayer listings by keyword, product URL, or seller shop — a TCGPlayer API alternative for US TCG shops. Export market price, seller offers, condition, shipping, and optional recent sales as JSON.
Pricing
from $1.79 / 1,000 tcgplayer listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Disclaimer: Unofficial tool for publicly accessible TCGPlayer listings. TCGPlayer and related names are trademarks of eBay Inc. / TCGplayer, Inc. Not affiliated with, sponsored by, or endorsed by TCGPlayer or eBay. For informational, research, aggregation, and market-intelligence use only. Respect applicable terms of use and law.
TCGPlayer listings scraper for the US trading-card marketplace — Pokémon, Magic: The Gathering, Yu-Gi-Oh!, Lorcana, One Piece, and more. Use it as a TCGPlayer scraper, TCGPlayer API alternative, and TCGPlayer seller shop export: paste a product URL, walk a seller name, or search by keyword. Dataset rows are one seller listing each — USD price, shipping, condition, printing, market / median / lowest, and seller rating. Fast HTTP JSON — no login, no official API key. Call from Python, Node.js, cURL, or Apify MCP.
Built for US TCG shops, restock pricing, seller intelligence, and scheduled listing monitors. Official developer API access is closed to new apps — this Actor reads the same public marketplace JSON the website uses.
Collectibles suite
| Actor | Focus |
|---|---|
| TCGPlayer Listings Scraper ◄── you are here | US TCG seller listings and shops |
| Cardmarket Listings Scraper | EU TCG seller offers and shops |
| Fanatics Collect Scraper | Weekly / Premier auctions, Buy Now, sold comps |
| Goldin Auctions Scraper | High-end sports cards / TCG hammer + sold |
| PSA Population Report Scraper | Set-level PSA pop census and gem rate |
| Whatnot Listings Scraper | US live-commerce listings and shops |
| PriceCharting Scraper | Guide prices for games, TCG, and comics |
| eBay Active Listings Scraper | Live eBay BIN / auction asking prices |
| eBay Sold Listings Scraper | Completed eBay sold comps |
| eBay Sold Price Intelligence | Recommended price and demand score |
When to use this Actor
- You need a TCGPlayer scraper / TCGPlayer listings scraper that returns flat JSON rows
- You want product URL arrays, seller shop walks, and keyword search in one run
- You track condition, printing, shipping, and USD offer prices next to market price
- You scrape TCGPlayer with Python, Node.js, or MCP and export JSON / CSV
- You run a daily monitor and only want new listing IDs billed
When not to use this Actor
- Nightly bulk catalog CSVs — tcgcsv-style dumps are a one-shot catalog job; this Actor is live listings
- EU TCG offer books — use Cardmarket Listings Scraper
- Weekly / Premier auction hammer — use Fanatics Collect Scraper or Goldin Auctions Scraper
- PSA 10 pop / gem rate — use PSA Population Report Scraper
- US live-commerce firehose — use Whatnot Listings Scraper
- eBay sold comps / fair-value reports — use eBay Sold Listings Scraper
- Official TCGPlayer API replacement — new developer keys are closed; this Actor reads public marketplace JSON
- Buyer PII, DMs, or order history — public listing rows only
Key features
- Product URLs — paginate every seller listing on a SKU (not a 3-offer search card)
- Seller shop inventory — walk a store name / seller URL with optional
shopQuery - Keyword search — find matching products, then scrape their listings
- Market context on every row —
marketPrice,medianPrice,lowestPrice,lowestPriceWithShipping - Monitor mode — named Key-Value store of seen listing IDs; later scheduled runs emit only new rows
- Optional recent sales — last completed sales for the SKU (
includeSalesHistory) - Deduplicated IDs across keywords, shops, and URLs
- MCP / AI ready — call from assistants via Apify MCP
Use cases
| Use case | What you get |
|---|---|
| Pokémon / MTG restock | Current TCGPlayer listings for a SKU, condition, and printing |
| Seller shop dump | Active inventory for a store name; shopQuery to keep one card / set |
| Arbitrage watch | monitorMode on a product URL; only new listing IDs billed |
| US vs EU comps | TCGPlayer live rows, then eBay sold listings (or Cardmarket) for the same query |
| Shop intelligence | Gold / Direct / verified flags, rating, sales band, shipping |
Quick start
Product URL (seller listings on the SKU):
{"startUrls": [{ "url": "https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard" }],"maxItems": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Keyword search (cap listings per product for cheaper discovery):
{"searchKeywords": ["charizard"],"productLine": "pokemon","listingsPerProduct": 10,"maxItems": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Seller shop + monitor:
{"sellerNames": ["ProSoul Games"],"shopQuery": "charizard","maxItems": 150,"monitorMode": true,"monitorStoreName": "tcgplayer-charizard-shops","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchKeywords | Array | — | Search queries (required if no URLs/sellers) |
sellerNames | Array | — | TCGPlayer store names to walk |
shopQuery | String | — | Filter each seller shop by keyword. Empty = full inventory |
startUrls | Array | — | TCGPlayer product, search, or seller URLs |
productLine | String | all | pokemon, magic, yugioh, lorcana, … |
condition | String | any | Near Mint, Lightly Played, … |
printing | String | any | Normal, Holofoil, Reverse Holofoil, … |
language | String | any | English, Japanese, … |
sort | String | best_match | best_match, best_selling, price_asc, price_desc, name_asc |
minPrice / maxPrice | Number | — | USD price band |
listingsPerProduct | Integer | 10 | Cap offers per product on keyword search (0 = all) |
includeSalesHistory | Boolean | false | Attach recent completed sales for each SKU |
maxItems | Integer | 100 | Max rows (0 = unlimited subject to maxPages) |
maxPages | Integer | 20 | Pagination safety cap |
monitorMode | Boolean | false | Emit only new IDs vs previous run |
monitorStoreName | String | tcgplayer-listings-monitor | Named KV store for seen IDs |
resetMonitorState | Boolean | false | Wipe the seen-ID cache |
proxyConfiguration | Object | RESIDENTIAL | Recommended on Apify; local runs can disable proxy |
Output format
Each dataset item is one seller listing (recordType: listing).
| Field | Type | Description |
|---|---|---|
recordType | String | listing |
listingId | Integer | TCGPlayer listing id |
productId | Integer | Catalog product id |
url | String | Public product URL |
productName | String | Card / product title |
productLineName | String | e.g. pokemon |
setName / setCode | String | Expansion |
rarityName / cardNumber | String | Rarity and collector number when present |
condition | String | Near Mint, Lightly Played, … |
printing | String | Normal, Holofoil, … |
language | String | Print language |
quantity | Integer | Available quantity |
price | Number | Listing price (USD) |
shippingPrice | Number | Shipping (USD) |
priceWithShipping | Number | Price + shipping |
currency | String | USD |
marketPrice / medianPrice / lowestPrice | Number | Product-level market stats |
lowestPriceWithShipping | Number | Cheapest offer including shipping |
totalListings | Integer | Live listing count on the SKU |
sellerName / sellerKey / sellerId | String | Seller identity |
sellerRating / sellerSales | Number / String | Public rating and sales band |
goldSeller / verifiedSeller / directSeller | Boolean | Program flags |
sellerPrograms | Array | Direct, Pro, CertifiedHobbyShop, … |
lastSalePrice / lastSaleDate | Number / String | When includeSalesHistory is on |
recentSales | Array | Compact completed-sale rows |
source | String | search, product_url, or seller_shop |
searchQuery | String | Keyword or seller that produced the row |
scrapedAt | String | ISO scrape time |
Example listing row:
{"recordType": "listing","source": "product_url","listingId": 794438088,"productId": 219058,"productName": "Charizard - 3/70 (#39 Charizard Stamped)","setName": "SWSH04: Vivid Voltage","condition": "Lightly Played","printing": "Normal","price": 19.99,"shippingPrice": 2.99,"priceWithShipping": 22.98,"currency": "USD","marketPrice": 7.78,"sellerName": "Damos CardShop","sellerRating": 100,"url": "https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard-370-39-charizard-stamped","scrapedAt": "2026-08-24T12:00:00+00:00"}
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/tcgplayer-listings-scraper').call({startUrls: [{ url: 'https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard' }],maxItems: 50,proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] },});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("crawloop/tcgplayer-listings-scraper").call(run_input={"searchKeywords": ["charizard"],"productLine": "pokemon","maxItems": 50,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],},})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[0])
cURL
curl "https://api.apify.com/v2/acts/crawloop~tcgplayer-listings-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchKeywords":["charizard"],"productLine":"pokemon","maxItems":25}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/tcgplayer-listings-scraper.
Example prompts:
- "Run TCGPlayer Listings Scraper on https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard, max 50, residential proxy, and return productName, price, condition, sellerName as JSON"
- "Scrape the TCGPlayer shop for seller ProSoul Games, Pokémon Charizard only, and summarize prices and quantities"
- "Pull TCGPlayer listings for charizard, then run Cardmarket Listings Scraper for the same SKU to compare USD vs EUR asks"
Suite next step
TCGPlayer is the US TCG offer firehose. Next, run Cardmarket Listings Scraper on the same SKU for EU asks. For PSA 10 pop / gem rate, chain PSA Population Report Scraper; for weekly auction hammer, Fanatics Collect Scraper. Sold-comp volume still goes to eBay Sold Listings Scraper.
FAQ
Is this an official TCGPlayer API?
No. New developer API applications are closed. This Actor reads the public marketplace JSON the website uses and returns structured dataset rows — a practical TCGPlayer API alternative for pipelines.
Can I scrape a TCGPlayer seller shop by name?
Yes — set sellerNames (or paste a search URL with seller= / a sellerfeedback URL in startUrls). Add shopQuery to keep only matching card names.
Can I paste a TCGPlayer product URL?
Yes — startUrls accepts product pages (all seller listings), search URLs (q + game), and seller URLs.
Do I need a TCGPlayer API key or login?
No — public marketplace data only.
Does it need a residential proxy?
On Apify, recommended — residential. Marketplace JSON often works without a proxy locally. The Actor injects RESIDENTIAL on the platform when proxyConfiguration is omitted (API / MCP / cURL).
Why not a catalog dump Actor?
Nightly price CSVs already cover bulk catalog snapshots. This Actor is listings: live seller offers, shops, and monitors — the weekly job, not a one-shot export.
What is monitor mode?
With monitorMode: true, seen listing IDs are stored in a named Key-Value store. The first run is the baseline. Later scheduled runs push and charge only IDs not seen before.
Python / Node.js / MCP?
Yes — use the Apify client examples above or Apify MCP prompts.
Related Actors
| Actor | Focus |
|---|---|
| TCGPlayer Listings Scraper ◄── you are here | TCGPlayer listings and shops |
| Cardmarket Listings Scraper | EU TCG listings and shops |
| Fanatics Collect Scraper | Weekly / Premier auctions + sold |
| PSA Population Report Scraper | PSA pop census and gem rate |
| Whatnot Listings Scraper | Whatnot listings, shops, optional shows |
| Goldin Auctions Scraper | Sports cards / TCG auctions |
| PriceCharting Scraper | TCG / games / comics guides |
| eBay Sold Listings Scraper | eBay sold comps |