TCGplayer Scraper - Card Prices, Listings & Market Data
Pricing
from $3.00 / 1,000 products
TCGplayer Scraper - Card Prices, Listings & Market Data
Scrape TCGplayer card and sealed product prices without a login. Search any card or browse a whole game, filter by set, rarity and type, and get market price, lowest price with shipping, listing count, card details and the cheapest live offers. Optional price change tracking.
Pricing
from $3.00 / 1,000 products
Rating
0.0
(0)
Developer
Goutam Soni
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
TCGplayer Scraper - Card Prices, Listings and Market Data
Extract trading card and sealed product prices from the TCGplayer marketplace without a login or API key. Search any card, browse a whole game, or narrow down by set, rarity and product type, and every product comes back in one clean row with its market price, lowest price, lowest price with shipping, live listing count and the cheapest offers on sale right now.
Works for every game on the marketplace, including Pokemon, Pokemon Japan, Magic: The Gathering, Yu-Gi-Oh!, One Piece Card Game, Disney Lorcana, Flesh and Blood, Digimon and Star Wars: Unlimited.
What it does
- Search - every product matching a phrase such as a card name, a set or a sealed product, in the marketplace's own ranking or sorted by best selling, market price, release date or name.
- Browse a game - leave the search empty, pick a game, and sweep its catalogue set by set or rarity by rarity.
- Filters - game, set, rarity and product type (single cards or sealed product). A filter value that matches nothing is reported in the run log, so a typo never passes silently.
- Prices - market price, median listing price, lowest price and lowest price with shipping, all in US dollars.
- Market depth - the number of live listings for each product.
- Cheapest live offers - price, shipping, condition, printing, language, quantity and seller details for the lowest-priced listings.
- Card details - card number, rarity, release date and the game's own attributes (for example HP, energy type, attacks, colour, card type).
- Price watch - turn on change tracking and schedule the actor. Each run adds the previous market price, lowest price and listing count, plus the change in each, so you build a price and supply history without any extra tooling.
- Pagination - walked automatically, 50 products at a time, until your limit is reached. Duplicates are removed across the whole run.
Use cases
- Price a collection or a buylist against the live market.
- Track daily price moves and listing counts for the cards you sell.
- Spot underpriced offers by comparing the lowest price with shipping to the market price.
- Feed a price tracker app, a spreadsheet or a dashboard on a schedule.
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array | Phrases to search. Example: charizard, black lotus, booster box. |
productLines | array | Games to include. Example: pokemon, magic, yugioh, one piece card game, lorcana. Short forms mtg, ygo, fab work too. |
setNames | array | Sets as the marketplace shows them. Example: SV03: Obsidian Flames. |
rarities | array | Rarities as the marketplace shows them. Example: Special Illustration Rare. |
productTypes | array | Cards for singles, Sealed Products for boxes, packs and tins. |
sort | string | relevance, best_selling, price_high, price_low, newest, name. |
maxItemsPerSource | integer | Cap per search phrase (or per game when browsing). Default 100, up to 9,999. |
trackChanges | boolean | Add changes against the previous run with the same watch name. Default off. |
watchName | string | Name of the price watch to compare against. Default default. |
concurrency | integer | Search phrases processed in parallel. Default 3. |
proxyConfiguration | object | Optional proxy settings. The default works for most runs. |
At least one of searchQueries or productLines is required.
Example input
{"searchQueries": ["charizard", "pikachu"],"productLines": ["pokemon"],"productTypes": ["Cards"],"sort": "price_high","maxItemsPerSource": 200,"trackChanges": true,"watchName": "pokemon-chase-cards"}
Output
Each item is one product.
{"productId": "100001","productName": "Example Dragon ex - 201/190","productLine": "Pokemon","setName": "Example Set","setCode": "EXS","cardNumber": "201/190","rarity": "Special Illustration Rare","isSealed": false,"foilOnly": false,"url": "https://www.tcgplayer.com/product/100001/pokemon-example-set-example-dragon-ex-201-190","marketPrice": 94.33,"medianListingPrice": 99.5,"lowestPrice": 85,"lowestPriceWithShipping": 86.49,"currency": "USD","totalListings": 212,"releaseDate": "2025-08-11T00:00:00Z","attributes": {"hp": "330","stage": "Stage 2","energyType": ["Fire"],"attack1": "[R] Example Blaze (180)"},"flavorText": null,"description": null,"imageUrl": "https://tcgplayer-cdn.tcgplayer.com/product/100001_in_1000x1000.jpg","cheapestListings": [{"price": 85,"shippingPrice": 1.49,"priceWithShipping": 86.49,"condition": "Near Mint","printing": "Holofoil","language": "English","quantity": 1,"sellerName": "Example Card Shop","sellerRating": 99.9,"sellerSales": "10000+","goldSeller": true,"verifiedSeller": true,"directSeller": false,"listedAt": null}],"searchQuery": "charizard","position": 1,"scrapedAt": "2026-10-12T09:00:00.000Z","previousMarketPrice": 91.2,"marketPriceChange": 3.13,"marketPriceChangePercent": 3.4,"previousLowestPrice": 82,"lowestPriceChange": 3,"previousTotalListings": 220,"totalListingsChange": -8,"previousSnapshotAt": "2026-10-11T09:00:00.000Z","isNewInWatch": false}
The previous..., ...Change and isNewInWatch fields appear only when change tracking is on. A product with no recent sales has a null market price; its lowest price and listings are still filled in.
If a search finds nothing, the dataset gets one row with "ok": false and "error": "no_results", so an empty search is never mistaken for a failed run.
Notes
- Prices are in US dollars, as listed on the US marketplace.
- Any single search can reach at most 9,999 results. For a full catalogue sweep, split it by set or by rarity.
- Change tracking compares runs with the same watch name. Use a separate watch name for each list you schedule.
- To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.
Found this useful? Leave a quick review. It takes a few seconds and it genuinely helps other people find the actor.