TCGplayer Scraper avatar

TCGplayer Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
TCGplayer Scraper

TCGplayer Scraper

[💰 $3.0 / 1K] Extract trading card prices and seller listings from TCGplayer — market, median, and lowest prices plus seller offers and optional sales history for Magic, Pokémon, Yu-Gi-Oh!, Lorcana, and more.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull live trading-card pricing from TCGplayer at scale — market, median, and lowest prices, real-time seller offers, and recent sales history for every card across Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Disney Lorcana, One Piece, and more. Search by keyword or paste the exact product pages you already track, and get one clean row per card with every price signal bundled in. Built for card investors, arbitrage sellers, local game store owners, and deck builders who need up-to-the-minute TCG market data without checking hundreds of product pages by hand.

Why This Scraper?

  • Four price signals on every card — market price, median price, lowest price, and lowest price with shipping, so you compare apples to apples instead of getting fooled by a cheap listing with a $5 shipping tax.
  • Live seller offers per card — capture up to 25+ individual offers each with seller name, seller rating, verified-seller flag, asking price, shipping cost, condition, printing, and quantity in stock.
  • True listing count even when offers are trimmedlistingCount always carries the full number of sellers (we've seen 600+ on a single hot card) even when you cap the nested offers to keep rows compact.
  • Eight trading card games in one actor — Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Disney Lorcana, Flesh and Blood, Digimon, One Piece, and Star Wars: Unlimited, scoped with a single dropdown.
  • Optional sales-history enrichment — flip one toggle to add recent completed sales (price, shipping, date, condition, printing) plus per-SKU price points (market, lowest, highest) split by Normal and Foil.
  • Five sort modes including Best Selling — order results by Best Match, Best Selling, Name A→Z, Price Low→High, or Price High→Low to surface the hottest singles or the cheapest copies first.
  • Search by keyword OR exact product URL — type "charizard" to sweep the catalog, or paste the specific TCGplayer product pages for cards already in your portfolio.
  • One billable row per card — seller offers and sales history nest inside each product row, so a card with 600 sellers is still a single result. You are never charged per offer or per sale.

Use Cases

Card Investing & Portfolio Tracking

  • Monitor market price moves on the singles you hold and flag breakouts early
  • Compare market vs. median to spot cards trading above or below their typical value
  • Track recent completed sales to value a collection at true clearing prices
  • Watch lowest-price floors to time buys and sells

Arbitrage & Reselling

  • Surface cards where the lowest listing sits well under market price
  • Factor lowest-price-with-shipping to find genuinely underpriced copies
  • Pull verified-seller offers and quantities to source bulk inventory
  • Sort by Best Selling to find the fastest-moving singles to flip

Local Game Store Pricing

  • Reprice your case and showcase singles against live market data every morning
  • Benchmark your buy prices against current seller-offer floors
  • Track competing sellers' conditions, printings, and shipping on key SKUs
  • Build category-wide price sheets for Magic, Pokémon, and Yu-Gi-Oh! inventory

Deck-Building & Collection Management

  • Price out a full decklist by feeding card names as search queries
  • Pull set, rarity, card number, and printing for accurate collection cataloging
  • Capture canonical product URLs and 1000×1000 card images for your database
  • Track Normal vs. Foil price points side by side

Market Research

  • Map pricing across an entire game category or expansion set
  • Analyze how condition and printing affect realized sale prices
  • Measure listing depth (seller count) as a liquidity signal per card
  • Feed structured TCG pricing into dashboards and valuation models

Getting Started

Simple — Search by Card Name

{
"searchQueries": ["charizard"],
"maxResults": 50
}

Scoped Search with Sorting

Limit to one game and surface the hottest singles first:

{
"searchQueries": ["pikachu", "snorlax"],
"category": "pokemon",
"sortBy": "bestSelling",
"maxResults": 200,
"maxListingsPerProduct": 10
}

Track Exact Cards by URL with Full History

Paste the product pages you already follow and turn on sales-history enrichment:

{
"productUrls": [
"https://www.tcgplayer.com/product/42364/pokemon-base-set-charizard",
"https://www.tcgplayer.com/product/610549/magic-the-gathering-the-one-ring"
],
"includeSalesHistory": true,
"maxListingsPerProduct": 25
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchQueriesstring[]["charizard"]Card or product names to search for, such as "charizard" or "black lotus". Each query is scraped separately.
productUrlsstring[][]Paste exact TCGplayer product page URLs to scrape specific cards directly. Use this when you already know the cards you want.

Filters

ParameterTypeDefaultDescription
categoryselect(all games)Limit searches to one game: Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Disney Lorcana, Flesh and Blood, Digimon, One Piece Card Game, or Star Wars: Unlimited. Leave blank to search across everything.
sortByselectBest MatchResult ordering: Best Match, Best Selling, Name: A to Z, Price: Low to High, or Price: High to Low.

Limits

ParameterTypeDefaultDescription
startPageinteger1Which result page to start from for each query (each page holds 24 products).
maxResultsinteger100The most products to return across the whole run. Set to 0 for no limit (be mindful of cost).

Extra Data

ParameterTypeDefaultDescription
includeSalesHistorybooleanfalseAlso collect recent sales and price points for each product, split by Normal / Foil. Adds depth at the cost of a slower run. Leave off for the fastest, lowest-cost runs.
maxListingsPerProductinteger25How many individual seller offers to include with each product. Popular cards can have hundreds — this keeps each result compact. Set to 0 to skip seller offers entirely.

Output

Each result is one product row (recordType: "product") with its seller offers and optional sales history nested inside. Here's a representative result with sales history enabled:

{
"recordType": "product",
"productId": 42364,
"name": "Charizard",
"setName": "Base Set",
"categoryName": "Pokemon",
"rarity": "Holo Rare",
"cardNumber": "4/102",
"cardType": "Fire",
"energyType": "Fire",
"printing": "Holofoil",
"condition": "Near Mint",
"marketPrice": 412.55,
"medianPrice": 399.99,
"lowestPrice": 350.00,
"lowestPriceWithShipping": 354.99,
"listingCount": 550,
"listings": [
{
"sellerName": "CardKingdomTCG",
"sellerRating": 99.8,
"verified": true,
"price": 350.00,
"shippingPrice": 4.99,
"condition": "Near Mint",
"printing": "Holofoil",
"quantity": 2
}
],
"_enrichment": {
"recentSales": [
{
"condition": "Near Mint",
"printing": "Holofoil",
"language": "English",
"quantity": 1,
"purchasePrice": 405.00,
"shippingPrice": 0.0,
"orderDate": "2026-05-27T18:22:00Z"
}
],
"pricePoints": [
{
"skuId": 1234567,
"marketPrice": 412.55,
"lowestPrice": 350.00,
"highestPrice": 899.99,
"priceCount": 488
}
]
},
"imageUrl": "https://tcgplayer-cdn.tcgplayer.com/product/42364_in_1000x1000.jpg",
"url": "https://www.tcgplayer.com/product/42364",
"sourceQuery": "charizard",
"scrapedAt": "2026-05-29T14:30:00Z"
}

Core Fields

FieldTypeDescription
recordTypestringAlways "product" — the billable unit.
productIdintegerTCGplayer product identifier.
namestringCard or product name.
setNamestringSet or expansion name.
categoryNamestringGame category (Magic, Pokemon, YuGiOh, etc.).
raritystringCard rarity, when applicable.
cardNumberstringCollector / card number, when applicable.
cardTypestringCard type (game-specific; often null on sealed products).
energyTypestringPokémon energy type or equivalent, when applicable.
printingstringPrinting variant (Normal, Foil, Holofoil, etc.).
conditionstringCondition tier for the headline price (e.g. Near Mint).
imageUrlstring1000×1000 product image URL.
urlstringCanonical TCGplayer product URL.
sourceQuerystringThe search term that produced this row, or "url" for URL inputs.
scrapedAtstringISO 8601 timestamp of capture.

Pricing

FieldTypeDescription
marketPricenumberTCGplayer calculated market value.
medianPricenumberMedian across current listings.
lowestPricenumberLowest listing price before shipping.
lowestPriceWithShippingnumberLowest total cost including shipping.
listingCountintegerTrue total seller offers available — full count even when listings is trimmed.

Seller Offers

listings is an array of seller offers, bounded by maxListingsPerProduct.

FieldTypeDescription
sellerNamestringMarketplace seller name.
sellerRatingnumberSeller's feedback rating.
verifiedbooleanWhether the seller is a verified seller.
pricenumberAsking price before shipping.
shippingPricenumberShipping cost for this offer.
conditionstringCard condition for this offer.
printingstringPrinting variant for this offer.
quantityintegerQuantity in stock from this seller.

Sales History

_enrichment is present only when includeSalesHistory is on. It holds two arrays:

FieldTypeDescription
recentSales[].purchasePricenumberPrice of a recent completed sale.
recentSales[].shippingPricenumberShipping paid on that sale.
recentSales[].conditionstringCondition of the sold card.
recentSales[].printingstringPrinting of the sold card.
recentSales[].languagestringLanguage of the sold card.
recentSales[].quantityintegerQuantity in that sale.
recentSales[].orderDatestringDate of the sale.
pricePoints[].marketPricenumberMarket price for that SKU (condition × printing).
pricePoints[].lowestPricenumberLowest price for that SKU.
pricePoints[].highestPricenumberHighest price for that SKU.
pricePoints[].priceCountintegerNumber of listings behind that price point.

Tips for Best Results

  • Start small to test — set maxResults to 10–50 on your first run to confirm the cards match what you expect, then scale up.
  • Use Best Selling to find the hot singlessortBy: "bestSelling" surfaces the fastest-moving cards in a category, ideal for spotting trending plays and flip candidates.
  • Paste product URLs for cards you already trackproductUrls resolves to the exact card every time, so your portfolio rows never drift to a similarly-named print.
  • Keep maxListingsPerProduct low to control row size — set it to 5–10 for pricing sweeps; the listingCount field still reports the true total seller depth even when offers are trimmed.
  • Leave sales history off for fast price sweepsincludeSalesHistory adds extra data per card and slows the run; turn it on only when you need realized sale prices for valuation.
  • Compare market vs. lowest-with-shipping for true deals — a low headline price with heavy shipping often costs more than a pricier listing with free shipping; lowestPriceWithShipping is the number that matters for buyers.
  • Scope generic names with a category — a query like "charizard" or "dragon" spans multiple games; set category to keep results to the one you trade.

Pricing

$3.00 per 1,000 results — pay-per-result, undercutting comparable TCG scrapers. No compute charges — you only pay per result returned.

ResultsEstimated Cost
100$0.30
1,000$3.00
10,000$30.00
100,000$300.00

A "result" is one product row — its nested seller offers and sales history are bundled in at no extra cost. You are never charged per seller offer or per sale, only per product. Platform fees (storage and data transfer) depend on your Apify plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n — Workflow automation
  • Google Sheets — Direct spreadsheet export
  • Slack / Email — Notifications on new results
  • Webhooks — Trigger custom APIs on run completion
  • Apify API — Full programmatic access

This actor is designed for legitimate trading-card market research, pricing analysis, and inventory management. Users are responsible for complying with applicable laws and TCGplayer's Terms of Service. Collect only publicly available pricing and listing data, respect reasonable request volumes, and do not use seller information for spam, harassment, or any unlawful purpose.