TCGPlayer Listings Scraper — Prices, Sellers & Market Data avatar

TCGPlayer Listings Scraper — Prices, Sellers & Market Data

Pricing

from $1.79 / 1,000 tcgplayer listings

Go to Apify Store
TCGPlayer Listings Scraper — Prices, Sellers & Market Data

TCGPlayer Listings Scraper — Prices, Sellers & Market Data

Scrape TCGPlayer listings by keyword, product URL, or seller shop — a TCGPlayer API alternative for US TCG shops. Export market price, seller offers, condition, shipping, and optional recent sales as JSON.

Pricing

from $1.79 / 1,000 tcgplayer listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Disclaimer: Unofficial tool for publicly accessible TCGPlayer listings. TCGPlayer and related names are trademarks of eBay Inc. / TCGplayer, Inc. Not affiliated with, sponsored by, or endorsed by TCGPlayer or eBay. For informational, research, aggregation, and market-intelligence use only. Respect applicable terms of use and law.

TCGPlayer listings scraper for the US trading-card marketplace — Pokémon, Magic: The Gathering, Yu-Gi-Oh!, Lorcana, One Piece, and more. Use it as a TCGPlayer scraper, TCGPlayer API alternative, and TCGPlayer seller shop export: paste a product URL, walk a seller name, or search by keyword. Dataset rows are one seller listing eachUSD price, shipping, condition, printing, market / median / lowest, and seller rating. Fast HTTP JSONno login, no official API key. Call from Python, Node.js, cURL, or Apify MCP.

Built for US TCG shops, restock pricing, seller intelligence, and scheduled listing monitors. Official developer API access is closed to new apps — this Actor reads the same public marketplace JSON the website uses.

Collectibles suite

ActorFocus
TCGPlayer Listings Scraper ◄── you are hereUS TCG seller listings and shops
Cardmarket Listings ScraperEU TCG seller offers and shops
Fanatics Collect ScraperWeekly / Premier auctions, Buy Now, sold comps
Goldin Auctions ScraperHigh-end sports cards / TCG hammer + sold
PSA Population Report ScraperSet-level PSA pop census and gem rate
Whatnot Listings ScraperUS live-commerce listings and shops
PriceCharting ScraperGuide prices for games, TCG, and comics
eBay Active Listings ScraperLive eBay BIN / auction asking prices
eBay Sold Listings ScraperCompleted eBay sold comps
eBay Sold Price IntelligenceRecommended price and demand score

When to use this Actor

  • You need a TCGPlayer scraper / TCGPlayer listings scraper that returns flat JSON rows
  • You want product URL arrays, seller shop walks, and keyword search in one run
  • You track condition, printing, shipping, and USD offer prices next to market price
  • You scrape TCGPlayer with Python, Node.js, or MCP and export JSON / CSV
  • You run a daily monitor and only want new listing IDs billed

When not to use this Actor

Key features

  • Product URLs — paginate every seller listing on a SKU (not a 3-offer search card)
  • Seller shop inventory — walk a store name / seller URL with optional shopQuery
  • Keyword search — find matching products, then scrape their listings
  • Market context on every rowmarketPrice, medianPrice, lowestPrice, lowestPriceWithShipping
  • Monitor mode — named Key-Value store of seen listing IDs; later scheduled runs emit only new rows
  • Optional recent sales — last completed sales for the SKU (includeSalesHistory)
  • Deduplicated IDs across keywords, shops, and URLs
  • MCP / AI ready — call from assistants via Apify MCP

Use cases

Use caseWhat you get
Pokémon / MTG restockCurrent TCGPlayer listings for a SKU, condition, and printing
Seller shop dumpActive inventory for a store name; shopQuery to keep one card / set
Arbitrage watchmonitorMode on a product URL; only new listing IDs billed
US vs EU compsTCGPlayer live rows, then eBay sold listings (or Cardmarket) for the same query
Shop intelligenceGold / Direct / verified flags, rating, sales band, shipping

Quick start

Product URL (seller listings on the SKU):

{
"startUrls": [
{ "url": "https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard" }
],
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Keyword search (cap listings per product for cheaper discovery):

{
"searchKeywords": ["charizard"],
"productLine": "pokemon",
"listingsPerProduct": 10,
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Seller shop + monitor:

{
"sellerNames": ["ProSoul Games"],
"shopQuery": "charizard",
"maxItems": 150,
"monitorMode": true,
"monitorStoreName": "tcgplayer-charizard-shops",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Input parameters

ParameterTypeDefaultDescription
searchKeywordsArraySearch queries (required if no URLs/sellers)
sellerNamesArrayTCGPlayer store names to walk
shopQueryStringFilter each seller shop by keyword. Empty = full inventory
startUrlsArrayTCGPlayer product, search, or seller URLs
productLineStringallpokemon, magic, yugioh, lorcana, …
conditionStringanyNear Mint, Lightly Played, …
printingStringanyNormal, Holofoil, Reverse Holofoil, …
languageStringanyEnglish, Japanese, …
sortStringbest_matchbest_match, best_selling, price_asc, price_desc, name_asc
minPrice / maxPriceNumberUSD price band
listingsPerProductInteger10Cap offers per product on keyword search (0 = all)
includeSalesHistoryBooleanfalseAttach recent completed sales for each SKU
maxItemsInteger100Max rows (0 = unlimited subject to maxPages)
maxPagesInteger20Pagination safety cap
monitorModeBooleanfalseEmit only new IDs vs previous run
monitorStoreNameStringtcgplayer-listings-monitorNamed KV store for seen IDs
resetMonitorStateBooleanfalseWipe the seen-ID cache
proxyConfigurationObjectRESIDENTIALRecommended on Apify; local runs can disable proxy

Output format

Each dataset item is one seller listing (recordType: listing).

FieldTypeDescription
recordTypeStringlisting
listingIdIntegerTCGPlayer listing id
productIdIntegerCatalog product id
urlStringPublic product URL
productNameStringCard / product title
productLineNameStringe.g. pokemon
setName / setCodeStringExpansion
rarityName / cardNumberStringRarity and collector number when present
conditionStringNear Mint, Lightly Played, …
printingStringNormal, Holofoil, …
languageStringPrint language
quantityIntegerAvailable quantity
priceNumberListing price (USD)
shippingPriceNumberShipping (USD)
priceWithShippingNumberPrice + shipping
currencyStringUSD
marketPrice / medianPrice / lowestPriceNumberProduct-level market stats
lowestPriceWithShippingNumberCheapest offer including shipping
totalListingsIntegerLive listing count on the SKU
sellerName / sellerKey / sellerIdStringSeller identity
sellerRating / sellerSalesNumber / StringPublic rating and sales band
goldSeller / verifiedSeller / directSellerBooleanProgram flags
sellerProgramsArrayDirect, Pro, CertifiedHobbyShop, …
lastSalePrice / lastSaleDateNumber / StringWhen includeSalesHistory is on
recentSalesArrayCompact completed-sale rows
sourceStringsearch, product_url, or seller_shop
searchQueryStringKeyword or seller that produced the row
scrapedAtStringISO scrape time

Example listing row:

{
"recordType": "listing",
"source": "product_url",
"listingId": 794438088,
"productId": 219058,
"productName": "Charizard - 3/70 (#39 Charizard Stamped)",
"setName": "SWSH04: Vivid Voltage",
"condition": "Lightly Played",
"printing": "Normal",
"price": 19.99,
"shippingPrice": 2.99,
"priceWithShipping": 22.98,
"currency": "USD",
"marketPrice": 7.78,
"sellerName": "Damos CardShop",
"sellerRating": 100,
"url": "https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard-370-39-charizard-stamped",
"scrapedAt": "2026-08-24T12:00:00+00:00"
}

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/tcgplayer-listings-scraper').call({
startUrls: [
{ url: 'https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard' }
],
maxItems: 50,
proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/tcgplayer-listings-scraper").call(
run_input={
"searchKeywords": ["charizard"],
"productLine": "pokemon",
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
},
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[0])

cURL

curl "https://api.apify.com/v2/acts/crawloop~tcgplayer-listings-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchKeywords":["charizard"],"productLine":"pokemon","maxItems":25}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/tcgplayer-listings-scraper.

Example prompts:

  • "Run TCGPlayer Listings Scraper on https://www.tcgplayer.com/product/219058/pokemon-swsh04-vivid-voltage-charizard, max 50, residential proxy, and return productName, price, condition, sellerName as JSON"
  • "Scrape the TCGPlayer shop for seller ProSoul Games, Pokémon Charizard only, and summarize prices and quantities"
  • "Pull TCGPlayer listings for charizard, then run Cardmarket Listings Scraper for the same SKU to compare USD vs EUR asks"

Suite next step

TCGPlayer is the US TCG offer firehose. Next, run Cardmarket Listings Scraper on the same SKU for EU asks. For PSA 10 pop / gem rate, chain PSA Population Report Scraper; for weekly auction hammer, Fanatics Collect Scraper. Sold-comp volume still goes to eBay Sold Listings Scraper.

FAQ

Is this an official TCGPlayer API?
No. New developer API applications are closed. This Actor reads the public marketplace JSON the website uses and returns structured dataset rows — a practical TCGPlayer API alternative for pipelines.

Can I scrape a TCGPlayer seller shop by name?
Yes — set sellerNames (or paste a search URL with seller= / a sellerfeedback URL in startUrls). Add shopQuery to keep only matching card names.

Can I paste a TCGPlayer product URL?
Yes — startUrls accepts product pages (all seller listings), search URLs (q + game), and seller URLs.

Do I need a TCGPlayer API key or login?
No — public marketplace data only.

Does it need a residential proxy?
On Apify, recommended — residential. Marketplace JSON often works without a proxy locally. The Actor injects RESIDENTIAL on the platform when proxyConfiguration is omitted (API / MCP / cURL).

Why not a catalog dump Actor?
Nightly price CSVs already cover bulk catalog snapshots. This Actor is listings: live seller offers, shops, and monitors — the weekly job, not a one-shot export.

What is monitor mode?
With monitorMode: true, seen listing IDs are stored in a named Key-Value store. The first run is the baseline. Later scheduled runs push and charge only IDs not seen before.

Python / Node.js / MCP?
Yes — use the Apify client examples above or Apify MCP prompts.

ActorFocus
TCGPlayer Listings Scraper ◄── you are hereTCGPlayer listings and shops
Cardmarket Listings ScraperEU TCG listings and shops
Fanatics Collect ScraperWeekly / Premier auctions + sold
PSA Population Report ScraperPSA pop census and gem rate
Whatnot Listings ScraperWhatnot listings, shops, optional shows
Goldin Auctions ScraperSports cards / TCG auctions
PriceCharting ScraperTCG / games / comics guides
eBay Sold Listings ScrapereBay sold comps