
TCGplayer Scraper
hipersoft/tcgplayer-scraper
Scrape TCGplayer trading-card prices: market price, median, lowest price, listings, set, rarity and number for Pokémon, Magic, Yu-Gi-Oh!, Lorcana, One Piece and more, plus optional 3-month sales history. Export CSV/JSON.
Total users
2Monthly users
1Total runs
26Per product
$0.0015Last rebuilt
Oct 26, 2026Overview
TCGplayer Scraper extracts trading-card prices from TCGplayer (tcgplayer.com), the biggest US marketplace for Pokémon, Magic: The Gathering, Yu-Gi-Oh!, Disney Lorcana, One Piece, Flesh and Blood, Digimon, Dragon Ball Super and Star Wars: Unlimited cards and sealed products. Every product includes the TCGplayer market price, median price, lowest price, lowest price with shipping, number of listings, game, set, set code, card number, rarity, card type, release date, image and link. Optionally add 3-month sales history with average daily sales, total sold and recent market-price points per condition. Export to CSV, Excel or JSON.
What does TCGplayer Scraper do?
- 🃏 Search any card or product across all major trading-card games.
- 💵 Prices: market price, median, lowest and lowest-with-shipping in USD.
- 📦 Supply: number of active listings.
- 🏷️ Card details: set, set code, number, rarity, card type and release date.
- 📈 Sales history (optional): average daily sales, total sold in 3 months and market-price trend per variant and condition.
- 🎯 Filters: game, set, rarity, sealed products only and minimum market price.
- 🔃 Sort by best match or market price (high or low).
- 🖼️ Card images in high resolution.
What data can you scrape from TCGplayer?
| Field | Description |
|---|---|
| Product ID, name, link | TCGplayer product |
| Image | High-resolution product image |
| Game, set, set code | Product line and set |
| Number, rarity, card type | Card details |
| Sealed, foil only | Product flags |
| Release date | Set release date |
| Market price | TCGplayer market price (USD) |
| Median, lowest | Median and lowest listing prices |
| Lowest with shipping | Cheapest delivered price |
| Listings | Active listing count |
| Sales history | Daily sales, 3-month volume, price points |
Use cases for TCGplayer price data
- Collectors: value your collection and track card prices over time.
- Card shops and resellers: set buy and sell prices from real market data.
- Investors: find sealed products and chase cards with rising prices and strong sales.
- Price-tracking apps and Discord bots: feed live card prices into your tools.
- Content creators: publish "most valuable cards" and set-value lists.
How to scrape TCGplayer
- Click Try for free to open TCGplayer Scraper in Apify Console.
- Enter search terms and pick a game.
- Optionally set set, rarity, sealed only, sort or minimum market price.
- Turn on Include 3-month sales history if you need sales data.
- Click Start and download the data as CSV, Excel or JSON.
Input
Example input
{
"searchTerms": ["charizard"],
"productLine": "pokemon",
"sortBy": "priceHigh",
"minMarketPrice": 50,
"includeSalesHistory": true,
"maxItems": 200
}
| Field | Description |
|---|---|
| Search terms | Card or product names. Empty = browse the whole game. |
| Game | Pokémon, Magic, Yu-Gi-Oh!, Lorcana, One Piece and more. |
| Set, Rarity | Optional filters. |
| Sealed products only | Booster boxes, ETBs, tins… |
| Sort by | Best match or market price. |
| Minimum market price | Price floor in USD. |
| Include 3-month sales history | Adds sales data. |
| Max products | Stop after this many (0 = up to 10,000 per search). |
Output
Product example
{
"productId": 635609,
"name": "Paldean Fates Booster Bundle Display Case",
"url": "https://www.tcgplayer.com/product/635609/pokemon-sv-paldean-fates-paldean-fates-booster-bundle-display-case",
"imageUrl": "https://tcgplayer-cdn.tcgplayer.com/product/635609_in_1000x1000.jpg",
"game": "Pokemon",
"set": "SV: Paldean Fates",
"setCode": "PAF",
"rarity": null,
"releaseDate": "2024-01-26T00:00:00Z",
"marketPrice": 8999.99,
"medianPrice": 11499.99,
"lowestPrice": 10500,
"lowestPriceWithShipping": 10500,
"totalListings": 5,
"currency": "USD",
"salesHistory": [
{
"variant": "Normal",
"condition": "Unopened",
"language": "English",
"avgDailySold": 0,
"totalSold3Months": 0,
"recentMarketPrices": [{ "date": "2026-10-06", "marketPrice": 8952.21, "sold": 0 }]
}
]
}
Output schema
| Field | Type | Description |
|---|---|---|
productId, name, url, imageUrl |
mixed | Product. |
game, set, setCode, number, rarity, cardType |
string | Card details. |
sealed, foilOnly, releaseDate |
mixed | Flags and date. |
marketPrice, medianPrice, lowestPrice, lowestPriceWithShipping |
number | Prices (USD). |
totalListings |
number | Active listings. |
description |
string | Product description. |
salesHistory |
array | 3-month sales data (optional). |
search, scrapedAt |
string | Source info. |
How much does it cost to scrape TCGplayer?
TCGplayer Scraper uses pay-per-product pricing: a small fixed price per product, with automatic discounts on higher Apify plans. See the Pricing tab for the exact price.
More collectibles and marketplace data
- eBay Scraper: eBay listings and sold prices.
FAQ
What is the market price? TCGplayer's market price is based on recent completed sales, the standard reference price for trading cards.
Can I get prices for every card in a set? Yes. Leave Search terms empty, choose the Game and enter the Set.
How many products can I get? Up to 10,000 per search. Use several searches or set filters for more.
What formats can I export? CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.
Can I integrate TCGplayer Scraper with other apps? TCGplayer Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JS/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Is it legal to scrape TCGplayer? The scraper only collects publicly displayed product and price information. You are responsible for using the data in line with TCGplayer's terms.
Notes
Original clean-room implementation. Returns only public data. Not affiliated with TCGplayer or any card publisher.
Input
| Field | Type | Description |
|---|---|---|
searchTermsSearch terms | array | Card or product names, e.g. charizard, black lotus, blue-eyes white dragon, booster box. Leave empty to browse the whole game. |
productLineGame | string · , pokemon, magic, yugioh, lorcana-tcg, one-piece-card-game… | Only products from this game. Default: "pokemon" |
setNameSet | string | Optional set name, e.g. SV: Paldean Fates, Base Set, Alpha Edition. |
rarityRarity | string | Optional rarity as shown on TCGplayer, e.g. Special Illustration Rare, Mythic, Secret Rare. |
sealedOnlySealed products only | boolean | Only sealed products (booster boxes, ETBs, tins…). Default: false |
sortBySort by | string · relevance, priceHigh, priceLow | Result order. Default: "relevance" |
minMarketPriceMinimum market price (USD) | integer | Only products worth at least this much. Default: 0 |
includeSalesHistoryInclude 3-month sales history | boolean | Add average daily sales, total sold in the last 3 months and recent market-price points per variant and condition. Default: false |
maxItemsMax products | integer | Stop after this many products. 0 means no limit (up to 10,000 per search). Default: 200 |
proxyConfigurationProxy configuration | object | Not required for normal use. Default: {"useApifyProxy": false} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~tcgplayer-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": [
"charizard"
],
"maxItems": 50
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/tcgplayer-scraper").call(run_input={
"searchTerms": [
"charizard"
],
"maxItems": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/tcgplayer-scraper').call({
"searchTerms": [
"charizard"
],
"maxItems": 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Product One TCGplayer product with prices | $0.0015 | $0.0008 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.