A comprehensive RESTful API for Pokemon Trading Card Game data, similar to tcgdex and pokemontcg.io.
http://proxysuper.com/api/v1/{language}
Supported Languages: english, japanese
Current market pricing data from TCGPlayer is available for English cards only. This includes low, mid, high, market, and direct low prices for different card variants. Japanese cards do not include pricing information.
Historical Price Tracking: Comprehensive price history system with automatic daily snapshots, trend analysis, market insights, and unlimited data retention for long-term market analysis.
This API is currently open and does not require authentication. All endpoints are publicly accessible.
All API endpoints require a language parameter in the URL path. This allows you to access Pokemon card data in different languages.
english - English Pokemon cards and metadatajapanese - Japanese Pokemon cards and metadata/api/v1/{language}/{endpoint}
/api/v1/english/cards - Get English cards/api/v1/japanese/sets - Get Japanese sets/api/v1/english/types - Get English typesAll list endpoints support optional pagination using the following parameters:
page - Page number (default: 1)pageSize - Number of items per page (optional, max: 250). If not provided, all items are returned.{
"data": [...],
"page": 1,
"pageSize": null,
"count": 20861,
"totalCount": 20861,
"totalPages": 1
}
Example without pagination - returns all items. When pageSize is provided, it will be a number and totalPages will reflect the pagination.
Most endpoints support filtering and search capabilities:
q - General search queryorderBy - Sort fieldorder - Sort direction (asc, desc)Get all Pokemon cards with filtering and pagination for a specific language
| Parameter | Type | Description | Example |
|---|---|---|---|
| page | integer | Page number (starts from 1) | 1 |
| pageSize | integer | Items per page (optional, max 250, default varies) | 50 |
| q | string | Search query - searches in card names (case-insensitive) | pikachu |
| name | string | Filter by exact card name (case-insensitive) | charizard |
| types | string | Filter by types (comma-separated, case-insensitive). Cards matching ANY of the specified types will be returned | fire,water |
| hp | string | Filter by HP - supports exact value or range format | 100 or 100-200 |
| hp_min | integer | Filter by minimum HP value (inclusive) | 100 |
| hp_max | integer | Filter by maximum HP value (inclusive) | 200 |
| rarity | string | Filter by rarity (case-insensitive, partial matches supported) | rare holo |
| set | string | Filter by set ID | bs |
| artist | string | Filter by artist name (case-insensitive) | ken sugimori |
| orderBy | string | Sort field (name, hp, number, rarity) | name |
| order | string | Sort direction (asc for ascending, desc for descending) | asc |
| raw | boolean | Return original JSON format without extra fields | true, false |
Each card object in the response contains the following fields:
| Field | Type | Description | Availability |
|---|---|---|---|
| id | string | Unique card identifier | All cards |
| name | string | Card name | All cards |
| hp | string | Hit points | Pokemon cards |
| types | array | Pokemon types | Pokemon cards |
| attacks | array | Attack information | Pokemon cards |
| weaknesses | array | Weakness information | Pokemon cards |
| retreatCost | array | Retreat cost | Pokemon cards |
| number | string | Card number in set | All cards |
| artist | string | Card artist | All cards |
| rarity | string | Card rarity | All cards |
| images | object | Card image URLs | All cards |
| localID | string | Local identifier | All cards |
| SetName | string | Set identifier | All cards |
| exactCardID | string | Exact card ID with set info | All cards |
| productId | integer | TCGPlayer product ID | English cards only |
| url | string | TCGPlayer product URL | English cards only |
| pricing | array | Current market pricing data | English cards only |
The pricing array contains current market pricing information from TCGPlayer:
Note: Pricing data is only available for English cards and requires both productId and valid set mapping. Japanese cards do not include pricing information.
Raw Format: When raw=true is specified, pricing data is excluded from the response.
hp=100 - Returns cards with exactly 100 HPhp=100-200 - Returns cards with HP between 100 and 200 (inclusive)hp_min=100 - Returns cards with HP ≥ 100hp_max=200 - Returns cards with HP ≤ 200hp_min=100&hp_max=200 - Returns cards with HP between 100 and 200All text-based filters (types, rarity, artist, q, name) are case-insensitive.
Multiple filters use AND logic - cards must match ALL specified criteria to be returned.
GET /api/v1/english/cards?q=pikachu&types=lightning&page=1&pageSize=10
GET /api/v1/english/cards?types=fire&rarity=rare&hp_min=100&hp_max=150&pageSize=3
GET /api/v1/english/cards?q=char&types=fire&rarity=rare&orderBy=name&order=desc&page=1&pageSize=2
GET /api/v1/english/cards?types=fire,water,electric&pageSize=5
[
{
"id": "aor-1",
"name": "Oddish",
"hp": "50",
"types": ["Grass"],
"attacks": [
{
"name": "Trip Over",
"cost": ["Grass"],
"convertedEnergyCost": 1,
"damage": "10+",
"text": "Flip a coin. If heads, this attack does 10 more damage."
}
],
"weaknesses": [{"type": "Fire", "value": "×2"}],
"retreatCost": ["Colorless"],
"convertedRetreatCost": 1,
"number": "1",
"artist": "MAHOU",
"rarity": "Common",
"images": {
"large": "https://proxysuper.com/images/english/aor/aor_001.jpg"
},
"localID": "1",
"SetName": "ancient-origins",
"exactCardID": "1/98",
"productId": 123456,
"url": "https://www.tcgplayer.com/product/123456/pokemon-aor-ancient-origins-oddish",
"pricing": [
{
"lowPrice": 0.05,
"midPrice": 0.15,
"highPrice": 2.50,
"marketPrice": 0.12,
"directLowPrice": 0.08,
"subTypeName": "Normal"
}
]
}
]
hp_min is greater than hp_max, the API may return unexpected results instead of an error[]Get a specific card by ID for a specific language
| Parameter | Type | Description | Example |
|---|---|---|---|
| raw | boolean | Return original JSON format without extra fields | true, false |
GET /api/v1/english/cards/bs-58
{
"id": "en06-1",
"name": "Grass Energy",
"number": "1",
"images": {
"large": "https://proxysuper.com/images/english/en06/en06_001.jpg"
},
"localID": "No. 001",
"SetName": "2006-energies",
"exactCardID": "No. 001",
"set": "en06",
"productId": 789012,
"url": "https://www.tcgplayer.com/product/789012/pokemon-en06-2006-energies-grass-energy",
"pricing": [
{
"lowPrice": 0.01,
"midPrice": 0.05,
"highPrice": 1.25,
"marketPrice": 0.04,
"directLowPrice": 0.03,
"subTypeName": "Normal"
}
]
}
Get the complete original JSON file for a specific set without any modifications
GET /api/v1/english/cards/aor/raw
[
{
"id": "en06-1",
"name": "Grass Energy",
"number": "1",
"images": {
"large": "https://proxysuper.com/images/english/en06/en06_001.jpg"
},
"localID": "No. 001",
"SetName": "2006-energies",
"exactCardID": "No. 001"
},
{
"id": "en06-2",
"name": "Fire Energy",
"number": "2",
"images": {
"large": "https://proxysuper.com/images/english/en06/en06_002.jpg"
},
"localID": "No. 002",
"SetName": "2006-energies",
"exactCardID": "No. 002"
}
]
Get current pricing data for all cards in a TCGPlayer group
language - Language code (english, japanese)group_id - TCGPlayer group IDGET /api/v1/english/pricing/1450
{
"group_id": "1450",
"language": "english",
"pricing": {
"84100": [
{
"lowPrice": 1.69,
"midPrice": 3.56,
"highPrice": 5.79,
"marketPrice": 4.69,
"directLowPrice": null,
"subTypeName": "Normal"
}
]
},
"timestamp": 1762250701.7468941
}
Get current pricing data for a specific card
language - Language code (english, japanese)group_id - TCGPlayer group IDproduct_id - TCGPlayer product IDGET /api/v1/english/pricing/1450/84100
{
"group_id": "1450",
"product_id": "84100",
"language": "english",
"pricing": [
{
"lowPrice": 1.69,
"midPrice": 3.56,
"highPrice": 5.79,
"marketPrice": 4.69,
"directLowPrice": null,
"subTypeName": "Normal"
}
],
"timestamp": 1762250706.681493
}
Pricing data is sourced from TCGPlayer and only available for English cards. Data includes low, mid, high, market, and direct low prices for different card variants.
Comprehensive price history system with automatic daily snapshots, trend analysis, and market insights for Pokemon cards.
Get overall price history statistics and system overview
GET /api/v1/pricing/history/stats
{
"history_stats": {
"total_snapshots": 1,
"total_products_tracked": 36187,
"oldest_snapshot": "2025-11-04",
"newest_snapshot": "2025-11-04",
"storage_size_mb": 17.62,
"avg_daily_products": 36187
},
"timestamp": 1762250781.2215986
}
Get price history for all cards in a TCGPlayer group
language - Language code (english, japanese)group_id - TCGPlayer group IDdays (optional) - Number of days of history (default: 30)sub_type (optional) - Card variant type (default: "Normal")GET /api/v1/english/pricing/1450/history?days=30
{
"group_id": "1450",
"history_days": 30,
"language": "english",
"price_history": [
{
"date": "2025-11-04",
"high_price": 5.79,
"low_price": 1.69,
"mid_price": 3.56,
"price": 4.69,
"product_id": "84100"
}
],
"sub_type": "Normal",
"timestamp": 1762250701.7468941,
"total_entries": 1
}
Get detailed price history for a specific card with trend analysis
language - Language code (english, japanese)group_id - TCGPlayer group IDproduct_id - TCGPlayer product IDdays (optional) - Number of days of history (default: 30)sub_type (optional) - Card variant type (default: "Normal")GET /api/v1/english/pricing/1450/84100/history?days=30
{
"group_id": "1450",
"product_id": "84100",
"history_days": 30,
"history_entries": 1,
"language": "english",
"price_history": [
{
"date": "2025-11-04",
"high_price": 5.79,
"low_price": 1.69,
"mid_price": 3.56,
"price": 4.69
}
],
"sub_type": "Normal",
"timestamp": 1762250706.681493,
"trend_analysis": {
"current_price": 4.69,
"price_change": 0.0,
"price_change_percent": 0.0,
"avg_7d": 4.69,
"avg_30d": 4.69,
"min_price": 4.69,
"max_price": 4.69,
"data_points": 1
}
}
Get comprehensive price trend analysis for a specific card
group_id - TCGPlayer group IDproduct_id - TCGPlayer product IDsub_type (optional) - Card variant type (default: "Normal")GET /api/v1/pricing/history/trends/1450/84100
{
"group_id": "1450",
"product_id": "84100",
"sub_type": "Normal",
"timestamp": 1762250711.3459272,
"trend_analysis": {
"current_price": 4.69,
"price_change": 0.0,
"price_change_percent": 0.0,
"avg_7d": 4.69,
"avg_30d": 4.69,
"min_price": 4.69,
"max_price": 4.69,
"data_points": 1,
"price_history": [
{
"date": "2025-11-04",
"price": 4.69,
"timestamp": 1762250031
}
]
}
}
Get storage usage analysis and growth projections
GET /api/v1/pricing/history/storage
{
"monitoring_available": true,
"recommendations": [
"✅ Storage usage is minimal - no action needed",
"✅ Stable growth rate (~0.0MB/year)",
"🔹 Data collection just started - check back in a few weeks"
],
"storage_analysis": {
"avg_daily_growth_mb": 0,
"daily_prices_size_mb": 0.0,
"date_range_days": 0,
"directory": "price_history",
"exists": true,
"newest_snapshot": "2025-11-04",
"oldest_snapshot": "2025-11-04",
"price_trends_size_mb": 0.0,
"projected_annual_growth_mb": 0,
"projected_monthly_growth_mb": 0,
"total_products_tracked": 36187,
"total_size_mb": 17.62,
"total_snapshots": 1
},
"timestamp": 1762250737.1238627
}
Manually trigger a price history snapshot
force (optional) - Force snapshot even if already taken today (true/false)GET /api/v1/pricing/history/snapshot?force=true
{
"status": "success",
"message": "Price history snapshot completed successfully",
"timestamp": 1762250774.2938337
}
Export price history data for a group to CSV format
group_id - TCGPlayer group ID to exportformat (optional) - Export format (default: csv)GET /api/v1/pricing/history/export/1450
Price history data is automatically collected daily during pricing cache refresh. The system maintains unlimited historical data with comprehensive trend analysis and market insights.
Get all Pokemon card sets for a specific language
| Parameter | Type | Description | Example |
|---|---|---|---|
| page | integer | Page number | 1 |
| pageSize | integer | Items per page (optional, max 250) | 50 |
| q | string | Search query | base set |
| series | string | Filter by series | base |
| orderBy | string | Sort field | name, releaseDate, id |
| order | string | Sort direction | asc, desc |
| raw | boolean | Return original JSON format without metadata | true, false |
GET /api/v1/english/sets?series=base&orderBy=releaseDate&pageSize=5
[
{
"series": "Unnumbered Energies",
"id": "en05",
"ref_id": 11461,
"set_name": "2005-energies",
"name": "2005 Energies",
"logo": "http://proxysuper.com/images/logos/English/en05.png",
"release_date": "2005/01/01",
"total_cards": 6
},
{
"series": "Unnumbered Energies",
"id": "en06",
"ref_id": 11460,
"set_name": "2006-energies",
"name": "2006 Energies",
"logo": "http://proxysuper.com/images/logos/English/en06.png",
"release_date": "2006/01/01",
"total_cards": 6
}
]
Get all cards from a specific set as a simple array
GET /api/v1/english/sets/bs
[
{
"id": "bs-1",
"name": "Alakazam",
"hp": "80",
"types": ["Psychic"],
"number": "1",
"images": {
"large": "https://proxysuper.com/images/english/bs/bs_001.jpg"
},
"localID": "No. 001",
"SetName": "base-set",
"exactCardID": "No. 001",
"productId": 345678,
"url": "https://www.tcgplayer.com/product/345678/pokemon-bs-base-set-alakazam",
"pricing": [
{
"lowPrice": 15.00,
"midPrice": 25.50,
"highPrice": 150.00,
"marketPrice": 22.75,
"directLowPrice": 18.50,
"subTypeName": "Holofoil"
}
]
},
{
"id": "bs-2",
"name": "Blastoise",
"hp": "100",
"types": ["Water"],
"number": "2",
"images": {
"large": "https://proxysuper.com/images/english/bs/bs_002.jpg"
},
"localID": "No. 002",
"SetName": "base-set",
"exactCardID": "No. 002",
"productId": 345679,
"url": "https://www.tcgplayer.com/product/345679/pokemon-bs-base-set-blastoise",
"pricing": [
{
"lowPrice": 25.00,
"midPrice": 45.00,
"highPrice": 200.00,
"marketPrice": 38.50,
"directLowPrice": 28.75,
"subTypeName": "Holofoil"
}
]
}
]
Get the complete sets JSON file directly without any modifications or pagination
This endpoint returns the exact original JSON file content without any additional metadata, pagination, or modifications. Perfect for getting the complete dataset in its original format.
GET /api/v1/english/sets/raw
[
{
"series": "Trainer & Deck Kits",
"id": "clb",
"ref_id": 11595,
"set_name": "pokemon-tcg-classic-blastoise",
"name": "Pokemon TCG Classic (Blastoise)",
"logo": "https://static.tcgcollector.com/...",
"symbol": null,
"release_date": "2023/11/17"
},
{
"series": "Trainer & Deck Kits",
"id": "clc",
"ref_id": 11594,
"set_name": "pokemon-tcg-classic-charizard",
"name": "Pokemon TCG Classic (Charizard)",
"logo": "https://static.tcgcollector.com/...",
"symbol": null,
"release_date": "2023/11/17"
}
]
Get all Pokemon types for a specific language
[
"Colorless",
"Darkness",
"Electric",
"Fighting",
"Fire",
"Grass",
"Lightning",
"Metal",
"Psychic",
"Water"
]
Get all card rarities for a specific language
[
"ACE SPEC Rare",
"Amazing Rare",
"Black White Rare",
"Common",
"Double Rare",
"Holo Rare V",
"Holo Rare VMAX",
"Holo Rare VSTAR",
"Hyper Rare",
"Illustration Rare",
"LEGEND",
"Mega Hyper Rare",
"Promo",
"Radiant Rare",
"Rare",
"Rare ACE",
"Rare BREAK",
"Rare Holo",
"Rare Holo EX",
"Rare Holo GX",
"Rare Holo LV.X",
"Rare Holo ex",
"Rare Holo ☆",
"Rare Prime",
"Rare Prism Star",
"Rare Rainbow",
"Rare Secret",
"Rare Shining",
"Rare Shiny GX",
"Rare Ultra",
"Shiny Rare",
"Shiny Rare V",
"Shiny Rare VMAX",
"Shiny Ultra Rare",
"Special Illustration Rare",
"Ultra Rare",
"Uncommon"
]
Get all card series for a specific language
[
"Black & White",
"Call of Legends",
"Diamond & Pearl",
"EX",
"HeartGold & SoulSilver",
"Legendary Collection",
"McDonald's",
"Mega Evolution",
"Neo",
"Original",
"Platinum",
"Play! Pokemon",
"Scarlet & Violet",
"Sun & Moon",
"Sword & Shield",
"Trainer & Deck Kits",
"Unnumbered Energies",
"XY",
"e-Card"
]
Get all card artists for a specific language
[
"5ban Graphics",
"AKIRA EGAWA",
"AYUMI ODASHIMA",
"Anesaki Dynamic",
"Atsuko Nishida",
"Ayaka Yoshida",
"Eske Yoshinob",
"Hitoshi Ariga",
"Kagemaru Himeno",
"Ken Sugimori",
"Kouki Saitou",
"Mitsuhiro Arita",
"Naoki Saito",
"Ryo Ueda",
"Satoshi Shirai",
"Shin Nagasawa",
"Sumiyoshi Kizuki",
"Tomokazu Komiya",
"Yuka Morii",
"Yukiko Baba"
]
// Get all Electric-type Pokemon (English)
fetch('http://proxysuper.com/api/v1/english/cards?types=electric&pageSize=50')
.then(response => response.json())
.then(data => {
console.log(`Found ${data.length} Electric Pokemon`);
data.forEach(card => {
console.log(`${card.name} - HP: ${card.hp}`);
});
});
// Search for Charizard cards (Japanese)
fetch('http://proxysuper.com/api/v1/japanese/cards?q=charizard')
.then(response => response.json())
.then(data => {
console.log('Charizard cards:', data);
});
// Get a specific card (English)
fetch('http://proxysuper.com/api/v1/english/cards/en06-1')
.then(response => response.json())
.then(data => {
console.log('Card details:', data.data);
});
// Complex filter combination: Search + Multiple filters + Sorting + Pagination
fetch('http://proxysuper.com/api/v1/english/cards?q=char&types=fire&rarity=rare&orderBy=name&order=desc&page=1&pageSize=2')
.then(response => response.json())
.then(data => {
console.log(`Complex filter found ${data.length} cards`);
data.forEach(card => console.log(`${card.name} (${card.rarity})`));
});
// Multiple types with HP range filtering
fetch('http://proxysuper.com/api/v1/english/cards?types=fire,water,electric&hp_min=100&hp_max=200&pageSize=10')
.then(response => response.json())
.then(data => {
console.log(`Found ${data.length} cards with multiple types and HP 100-200`);
});
// Case-insensitive filtering demonstration
fetch('http://proxysuper.com/api/v1/english/cards?types=LIGHTNING&rarity=COMMON&pageSize=5')
.then(response => response.json())
.then(data => {
console.log(`Case-insensitive test: ${data.length} Lightning Common cards`);
});
import requests
# Get all sets (English)
response = requests.get('http://proxysuper.com/api/v1/english/sets')
sets = response.json()
print(f"Total sets: {len(sets)}")
# Get cards from Base Set (Japanese)
response = requests.get('http://proxysuper.com/api/v1/japanese/sets/bs')
base_set_cards = response.json()
print(f"Base Set has {len(base_set_cards)} cards")
# Search for high HP Pokemon (English)
response = requests.get('http://proxysuper.com/api/v1/english/cards?hp=100-200&orderBy=hp&order=desc')
high_hp_cards = response.json()
for card in high_hp_cards:
print(f"{card['name']} - HP: {card['hp']}")
# Complex filter combination: Search + Multiple Filters + Sorting + Pagination
response = requests.get('http://proxysuper.com/api/v1/english/cards?q=char&types=fire&rarity=rare&orderBy=name&order=desc&page=1&pageSize=2')
filtered_cards = response.json()
print(f"Found {len(filtered_cards)} cards matching complex criteria")
# Multiple types filter with HP range
response = requests.get('http://proxysuper.com/api/v1/english/cards?types=fire,water,electric&hp_min=100&pageSize=10')
multi_type_cards = response.json()
print(f"Found {len(multi_type_cards)} cards with multiple types and high HP")
# Case-insensitive filtering
response = requests.get('http://proxysuper.com/api/v1/english/cards?types=FIRE&rarity=RARE&pageSize=5')
case_test_cards = response.json()
print(f"Case-insensitive test: {len(case_test_cards)} cards found")
# Get all Fire-type Pokemon, sorted by name (English)
curl "http://proxysuper.com/api/v1/english/cards?types=fire&orderBy=name&order=asc"
# Get all cards from Base Set (Japanese)
curl "http://proxysuper.com/api/v1/japanese/sets/bs"
# Search for cards by artist (English)
curl "http://proxysuper.com/api/v1/english/cards?artist=ken%20sugimori"
# Complex filter: Search + Multiple filters + Sorting + Pagination
curl "http://proxysuper.com/api/v1/english/cards?q=char&types=fire&rarity=rare&orderBy=name&order=desc&page=1&pageSize=2"
# Multiple types with HP range filter
curl "http://proxysuper.com/api/v1/english/cards?types=fire,water,electric&hp_min=100&hp_max=200&pageSize=5"
# Case-insensitive type and rarity filtering
curl "http://proxysuper.com/api/v1/english/cards?types=LIGHTNING&rarity=COMMON&pageSize=3"
# Get API information
curl "http://proxysuper.com/api/v1"
While there are no official SDKs yet, you can easily integrate this API using standard HTTP libraries in any programming language:
Currently, there are no rate limits, but please be respectful with your API usage.