Getting Started
Get up and running with the TCG Price Lookup API in under 5 minutes.
1. Get your API key
Sign up at tcgpricelookup.com and grab your free API key from the dashboard. The free tier includes 200 requests per day — no credit card required.
Once you’re signed in, navigate to the Dashboard → API Keys section. Your key will look like this:
tcg_live_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep this key secret. Do not commit it to version control or expose it in client-side code.
2. Install an SDK
Pick your language and install the official SDK:
# JavaScript / TypeScript
npm install tcglookup
# Python
pip install tcglookup
# Go
go get github.com/TCG-Price-Lookup/tcglookup-go
# Rust
cargo add tcglookup
# PHP
composer require tcg-price-lookup/tcglookup
All SDKs handle authentication, request serialization, error parsing, and rate limit headers for you.
3. Make your first request
Here’s a minimal example in every supported language:
// JavaScript / TypeScript
import { TCGLookup } from 'tcglookup';
const tcg = new TCGLookup({ apiKey: 'your-api-key' });
const results = await tcg.search('charizard', { game: 'pokemon', limit: 5 });
console.log(results.data);
// → Array of card objects with live market prices
# Python
from tcglookup import TCGLookup
tcg = TCGLookup(api_key="your-api-key")
results = tcg.search("charizard", game="pokemon", limit=5)
for card in results.data:
print(card.name, card.prices.market)
# curl
curl -H "X-API-Key: your-api-key" \
"https://api.tcgpricelookup.com/v1/search?q=charizard&game=pokemon&limit=5"
What the API returns
A successful search response looks like this:
{
"data": [
{
"id": "pokemon-sv4-charizard-ex-006",
"name": "Charizard ex",
"game": "pokemon",
"set": "Paradox Rift",
"setCode": "sv4",
"number": "006",
"rarity": "Double Rare",
"image": "https://images.tcgpricelookup.com/pokemon/sv4/006.jpg",
"prices": {
"market": 42.50,
"low": 35.00,
"mid": 41.00,
"high": 55.00,
"conditions": {
"near_mint": 42.50,
"lightly_played": 38.25,
"moderately_played": 34.00,
"heavily_played": 29.75,
"damaged": 21.25
},
"graded": {
"psa_10": 125.00,
"psa_9": 75.00,
"bgs_9_5": 110.00,
"cgc_9_5": 95.00
}
},
"sources": ["tcgplayer", "ebay"],
"updatedAt": "2026-04-10T12:00:00Z"
}
],
"total": 47,
"limit": 5,
"offset": 0
}
Key things to know about the response:
data— array of card objects for list endpoints, single object for detail endpointstotal— total number of matching cards across all pageslimit/offset— pagination parameters mirroring your requestprices.market— the current market price in USD, aggregated from multiple sourcesprices.conditions— per-condition pricing from Near Mint down to Damagedprices.graded— PSA, BGS, CGC graded card values (when data is available)
4. Fetch a specific card
Once you have a card ID from search, fetch its full details:
const card = await tcg.getCard('pokemon-sv4-charizard-ex-006');
console.log(card.data.prices.graded.psa_10); // → 125.00
Tips and common pitfalls
Use your card IDs from search results. Card IDs follow the pattern {game}-{setCode}-{slug}. Don’t try to construct them manually — use the search endpoint to get valid IDs.
Cache responses for at least 5 minutes. Card prices update periodically, not in real time. Hammering the API for the same cards wastes your daily quota.
Prefer batch lookups for multiple cards. If you need prices for 10+ cards, use POST /v1/cards/batch instead of making individual requests. One batch call counts as one request.
Check total to paginate correctly. If total > limit + offset, there are more pages. Increment offset by limit to fetch the next page.
Don’t expose your API key in browser code. Make API calls server-side and proxy results to your frontend.
What’s Next
Now that you can make requests, explore the rest of the docs:
- Authentication — environment variables, security best practices, key management
- API Endpoints — full reference for search, card details, price history, sets, and batch lookups
- Response Format — detailed breakdown of every field in the card object
- Error Handling — how to handle errors and rate limits gracefully
- Rate Limiting — quotas, headers, caching strategies, and upgrade options