Go from zero to working API integration in under 5 minutes. Search cards, get fair market values, and track portfolios.
Sign up at portal.pricedepth.com to create your account, then generate an API key from your dashboard. Your key looks like this:
tp_free_abc123def456ghi789...
tp_free_, tp_collector_, tp_dealer_. The free tier gives you 100 requests/month and 10 requests/minute -- enough to build and test your integration.
Use the /v1/cards endpoint to fetch cards from the catalog. Pass your API key in the X-Api-Key header.
curl -H "X-Api-Key: YOUR_API_KEY" \
https://pricedepth.com/v1/cards?limit=3import requests
resp = requests.get(
'https://pricedepth.com/v1/cards',
headers={'X-Api-Key': 'YOUR_API_KEY'},
params={'limit': 3}
)
data = resp.json()
for card in data['data']:
print(card['name'], card['grade'])const resp = await fetch('https://pricedepth.com/v1/cards?limit=3', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' }
});
const data = await resp.json();
data.data.forEach(card =>
console.log(card.name, card.grade)
);{
"data": [
{
"card_id": "1999 Pokemon Base Charizard #4|10",
"name": "1999 Pokemon Base Charizard #4",
"set_name": "Base Set",
"grade": "PSA 10",
"image_url": "https://images.pricedepth.com/base-charizard-4.jpg",
"product_type": "pokemon-tcg"
},
{
"card_id": "2023 Pokemon 151 Pikachu VMAX #25|10",
"name": "2023 Pokemon 151 Pikachu VMAX #25",
"set_name": "151",
"grade": "PSA 10",
"image_url": "https://images.pricedepth.com/151-pikachu-vmax-25.jpg",
"product_type": "pokemon-tcg"
},
{
"card_id": "2020 Panini Prizm LaMelo Ball #278|10",
"name": "2020 Panini Prizm LaMelo Ball #278",
"set_name": "Prizm",
"grade": "PSA 10",
"image_url": "https://images.pricedepth.com/prizm-lamelo-278.jpg",
"product_type": "basketball"
}
],
"total": 59928,
"page": 1,
"limit": 3,
"pages": 19976
}
Use the q parameter to search by card name, set, or player. Add filters like category and grade to narrow results.
# Search for Pikachu VMAX cards, PSA 10 only
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://pricedepth.com/v1/cards?q=pikachu+vmax&grade=10&limit=5"import requests
results = requests.get(
'https://pricedepth.com/v1/cards',
headers={'X-Api-Key': 'YOUR_API_KEY'},
params={
'q': 'pikachu vmax',
'grade': '10',
'limit': 5,
}
).json()
for card in results['data']:
print(f"{card['name']} - {card['grade']}")const url = new URL('https://pricedepth.com/v1/cards');
url.searchParams.set('q', 'pikachu vmax');
url.searchParams.set('grade', '10');
url.searchParams.set('limit', '5');
const resp = await fetch(url, {
headers: { 'X-Api-Key': 'YOUR_API_KEY' }
});
const { data } = await resp.json();
data.forEach(card =>
console.log(`${card.name} - ${card.grade}`)
);Available search parameters:
| Parameter | Type | Description |
|---|---|---|
| q | string | Free-text search (card name, set, player) |
| category | string | Filter by category: pokemon-tcg, baseball, basketball, football |
| grade | string | Filter by PSA grade (e.g. 10, 9) |
| sort | string | Sort: price_asc, price_desc, name_asc |
| page | int | Page number (default: 1) |
| limit | int | Results per page (default: 50, max: 100) |
The /v1/cards/:id/price endpoint returns a comprehensive pricing snapshot. You get the current fair market value plus 52-week highs/lows, moving averages, volatility, Sharpe ratio, and recent sales data -- all in one call.
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://pricedepth.com/v1/cards/1999 Pokemon Base Charizard %234|10/price"import requests
card_id = '1999 Pokemon Base Charizard #4|10'
price = requests.get(
f'https://pricedepth.com/v1/cards/{card_id}/price',
headers={'X-Api-Key': 'YOUR_API_KEY'}
).json()
print(f"FMV: ${price['price_usd']:,.2f}")
print(f"7d change: {price['change_pct_7d']}%")
print(f"52w high: ${price['high_52w_usd']:,.2f}")
print(f"Volatility: {price['volatility_annual']}%")const cardId = '1999 Pokemon Base Charizard #4|10';
const resp = await fetch(
`https://pricedepth.com/v1/cards/${encodeURIComponent(cardId)}/price`,
{ headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
);
const price = await resp.json();
console.log(`FMV: $${price.price_usd.toLocaleString()}`);
console.log(`7d change: ${price.change_pct_7d}%`);
console.log(`52w high: $${price.high_52w_usd.toLocaleString()}`);
console.log(`Volatility: ${price.volatility_annual}%`);{
"card_id": "1999 Pokemon Base Charizard #4|10",
"price_usd": 42000.00,
"price_date": "2026-05-09",
"all_time_high_usd": 52000.00,
"all_time_high_date": "2021-02-15",
"high_52w_usd": 48000.00,
"low_52w_usd": 31000.00,
"change_pct_7d": 3.5,
"change_pct_30d": -8.1,
"change_pct_90d": 12.4,
"volatility_annual": 34.52,
"sharpe_ratio": 1.85,
"max_drawdown_pct": 12.08,
"median_sale_7d": 41500.00,
"sales_count_30d": 5
}
?date=2025-12-01 to get the pricing snapshot as of any past date.
Send a list of card positions to /v1/portfolio/value and get back the total fair market value. Each position includes a card_id and quantity.
curl -X POST \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"positions": [
{"card_id": "1999 Pokemon Base Charizard #4|10", "quantity": 1},
{"card_id": "2023 Pokemon 151 Charizard ex #6|10", "quantity": 3}
]
}' \
https://pricedepth.com/v1/portfolio/valueimport requests
portfolio = requests.post(
'https://pricedepth.com/v1/portfolio/value',
headers={'X-Api-Key': 'YOUR_API_KEY'},
json={
'positions': [
{'card_id': '1999 Pokemon Base Charizard #4|10', 'quantity': 1},
{'card_id': '2023 Pokemon 151 Charizard ex #6|10', 'quantity': 3},
]
}
).json()
print(f"Total value: ${portfolio['total_value_usd']:,.2f}")
for pos in portfolio['positions']:
print(f" {pos['card_id']}: ${pos['price_usd']:,.2f} x{pos['quantity']}")const resp = await fetch('https://pricedepth.com/v1/portfolio/value', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
positions: [
{ card_id: '1999 Pokemon Base Charizard #4|10', quantity: 1 },
{ card_id: '2023 Pokemon 151 Charizard ex #6|10', quantity: 3 },
]
})
});
const portfolio = await resp.json();
console.log(`Total: $${portfolio.total_value_usd.toLocaleString()}`);
portfolio.positions.forEach(pos =>
console.log(` ${pos.card_id}: $${pos.price_usd} x${pos.quantity}`)
);{
"total_value_usd": 42750.00,
"currency": "USD",
"positions": [
{
"card_id": "1999 Pokemon Base Charizard #4|10",
"price_usd": 42000.00,
"quantity": 1,
"total_usd": 42000.00
},
{
"card_id": "2023 Pokemon 151 Charizard ex #6|10",
"price_usd": 250.00,
"quantity": 3,
"total_usd": 750.00
}
],
"priced_at": "2026-05-09T12:00:00Z"
}
You are up and running. Here is where to go from here: