Pricing
from $60.00 / 1,000 results
Tcgplayer Products Listings Sales Scraper
Scrape every seller listing for any TCGplayer.com product. 28 fields per listing: price, shipping, condition, printing variant (Normal/Holofoil), seller rating, sales count, Gold Seller status, and more. Includes market/median/lowest prices, condition breakdowns, and optional sales history.
Pricing
from $60.00 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
3
Bookmarked
20
Total users
0
Monthly active users
3 months ago
Last modified
Categories
Share
TCGplayer Product Scraper โ Listings, Prices & Sales
Paste any TCGplayer.com product URL and get every seller listing with 28 data fields, complete pricing data, condition breakdowns, and optional sales history. Works with Pokรฉmon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, and every other TCGplayer product line.
Why Use This Actor?
- Complete listing capture โ Gets ALL seller listings for a product, not just the first page. Uses TCGplayer's internal API with pagination to fetch every single listing.
- 28 fields per listing โ Price, shipping, condition, printing variant, seller rating, seller sales count, Gold Seller status, TCGplayer Direct status, seller programs, and more.
- Product-level aggregations โ Instant breakdowns by condition, printing (Normal vs Holofoil), language, listing type, and quantity โ no post-processing needed.
- Multi-strategy extraction โ Five layered strategies (API interception, request replay, Playwright context, in-page fetch, SSR state, DOM scraping) ensure data is captured even when individual methods fail.
- Anti-bot resilient โ Built on Playwright with session pooling, residential proxy support, and human-like browsing patterns to handle TCGplayer's DataDome protection.
Features
| Feature | Description |
|---|---|
| Product detail scraping | Full product metadata: name, set, product line, market/median/lowest prices |
| Complete seller listings | Every active listing with price, shipping, condition, printing, seller trust data |
| Seller intelligence | Rating, sales count, Gold Seller, Verified Seller, Direct Seller, seller programs |
| Condition & variant data | Card condition (NM/LP/MP/HP/DMG), printing (Normal/Holofoil/1st Edition), language |
| Aggregation breakdowns | Product-level counts by condition, printing, language, listing type |
| Sales history (optional) | Historical sales data with prices, quantities, and dates |
| All product lines | Pokรฉmon, Magic, Yu-Gi-Oh!, One Piece, Flesh and Blood, Disney Lorcana, and more |
| Proxy support | Auto-enables Apify residential proxies for reliable scraping |
| Session management | Automatic session rotation to avoid blocks |
Input
Simply provide one or more TCGplayer product URLs:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
productUrls | array | Yes | โ | TCGplayer product page URLs to scrape |
includeSalesHistory | boolean | No | false | Attach sales history to each product |
useApifyProxy | boolean | No | true | Route requests through Apify Proxy |
proxyConfiguration | object | No | Residential US | Proxy settings (RESIDENTIAL + US recommended) |
maxConcurrency | integer | No | 5 | Parallel browser pages |
delayBetweenRequestsMs | integer | No | 1000 | Delay between requests in ms |
maxRequestRetries | integer | No | 5 | Retries per failed request |
requestHandlerTimeoutSecs | integer | No | 120 | Timeout per request in seconds |
Example Input
{"productUrls":[{"url":"https://www.tcgplayer.com/product/632994/pokemon-sv10-destined-rivals-mistys-lapras-194-182?Language=English"}],"includeSalesHistory":true}
Multiple Products
{"productUrls":[{"url":"https://www.tcgplayer.com/product/632994/pokemon-sv10-destined-rivals-mistys-lapras-194-182?Language=English"},{"url":"https://www.tcgplayer.com/product/632473/one-piece-card-game-a-fist-of-divine-speed-after-all-these-years-im-losing-my-edge?Language=English"},{"url":"https://www.tcgplayer.com/product/564929/pokemon-prismatic-evolutions-umbreon-ex-special-art-rare-161"}],"includeSalesHistory":false,"maxConcurrency":3}
Output Schema
Each product in the dataset includes:
{"productId":"632994","productName":"Misty's Lapras (194/182)","productUrl":"https://www.tcgplayer.com/product/632994/...","setName":"SV10: Destined Rivals","setId":24873,"productLine":"Pokemon","marketPrice":4.61,"medianPrice":7.80,"lowestPrice":1.50,"lowestPriceWithShipping":1.95,"totalListings":29,"totalSellers":21,"aggregations":{"condition":[{"value":"Near Mint","count":20},{"value":"Lightly Played","count":5}],"printing":[{"value":"Normal","count":21},{"value":"Reverse Holofoil","count":4}],"language":[{"value":"English","count":25}],"listingType":[{"value":"standard","count":23},{"value":"custom","count":2}]},"listings":[{"listingId":649554399,"price":1.98,"shippingPrice":1.31,"condition":"Near Mint","conditionId":1,"language":"English","languageAbbreviation":"EN","printing":"Normal","quantity":1,"listingType":"standard","sellerName":"CardShop Plus","sellerId":"548047","sellerKey":"313506d5","sellerRating":100,"sellerSales":"1167","sellerPrograms":["Pro"],"goldSeller":true,"verifiedSeller":false,"directSeller":false,"directListing":false,"directProduct":true,"channelId":1,"sellerShippingPrice":0,"rankedShippingPrice":1.31,"forwardFreight":false,"productId":632994,"productConditionId":1214229}],"salesHistory":{"skuId":"632994","buckets":[{"marketPrice":3.50,"quantitySold":2,"bucketStartDate":"2026-02-01"}]},"sourceUrl":"https://www.tcgplayer.com/product/632994/...","scrapedAt":"2026-02-20T17:47:22.348Z"}
Listing Fields (28 per listing)
| Field | Type | Description |
|---|---|---|
listingId | number | Unique listing identifier |
price | number | Listing price in USD |
shippingPrice | number | Calculated shipping cost |
condition | string | Card condition (Near Mint, Lightly Played, etc.) |
conditionId | number | TCGplayer condition ID |
language | string | Card language (e.g. "English") |
languageAbbreviation | string | Language code (e.g. "EN") |
printing | string | Print variant (Normal, Reverse Holofoil, 1st Edition, etc.) |
quantity | number | Available quantity |
listingType | string | "standard" or "custom" |
sellerName | string | Seller display name |
sellerId | string | Seller unique ID |
sellerKey | string | Seller hash key |
sellerRating | number | Seller feedback rating (0-100%) |
sellerSales | string | Total completed sales (e.g. "50000+") |
sellerPrograms | array | Seller programs (Pro, Direct, VIP, CertifiedHobbyShop) |
goldSeller | boolean | TCGplayer Gold Star seller |
verifiedSeller | boolean | Identity-verified seller |
directSeller | boolean | TCGplayer Direct seller |
directListing | boolean | Listing fulfilled by TCGplayer Direct |
directProduct | boolean | Product eligible for TCGplayer Direct |
channelId | number | Sales channel (0 = marketplace, 1 = Direct) |
sellerShippingPrice | number | Seller's own shipping rate |
rankedShippingPrice | number | Shipping rate used for price+shipping ranking |
forwardFreight | boolean | Forward freight shipping flag |
productId | number | Parent product ID |
productConditionId | number | Product-condition combination ID |
customData | object | Additional data (e.g. listing images) |
Example Use Cases
1. Price Monitoring โ Track a Specific Card
{"productUrls":[{"url":"https://www.tcgplayer.com/product/564929/pokemon-prismatic-evolutions-umbreon-ex-special-art-rare-161"}],"includeSalesHistory":true}
2. Bulk Price Check โ Multiple Cards at Once
{"productUrls":[{"url":"https://www.tcgplayer.com/product/86222/pokemon-aquapolis-houndour-87"},{"url":"https://www.tcgplayer.com/product/564929/pokemon-prismatic-evolutions-umbreon-ex"},{"url":"https://www.tcgplayer.com/product/521389/magic-the-gathering-foundations-llanowar-elves"}],"maxConcurrency":3}
3. Arbitrage Detection
Scrape a product to get all seller listings, then compare each listing's price + shippingPrice against the marketPrice to find underpriced cards.
4. Seller Intelligence
Each listing includes sellerName, sellerId, sellerRating, sellerSales, goldSeller, and sellerPrograms โ enough to build seller profiles and track inventory levels.
5. Cross-Game Comparison
Works with every TCGplayer product line โ compare listing density and pricing across Pokemon, Magic, Yu-Gi-Oh!, One Piece, and more.
How It Works
The scraper uses a multi-strategy extraction engine to reliably capture all data:
- Product Details API โ Fetches metadata (total listings, market price, seller count) from TCGplayer's product details endpoint.
- API Interception โ Captures the browser's API calls during page load via Playwright response interception.
- Request Replay โ Replays the exact API request with pagination to fetch ALL listings.
- Playwright APIRequestContext โ Direct API calls sharing the browser's cookies and proxy.
- In-Page Fetch โ Executes
fetch()inside the browser context, inheriting authentication cookies. - SSR State Extraction โ Parses server-side rendered state from the page source.
- DOM Scraping โ Last resort: extracts data from rendered HTML.
Each strategy's results are compared, and the largest complete dataset wins.
Anti-Bot Handling
TCGplayer uses DataDome for bot protection. This actor handles it with:
- Residential proxies โ Recommended. Auto-enabled on Apify.
- Session pooling โ Automatic session rotation with configurable usage limits.
- Human-like delays โ Configurable delay between requests (default 1s).
- Browser fingerprinting โ Full Playwright browser with realistic headers.
- Block detection โ Detects DataDome challenge pages and retries with a fresh session.
Tip: For best results, use RESIDENTIAL proxies with US country code:
{"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}}
Supported Product Lines
- Pokรฉmon
- Magic: The Gathering
- Yu-Gi-Oh!
- One Piece Card Game
- Disney Lorcana
- Flesh and Blood
- Dragon Ball Super
- Digimon
- Star Wars: Unlimited
- And all other TCGplayer categories
Troubleshooting
"0 listings" or empty results
- Check proxy config: Use residential proxies with US country code.
- Verify the URL: Product URLs must contain a numeric product ID (e.g.
/product/632994/...). - Check the product page: Some products may have no active sellers.
DataDome block / "Just a moment" page
- The actor detects blocks and retries automatically (up to
maxRequestRetriestimes). - Reduce
maxConcurrencyto 2โ3 and increasedelayBetweenRequestsMsto 2000+ if blocks persist.
Slow runs
- Each product takes 30โ60 seconds due to browser rendering and API pagination.
- Default memory (4096 MB) is recommended for Playwright-based scraping.
Limitations
- TCGplayer.com only โ Does not support other marketplaces.
- English listings by default โ API requests filter for English-language listings.
- US shipping context โ Prices and shipping are calculated for US delivery.
- Real-time pricing โ Results reflect pricing at scrape time.
Changelog
v1.0.16 (February 2026)
- Simplified to product URL-only input (removed search/startUrls)
- Improved defaults: maxConcurrency=5, maxRequestRetries=5
- Updated documentation and input schema
v1.0.15 (February 2026)
- Added README, output schema, and dataset schema
- Updated actor.json with SEO metadata
v1.0.14 (February 2026)
- 28 fields per listing including seller programs, printing variant, Gold/Verified/Direct status
- Product-level aggregation breakdowns
- Product details endpoint for accurate metadata
- Fixed double-nested API response parsing
- Removed channelId filter to capture ALL marketplace listings
v1.0.0 (February 2026)
- Initial release with multi-strategy extraction engine
Support
- Issues: Report bugs via GitHub issues or the Apify community
- Feature requests: Contact us through Apify
Built by A Page Ventures | Apify Store
