Get Started with PriceDepth

Go from zero to working API integration in under 5 minutes. Search cards, get fair market values, and track portfolios.

What you need: A PriceDepth API key and a way to make HTTP requests (curl, Python, Node.js, or Postman). No credit card required for the free tier.
1

Get Your API Key

Sign up at portal.pricedepth.com to create your account, then generate an API key from your dashboard. Your key looks like this:

Your API Key
tp_free_abc123def456ghi789...
Tip: API keys are prefixed with the tier: 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.

2

Make Your First Request

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=3
import 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)
);
Response 200 OK
{
  "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
}

3

Search for Cards

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:

ParameterTypeDescription
qstringFree-text search (card name, set, player)
categorystringFilter by category: pokemon-tcg, baseball, basketball, football
gradestringFilter by PSA grade (e.g. 10, 9)
sortstringSort: price_asc, price_desc, name_asc
pageintPage number (default: 1)
limitintResults per page (default: 50, max: 100)

4

Get Pricing Data

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}%`);
Response 200 OK
{
  "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
}
Historical prices: Add ?date=2025-12-01 to get the pricing snapshot as of any past date.

5

Track a Portfolio

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/value
import 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}`)
);
Response 200 OK
{
  "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"
}

6

Next Steps

You are up and running. Here is where to go from here:

Need help? Email us at [email protected] or open an issue on GitHub. We respond within 24 hours.