TCGPlayer Pricing Scraper - tcgcsv.com API Wrapper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
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.