Skip to content

TCGplayer Scraper

Try for free

Scrape TCGplayer card and sealed-product prices for Pokemon, Magic, Yu-Gi-Oh!, One Piece, Lorcana and more: market, median and lowest price, cheapest seller listings with shipping, recent sales and price history.

🃏 TCGplayer Scraper

Get TCGplayer prices for any trading card or sealed product in seconds: market price, listed median, lowest price, the cheapest seller listings with shipping, the latest sales and (optionally) the price history. Works for Pokemon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Disney Lorcana, Flesh and Blood and every other game on TCGplayer. No login, no API key, and $2.00 per 1,000 products.

✨ Why use TCGplayer Scraper?

  • 💰 All the prices in one row: market price, listed median, lowest price and the true cheapest price including shipping.
  • 🏪 Seller listings: the cheapest offers per product (3 by default, as many as you want) with seller name, rating, sales, condition, printing, language, price, shipping and quantity.
  • 📈 Sales data: the latest sales TCGplayer shows, market price per printing (normal and foil), and an optional price history of up to a year per variant and condition.
  • 🔎 Search like on the site: queries, game, set, rarity, product type and price filters, five sort orders, or just paste a TCGplayer search or product URL.
  • ⚡ Fast: about 150 products with sales data in under 10 seconds, 1,000 products in about 40 seconds.
  • 🌍 Ship-to country: see the listings and shipping prices for buyers in Canada, the UK, Australia and other countries.

🎯 Use cases

  • 📊 Price tracking: schedule a daily run for your watchlist of cards and sealed products and follow market prices over time.
  • 🛒 Deal hunting and arbitrage: find listings below market price, including shipping, across thousands of products.
  • 🏬 Store repricing: pull current market and lowest prices for your inventory and reprice your own listings.
  • 📦 Sealed product research: compare booster boxes, ETBs and tins by market price and recent sales.
  • 🧮 Collection valuation: value a whole set or collection at today's market price.
  • 🔬 Market research and datasets: build datasets of sets, rarities and printings for analysis or pricing models.

🚀 How to use

  1. Enter one or more search queries (for example charizard, black lotus), or paste TCGplayer URLs: search pages keep their filters, a set's price guide page gives every product of that set, product pages give that exact product.
  2. Optional: narrow the search with game, set, rarity, product type or a market price range, and pick a sort order.
  3. Set Max products per search (20 by default, 0 for everything TCGplayer shows).
  4. Choose what to load per product: seller listings, recent sales and price points, price history.
  5. Click Start and download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesCard or product names to search, one per line.
startUrlsTCGplayer search URLs (filters kept), set price guide URLs, product URLs or bare product IDs.
maxItemsProducts per search (default 20; 0 = all, TCGplayer shows up to 9,999 per search).
sortBybest-match, best-selling, a-z, price-high-low, price-low-high.
game, setName, rarity, productTypeFilters. Names as shown on TCGplayer ("Magic: The Gathering", "SWSH: Crown Zenith") or short forms ("mtg", "Crown Zenith").
minPrice, maxPriceMarket price range in USD.
listingConditions, listingLanguagesOnly seller listings in these conditions or languages.
maxListingsPerProductCheapest listings per product (default 3, 0 = none, no upper limit).
includeSalesHistoryLatest sales and price points per printing (default on).
priceHistoryRangenone, month, quarter, semi-annual or annual.
shipToCountryCountry the listings and shipping prices are for (default US).
{
  "searchQueries": ["charizard", "black lotus"],
  "game": "Pokemon",
  "maxItems": 50,
  "sortBy": "price-high-low",
  "maxListingsPerProduct": 5,
  "includeSalesHistory": true,
  "priceHistoryRange": "quarter"
}

📤 Output

One row per product. The main fields:

FieldDescription
productId, productName, url, imageUrlThe product and its TCGplayer page.
productLine, setName, setCode, rarityName, number, releaseDateGame, set, rarity, card number and release date.
marketPriceTCGplayer market price (based on recent sales).
medianPriceListed median price.
lowestPriceLowest listed price before shipping.
lowestPriceWithShippingCheapest listing including shipping.
totalListingsNumber of listings.
listings[]Cheapest seller listings: seller, rating, sales, programs, location, condition, printing, language, price, shipping, total, quantity.
salesLatest sales: count, last sale date, average, min/max and each sale (date, price, shipping, condition, variant).
pricePointsMarket price and listed median per printing (normal, foil).
priceHistory[]Optional: market price, quantity sold and low/high sale per period, per variant and condition.
customAttributesCard details such as card type, HP, stage, energy type, attacks, weakness, card text.
searchQuery, page, position, sortBy, scrapedAtWhere and when the product was found.

Example (one product from a real run, listings and sales trimmed):

{
  "productId": 679554,
  "productName": "Mega Charizard Tin Case",
  "url": "https://www.tcgplayer.com/product/679554/pokemon-miscellaneous-cards-and-products-mega-charizard-tin-case",
  "imageUrl": "https://product-images.tcgplayer.com/fit-in/437x437/679554.jpg",
  "productLine": "Pokemon",
  "setName": "Miscellaneous Cards & Products",
  "setCode": "MCAP",
  "marketPrice": 234.49,
  "medianPrice": 234.49,
  "lowestPrice": 210,
  "lowestPriceWithShipping": 229.5,
  "totalListings": 9,
  "listings": [
    {
      "sellerName": "Example Card Shop",
      "sellerRating": 100,
      "sellerSales": "1883",
      "sellerState": "OK",
      "sellerCountry": "US",
      "condition": "Unopened",
      "printing": "Normal",
      "language": "English",
      "price": 229.5,
      "shippingPrice": 0,
      "totalPrice": 229.5,
      "quantity": 1
    }
  ],
  "sales": {
    "totalSales": 5,
    "lastSaleDate": "2026-10-02T20:21:53.6+00:00",
    "avgPrice": 234.77,
    "priceRange": {"min": 225, "max": 249.69},
    "recentSales": [
      {"date": "2026-10-02T20:21:53.6+00:00", "price": 234.35, "shipping": 0, "total": 234.35, "condition": "Unopened", "variant": "Normal", "quantity": 1}
    ]
  },
  "pricePoints": {"normal": {"marketPrice": 234.49, "listedMedian": 234.49}},
  "searchQuery": "charizard",
  "page": 1,
  "position": 2,
  "sortBy": "best-match",
  "shipToCountry": "US",
  "scrapedAt": "2026-10-21T18:05:11Z"
}

The dataset has three views: Products, Seller listings (one row per listing) and Sales and price points. A run summary (saved products, matches per search, empty searches and errors) is stored as OUTPUT in the key-value store.

💰 Pricing

You pay $2.00 per 1,000 products ($0.002 per product). Seller listings, sales, price points and price history are included in that price. Platform usage (compute and datacenter proxy) is billed on top and is small: a 1,000-product run with sales data used about $0.01 of usage in our tests.

  • 150 products ≈ $0.30
  • 1,000 products ≈ $2.01
  • 10,000 products ≈ $20

You never pay for searches that find nothing, invalid URLs or products that could not be loaded. Set a maximum charge per run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape TCGplayer? The scraper reads the public prices and listings that anyone can see on tcgplayer.com without an account. Check TCGplayer's terms and your local laws for your use case, especially before republishing data.

Do I need a TCGplayer account, API key or my own proxy? No. No login, cookies or API key are used. The default datacenter proxy works; requests that keep failing are retried over US residential proxies automatically.

How many products can I get? TCGplayer search shows up to 9,999 products per search. For more, split the search by game, set or rarity, or use several queries. With the relevance sorts TCGplayer repeats some products across pages; duplicates are removed, so a search can return fewer unique products than its match count. Use the a-z sort for complete coverage of large searches.

Why is a field empty? TCGplayer does not have every value for every product: new or unlisted products have no market price or listings, sealed products have no card number or rarity, and the median is only shown for some products. Empty values are left out or null rather than guessed.

How many sales do I get? TCGplayer shows the 5 latest sales to visitors who are not logged in, so sales.recentSales holds up to 5 sales. For sales volume over time, turn on the price history: it includes the quantity sold and number of sales per period.

Can I schedule it or use the API? Yes. Schedule runs to track prices daily or weekly, and start runs and read results through the API or the client libraries.

⚠️ Limits

  • Up to 9,999 products per search (TCGplayer's own limit). Split large searches with filters.
  • Up to 5 recent sales per product (what TCGplayer shows without login); use the price history for longer periods.
  • Buylist prices and graded-card (PSA, BGS) prices are not included.
  • Prices are in USD as TCGplayer shows them.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.