TCGPlayer Pricing Scraper - tcgcsv.com API Wrapper
TCGPlayer Pricing Scraper — tcgcsv.com API Wrapper
Fetch current TCGPlayer card prices for any of 89+ trading card games via the community-maintained tcgcsv.com nightly mirror. No API key required. Sub-type-aware pricing rows (Normal / Foil / Holofoil / Reverse Holo / 1st Edition) with market / mid / low / high / TCG-Direct breakdowns.
Supported games include Magic: The Gathering, Pokemon (English + Japanese), Yu-Gi-Oh, Disney Lorcana, One Piece TCG, Flesh & Blood, Star Wars Unlimited, Final Fantasy, Digimon, Weiss Schwarz, and 80+ others.
Modes
| Mode | Description |
|---|---|
categories |
List all 89+ TCG categories with their IDs |
category_walk |
Walk every set in a category and return all products + prices |
group_walk |
Walk specific set(s) (default mode — fastest for targeted pulls) |
by_product |
Look up specific TCGPlayer product IDs |
The default input (Pokemon, group_walk, group 23237 = Scarlet & Violet 151) returns price rows immediately. Run mode=categories to discover all available category IDs.
Inputs
| Input | Type | Default | Description |
|---|---|---|---|
mode |
select | group_walk |
Which data to fetch |
categoryId |
integer | 3 (Pokemon) |
TCG category (run categories mode to list all) |
groupIds |
array | ["23237"] |
Set IDs to walk (mode=group_walk) |
productIds |
array | ["501999"] |
Product IDs to look up (mode=by_product) |
includePrices |
boolean | true |
Join pricing rows |
includeExtendedData |
boolean | true |
Include rarity, number, type fields |
onlyFoil |
boolean | false |
Filter to foil/holo sub-types only |
maxItems |
integer | 0 |
Max rows (0 = unlimited) |
Common Category IDs
| ID | Game |
|---|---|
| 1 | Magic: The Gathering |
| 2 | Yu-Gi-Oh |
| 3 | Pokemon (English) |
| 62 | Flesh & Blood |
| 71 | Disney Lorcana |
| 79 | One Piece TCG |
| 85 | Pokemon (Japanese) |
| 70 | DC Comics |
| 65 | Gate Ruler |
| 63 | Digimon |
Run mode=categories to get the full list of 89+ categories with current names and IDs.
Output Fields
| Field | Type | Description |
|---|---|---|
categoryId |
number | TCG category ID |
categoryName |
string | Game name (Magic, Pokemon, etc.) |
groupId |
number | Set ID |
groupName |
string | Set name (e.g. "SV: Scarlet & Violet 151") |
groupAbbreviation |
string | Set code (e.g. "MEW") |
publishedOn |
string | Set release date |
productId |
number | TCGPlayer product ID |
name |
string | Card/product name |
cleanName |
string | Normalized card name |
imageUrl |
string | Product image URL |
url |
string | TCGPlayer storefront URL |
extendedData |
string | JSON: rarity, number, type (category-specific) |
subTypeName |
string | Normal / Foil / Holofoil / 1st Edition / etc. |
lowPrice |
number | Low price (USD) |
midPrice |
number | Mid price (USD) |
highPrice |
number | High price (USD) |
marketPrice |
number | Market price (USD) |
directLowPrice |
number | TCG Direct low price (USD) |
Each output row is one product × one subTypeName combination. A single card may produce multiple rows (one per print variant).
Dataset Views
- Products with Prices — focused view: game, set, card name, sub-type, all price columns, URL
- Set Summary — group-level metadata: game, set ID, name, code, release date
- Foil / Holo Only — pre-filtered to foil/holofoil variants
Examples
List all TCG categories
{
"mode": "categories",
"maxItems": 0
}
Returns 89 rows, one per game/category.
Walk all Magic: The Gathering sets
{
"mode": "category_walk",
"categoryId": 1,
"includePrices": true,
"maxItems": 0
}
Returns all products + prices for every MTG set on TCGPlayer. Run time varies — MTG has 700+ sets.
Walk a specific Pokemon set
{
"mode": "group_walk",
"categoryId": 3,
"groupIds": ["23237"],
"includePrices": true,
"includeExtendedData": true,
"maxItems": 0
}
Returns all cards in the Scarlet & Violet 151 set (MEW) with full pricing rows.
Get foil prices only for a Yu-Gi-Oh set
{
"mode": "group_walk",
"categoryId": 2,
"groupIds": ["23019"],
"includePrices": true,
"onlyFoil": true,
"maxItems": 0
}
Returns only 1st Edition, Ultra Rare, and other premium-print rows.
Look up specific product IDs
{
"mode": "by_product",
"categoryId": 3,
"productIds": ["501999", "502001"],
"includePrices": true,
"maxItems": 0
}
Searches all groups in category 3 for the listed product IDs.
Data Source
All data comes from tcgcsv.com, a community-maintained nightly mirror of the TCGPlayer pricing API. Prices are updated daily at approximately 8:00 PM EST. The site is free to use; please be polite — the actor applies a ~1 req/sec rate limit during bulk category walks.
Use Cases
- Price trackers and deal-alert apps — poll specific sets daily for price movements
- Collection management tools — enrich card databases with live market prices
- Deck-builder applications — calculate deck budget using market or mid prices
- Arbitrage and resale — identify low / market spread or foil-vs-regular gaps
- Data analysis — combine with Scryfall (MTG), pokemontcg.io (Pokemon), or YGOProDeck (Yu-Gi-Oh) for cross-source analysis
Notes
- The
by_productmode scans groups within the category sequentially to locate the requested product IDs. For categories with many groups (Pokemon has 216+), usegroup_walkwith a known group ID for faster results. extendedDatacontains category-specific metadata (rarity, collector number, card type) returned as a JSON-encoded string. Parse it in your downstream pipeline.- Products without price data (sealed product, accessories) will have null price fields when no pricing rows exist on tcgcsv.com.