TCGPlayer Card Prices avatar

TCGPlayer Card Prices

Pricing

Pay per event

Go to Apify Store
TCGPlayer Card Prices

TCGPlayer Card Prices

Get structured trading-card price data from TCGPlayer by free-text card name — market price, lowest price, listing counts, per-seller listings — across Magic, Pokemon, Yu-Gi-Oh, and every game on the platform. No login, no API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Share


🎯 What this scrapes

TCGPlayer is the biggest secondary marketplace for Magic: The Gathering, Pokemon, Yu-Gi-Oh, and dozens of other trading-card games, but its public search page is a client-rendered shell with no usable price data in the HTML. This Actor talks to the same JSON search endpoint TCGPlayer's own site calls: give it a card name and it returns every matching product's market price, lowest price, listing count, and (optionally) individual seller listings, spanning every game on the platform through one shared search — instead of you hand-checking each card's page one at a time.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes on every session, as defense-in-depth.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🎯 One search endpoint, every game — no need to tell us which game a card belongs to; the result tells you.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable ids, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for products that hit your dataset. No data, no charge.

💡 Use cases

  • Card resellers and arbitrageurs tracking price deltas across marketplaces.
  • Deck-pricing tools that total a decklist's live market value.
  • Collection-value trackers that revalue a user's card collection on a schedule.
  • Price-alert services watching for a target card dropping below a threshold.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
searchQueriesarrayyes['charizard']Free-text card-name queries, e.g. "charizard" or "black lotus". No game pre-selection needed — the game each result…
maxResultsPerQueryintegerno50Caps how many products are fetched per query, paged in batches of pageSize.
pageSizeintegerno10Number of products requested per page from TCGPlayer's search API.
includeListingsbooleannoFalseWhen enabled, attaches up to 5 seller listings per product, sorted by price ascending.
proxyConfigurationobjectno{'useApifyProxy': True}Apify Proxy routing. No anti-bot defenses were observed on this endpoint during recon, so no proxy group is pinned by…

Example input

{
"searchQueries": [
"charizard"
],
"maxResultsPerQuery": 5,
"pageSize": 5,
"includeListings": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
product_idintegerTCGPlayer's numeric product id.
product_namestringProduct display name.
product_linestringGame the product belongs to, e.g. Pokemon, Magic: The Gathering.
set_namestringCard set name.
set_codestringShort set code.
raritystringCard rarity.
market_pricenumberHeadline market price in USD.
lowest_pricenumberLowest current listing price in USD.
lowest_price_with_shippingnumberLowest listing price including shipping.
total_listingsintegerTotal live seller listings for this product.
foil_onlybooleanWhether this product listing is foil-only.
product_urlstringCanonical TCGPlayer product page URL.
custom_attributesobjectPer-game metadata passthrough, varies by game.
listingsarrayUp to 5 seller listings, only when includeListings=true.
searched_querystringThe searchQueries entry that produced this row.
scraped_atstringISO-8601 UTC timestamp at fetch time.

Example output

{
"product_id": 15870,
"product_name": "Charizard (Base Set)",
"product_line": "Pokemon",
"set_name": "Base Set",
"set_code": "BS",
"rarity": "Rare Holo",
"market_price": 312.45,
"lowest_price": 249.99,
"lowest_price_with_shipping": 254.98,
"total_listings": 87,
"foil_only": false,
"product_url": "https://www.tcgplayer.com/product/15870/pokemon-base-set-charizard",
"custom_attributes": {
"number": "4/102",
"rarityDbName": "Rare Holo",
"releaseDate": "1999-01-09"
},
"listings": null,
"searched_query": "charizard",
"scraped_at": "2026-09-22T10:00:00Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
product-scraped$0.003Per product row written to the dataset

Example: 1 000 products at the rates above ≈ $3.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • One-shot price snapshot per run — no historical/time-series pricing or trend charts.
  • Buylist (vendor-side) pricing is not covered — only marketplace sell-side prices.
  • Seller listings are capped at 5 per product — this is a price-check tool, not a full order-book mirror.
  • Targets TCGPlayer's US storefront (shippingCountry: US) — no international storefront support in v1.

❓ FAQ

Do I need an account or API key?

No. This Actor calls TCGPlayer's public search endpoint directly — no login, no API key, no scraping the HTML page.

Does this cover games other than Magic and Pokemon?

Yes. Every game TCGPlayer lists — Yu-Gi-Oh, Digimon, One Piece, Flesh and Blood, and more — comes back through the same search; the game each result belongs to is on the product_line field.

Can I get individual seller listings, not just the market price?

Yes — set includeListings to true and each product row carries up to 5 seller listings (price, condition, shipping, seller rating) sorted cheapest first.

What if my search matches nothing?

The run still succeeds — you get zero rows for that query and a status message saying what was searched. That's a completed search with no matches, not an error.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.