TCGplayer Card Price Scraper — 8 TCGs · No Cap
Pricing
$3.00 / 1,000 result items
TCGplayer Card Price Scraper — 8 TCGs · No Cap
Search TCGplayer across 8 TCGs (Pokemon, Magic, Yu-Gi-Oh, Lorcana & more) for product prices or live seller listings with condition, printing, language & seller rating. No cap on results. $0.003/item.
Pricing
$3.00 / 1,000 result items
Rating
0.0
(0)
Developer
Gio
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
3
Monthly active users
17 days ago
Last modified
Categories
Features
Share
Why use this scraper
TCGplayer prices move hour to hour: a single bulk buy, a tournament result, or a reprint announcement can shift a card's market price by double digits in a day. Anyone buying or selling cards at volume (shop owners restocking, flippers hunting undervalued listings, collection appraisers, price-tracking apps) needs a feed of what cards actually cost right now, not a cached number from last week.
Pulling this by hand means opening TCGplayer, searching one card at a time, and manually reading market price, median price, and the cheapest live listings off the page. For a shop with a few hundred SKUs, or a flipper scanning a few thousand cards a day, that does not scale. This scraper turns a search query (or a batch of them) into structured JSON: product-level price summaries, or, when you need it, every individual seller listing for a card, with seller rating, condition, printing, and shipping cost included.
Overview
Give it a search query (a card name, a product name, or a batch of several) and a game, and it returns one record per matching product, or, when "Include seller listings" is on, one record per individual seller listing for the top matches, sorted by total price. Output includes product ID, name, set, collector number, rarity, market and median price, and, in listings mode, seller name, rating, sales count, verified/gold/direct-seller badges, condition, printing, language, item price, shipping, and total price. A typical run of 20 to 50 items finishes in under a minute; a listings run that opens several products takes longer because each product page is fetched individually.
Supported inputs
- Single search query —
query: one card or product name (e.g. "Charizard ex", "Black Lotus"). Searches the selected game's TCGplayer catalog. - Multiple search queries —
queries: a list of search terms run in one call; takes precedence overquerywhen both are set. Use this to price out a whole want-list or a restock sheet in one run. - Game filter —
game: pick one of 8 supported trading card games (Pokemon, Magic: The Gathering, Yu-Gi-Oh!, Disney Lorcana, One Piece, Flesh and Blood, Digimon, Star Wars Unlimited), orallto search across every game on TCGplayer at once. - Sort order —
sortOption: best match, price ascending/descending, best selling, newest, or name A-Z, matching the sort options on the TCGplayer search page itself. - Seller listings mode —
includeListings: trueswitches from product-level price summaries to individual seller listings, withcondition,printing,language,maxProducts(how many matched products to open) andmaxListingsPerProductto control scope and cost.
Use cases
- Card shop owners pricing restock sheets against the live market before placing a bulk buy order, instead of checking each card by hand.
- Flippers and arbitrage sellers scanning for listings priced well under market or median, filtered by condition and printing, to resell at a margin.
- Collection appraisers and insurers pulling current market and median price for a list of cards to value a collection at a point in time.
- Price-tracking apps and spreadsheets refreshing a watchlist of cards daily or weekly without a human opening TCGplayer.
- Deck builders and tournament players comparing the cheapest legal printing of a card (foil vs normal, which language) before buying singles for a deck.
How it works
The scraper requests TCGplayer's own search and product pages for the query and game you give it, the same pages a shopper's browser would load, and parses the structured price and listing data already embedded in the page rather than guessing from visible text. In product mode it reads the market price, median price, and listing count straight off the search result; in listings mode it opens each matched product's page and reads every individual seller row (price, shipping, condition, printing, language, seller reputation) in the order TCGplayer itself ranks them. No login or session is required for either mode, since TCGplayer serves price data on public pages.
Input configuration — 3 examples
1. Quick price check on one card:
{"query": "Charizard ex","game": "pokemon","maxItems": 20}
2. Batch price-out of a want-list across games:
{"queries": ["Black Lotus", "Mox Sapphire", "Time Walk"],"game": "magic","sortOption": "price-desc","maxItems": 50}
3. Live seller listings for arbitrage, Near Mint only:
{"query": "Charizard ex","game": "pokemon","includeListings": true,"condition": "Near Mint","maxProducts": 5,"maxListingsPerProduct": 20}
Output sample
Product mode (real output, query=Lightning Bolt, game=magic):
{"productId": 35427,"name": "Lightning Bolt","set": "Magic 2011 (M11)","number": "149","rarity": "Common","game": "Magic: The Gathering","marketPrice": 1.08,"medianPrice": 1.21,"query": "Lightning Bolt","scrapedAt": "2026-10-22T22:43:10.858Z"}
Seller listings mode (real output, same card, includeListings=true):
{"productId": 35427,"name": "Lightning Bolt","listingId": 883469487,"seller": "Underground Zone","sellerRating": 100,"sellerSales": "50000+","verifiedSeller": true,"goldSeller": true,"directSeller": true,"condition": "Damaged","printing": "Normal","language": "English","price": 0.78,"shippingPrice": 1.49,"totalPrice": 2.27,"quantity": 1,"currency": "USD","url": "https://www.tcgplayer.com/product/35427"}
Key output fields
| Field | Type | Description |
|---|---|---|
productId | integer | TCGplayer internal product ID. |
name | string | Card or product name. |
set | string | Set the card belongs to. |
number | string | Collector number within the set. |
rarity | string | Card rarity as listed by TCGplayer. |
game | string | Trading card game the product belongs to. |
marketPrice | float | TCGplayer market price (USD), product mode only. |
medianPrice | float | TCGplayer median price (USD), product mode only. |
listingId | integer | Unique ID of the individual seller listing, listings mode only. |
seller | string | Seller store name, listings mode only. |
sellerRating | integer | Seller rating (0-100), listings mode only. |
sellerSales | string | Seller's lifetime sales bracket, listings mode only. |
verifiedSeller / goldSeller / directSeller | boolean | TCGplayer seller badges, listings mode only. |
condition | string | Card condition (Mint to Damaged), listings mode only. |
printing | string | Printing/finish (Normal, Foil, Holofoil, etc.), listings mode only. |
language | string | Card language, listings mode only. |
price / shippingPrice / totalPrice | float | Item price, shipping, and total, listings mode only. |
quantity | integer | Units the seller has in stock at that price, listings mode only. |
Pricing
Pay-per-result, no subscription:
| Event | Price |
|---|---|
| Result item (product or seller listing, charged once per record) | $0.003 |
Errors are not charged. A 50-item product search costs about $0.15; a seller-listings run opening 10 products at 20 listings each returns up to 200 records for about $0.60.
What makes this richer than the competition
Most TCGplayer scrapers on the Store return one game and one price per card. This one covers all 8 major TCGs TCGplayer sells (Pokemon, Magic, Yu-Gi-Oh!, Lorcana, One Piece, Flesh and Blood, Digimon, Star Wars Unlimited) from a single actor, plus an all mode that searches every game at once — memo23's own card-price actors are scoped to a single game per listing. maxItems also accepts 0 for no limit, so a full want-list or a shop's whole restock sheet can run in one call instead of paging through a fixed cap.
On seller data: devcake/tcgplayer-data-scraper (15 users/30d) and solidcode/tcgplayer-scraper (5 users/30d) both return seller listings, but neither advertises per-listing seller trust badges (verified, gold, direct) alongside condition, printing and language in the same record — this actor returns all of it in one pass per listing, so a buyer can filter for a trustworthy seller and the right condition without opening a second page.
Notes & limitations
- Product-mode
marketPrice/medianPricereflect TCGplayer's own aggregate pricing for the product; they are not recalculated or adjusted by this actor. - Seller listings mode opens each matched product individually, so it is slower and costs more per record than product mode; keep
maxProductsandmaxListingsPerProducttight for a quick check. sellerSalesis returned as the bracket TCGplayer displays (e.g. "50000+"), not an exact lifetime count.- This actor reads TCGplayer's own public pages; it does not track price history over time. Run it on a schedule and store the results yourself to build a history.
FAQ
Does this need a TCGplayer account or API key? No. Both product search and seller listings are read from TCGplayer's public pages.
Can I search more than one card in a single run?
Yes, use queries with a list of card or product names instead of the single query field.
What's the difference between market price and median price? Market price is TCGplayer's rolling average sale price; median price is the midpoint of recent sales. Both come straight from TCGplayer, unmodified.
Can I filter seller listings by condition or foil/non-foil printing?
Yes, condition and printing filter individual listings when includeListings is on.
Does maxItems: 0 really return everything with no cap?
Yes, set it to 0 and the run returns every matching product (or every listing, in listings mode) instead of stopping at a fixed count.
For AI Agents & LLM Apps
This Actor is MCP-compatible and works as a tool call for any LLM agent that needs live trading-card prices.
Via MCP (mcp.apify.com): add this Actor as a tool in your MCP-compatible client and call it with a query and game; the agent gets back structured JSON it can reason over directly, no HTML parsing needed.
Via API (run-sync-get-dataset-items):
curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-X POST -H "Content-Type: application/json" \-d '{"query": "Charizard ex", "game": "pokemon", "maxItems": 10}'
This returns the dataset items directly in the response, ideal for a single synchronous tool call from an agent pipeline.
Disclaimer
This Actor is an independent tool that reads publicly available pages on tcgplayer.com. It is not affiliated with, endorsed by, or sponsored by TCGplayer, LLC. "TCGplayer" and related marks are trademarks of their respective owners, used here only to describe the data source.
SEO Keywords
TCGplayer scraper, Pokemon card price API, Magic the Gathering price scraper, TCG seller listings scraper, trading card price tracker, TCGplayer API alternative.