Documentation
One API for TCGPlayer, Cardmarket, and eBay prices. Query raw + graded tiers and history data from one schema built for apps, dashboards, alerts, and AI workflows.
Cards
Search cards across every set. Filter by set, rarity, condition, and more. Fetch a single card for TCGPlayer (USD) and Cardmarket (EUR) prices.
GET /v1/cardsSets
Browse all Pokemon card sets with card counts and metadata.
GET /v1/setsSealed
Browse sealed products — booster boxes, ETBs, bundles, and more. Fetch a single product for its pricing.
GET /v1/sealedPrices
Historical price data with daily averages, highs, lows, and sale counts.
GET /v1/cards/:id/prices/historyListings
Live TCGplayer and Cardmarket marketplace offers, plus recent eBay sold listings with grading data.
GET /v1/cards/:id/listings/tcgplayerQuick start
Get up and running with the API in under 5 minutes. Access real-time pricing data for over 54,000 Pokemon cards including PSA, BGS, and CGC graded values.
Get an API key
Sign up and create a key in the dashboard.
Add the header
Include your API key in requests.
Query data
Access cards, sets, and pricing.
curl -H "X-API-Key: YOUR_API_KEY" \"https://api.pkmnprices.com/v1/cards?name=charizard&per_page=5"
Authentication
All API requests require your API key in the X-API-Key header. Get your free API key at the dashboard.
X-API-Key: YOUR_API_KEY
SDKs
Official SDKs for JavaScript / TypeScript and Python. Typed methods for every endpoint, API-key auth handled for you, auto-paginating iterators, and editor autocomplete on params and responses.
npm install @pkmnprices/sdk
import { PkmnPrices } from "@pkmnprices/sdk";const client = new PkmnPrices({apiKey: process.env.PKMNPRICES_API_KEY});// Search cards — fully typed params and responseconst { data } = await client.cards.list({name: "charizard",per_page: 5});// Fetch one card with TCGplayer (USD) or Cardmarket (EUR) pricesconst charizard = await client.cards.get(data[0].id, {currency: "usd"});console.log(charizard.prices[0].market_price); // 285
LLM Integration
Drop this into your LLM's system prompt so it knows how to query card prices, filter by set or condition, and parse responses correctly.
Cards
/v1/cards1 credit per item returnedSearch and filter Pokemon cards across all sets and languages. Supports full-text name search, price range filtering, and sorting. Does not return price data — fetch a single card via GET /v1/cards/:id for prices. Free tier cannot access Japanese cards.
Parameters
namestringFilter by card name (partial match supported).
numberstringFilter by card number within the set.
total_set_numberstringFilter by total set number (e.g. "102" for Base Set).
set_idstringFilter by set ID.
tcg_player_idintegerFilter by TCGPlayer product ID.
languagestringCard language (e.g. "English", "Japanese"). Free tier: English only.
raritystringCard rarity (e.g. "Rare Holo", "Common").
stagestringEvolution stage (e.g. "Basic", "Stage 1", "Stage 2").
card_typestringCard type (e.g. "Fire", "Water", "Trainer").
weaknessstringWeakness type (e.g. "Water").
energy_typestringAttack energy type the card uses (e.g. "Fire"). Matches cards whose energy types include the value.
conditionstringCard condition (e.g. "Near Mint", "Lightly Played", "Moderately Played").
variantstringCard variant (e.g. "Normal", "Reverse Holo", "1st Edition").
gradestringPSA/BGS/CGC grade value.
min_pricenumberMinimum market price filter (USD).
max_pricenumberMaximum market price filter (USD).
sortstringSort order. One of "price_asc", "price_desc", "name_asc", "name_desc".
pagenumberPage number for pagination. Defaults to 1.
per_pagenumberResults per page. Maximum 100. Defaults to 50.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards
/v1/cards/:id1 creditRetrieve a single Pokemon card by its unique ID, including all price data and gameplay attributes (stage, type, HP, weakness, resistance, retreat cost, energy type, ability, attacks, and flavor text). These attributes are returned only by this endpoint, not the list endpoints. Prices come from TCGPlayer (USD) and Cardmarket (EUR) — use the currency parameter to select which source is returned.
Parameters
idintegerrequiredThe unique card ID.
currencystringPrice source/currency. "usd" returns TCGPlayer prices, "eur" returns Cardmarket prices. Cards without Cardmarket data return an empty prices array for "eur". Defaults to usd.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards/{id}
Sets
/v1/sets1 credit per item returnedRetrieve a paginated list of all Pokemon card sets. Supports name search and language filtering.
Parameters
namestringFilter by set name (partial match supported).
languagestringFilter by language (e.g. "English", "Japanese").
pagenumberPage number for pagination. Defaults to 1.
per_pagenumberResults per page. Maximum 100. Defaults to 50.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/sets
Sealed Products
/v1/sealed1 credit per item returnedSearch and filter sealed Pokemon products such as booster boxes, ETBs, and tins. Does not return price data — fetch a single product via GET /v1/sealed/:id for prices. Pro and Business tiers only.
Parameters
namestringFilter by product name (partial match supported).
set_idstringFilter by set ID.
languagestringProduct language (e.g. "en", "jp").
min_pricenumberMinimum market price filter (USD).
max_pricenumberMaximum market price filter (USD).
sortstringSort order. One of "price_asc", "price_desc", "name_asc", "name_desc".
pagenumberPage number for pagination. Defaults to 1.
per_pagenumberResults per page. Maximum 100. Defaults to 50.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/sealed
/v1/sealed/:id1 creditRetrieve a single sealed Pokemon product by its unique ID. Pro and Business tiers only.
Parameters
idintegerrequiredThe unique sealed product ID.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/sealed/{id}
Price History
/v1/cards/:id/prices/history1 credit per item returnedRetrieve historical pricing data for a card over a specified time period. Useful for charting price trends. Use the currency parameter to choose the source: USD history is sourced from TCGPlayer/eBay, EUR history from Cardmarket.
Parameters
idstringrequiredThe unique card ID.
currencystringPrice source/currency. "usd" returns TCGPlayer/eBay history, "eur" returns Cardmarket history. Cards without Cardmarket data return an empty array for "eur". Defaults to usd.
periodstringTime period for history. One of "7d", "30d", "90d", "365d". Defaults to 90d.
limitnumberMaximum number of data points to return. Defaults to 365.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards/{id}/prices/history
TCGplayer Listings
/v1/cards/:id/listings/tcgplayer1 credit per item returnedRetrieve live TCGplayer marketplace offers for a specific card — current asking prices in USD, not completed sales. Includes seller reputation (rating, sales count, Gold/Direct/Verified badges) and shipping cost. Supports cursor-based pagination.
Parameters
idstringrequiredThe unique card ID.
conditionstringCondition filter (e.g. "Near Mint", "Lightly Played", "Moderately Played").
languagestringListing language filter (e.g. "English", "Japanese").
printingstringPrinting/variant filter (e.g. "Holofoil", "Normal", "Reverse Holofoil").
min_pricenumberMinimum offer price (USD).
max_pricenumberMaximum offer price (USD).
sortstringSort order. One of "price_asc", "price_desc". Defaults to price_asc.
limitnumberNumber of listings to return per page (max 20). Defaults to 20.
cursorstringPagination cursor returned from a previous response.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards/{id}/listings/tcgplayer
Cardmarket Listings
/v1/cards/:id/listings/cardmarket1 credit per item returnedRetrieve live Cardmarket marketplace offers for a specific card — current asking prices in EUR, not completed sales. Supports cursor-based pagination.
Parameters
idstringrequiredThe unique card ID.
conditionstringCondition filter (e.g. "Near Mint", "Excellent").
languagestringListing language filter (e.g. "English", "German").
variantstringVariant filter (e.g. "Holofoil", "Reverse Holofoil").
min_pricenumberMinimum offer price (EUR).
max_pricenumberMaximum offer price (EUR).
sortstringSort order. One of "price_asc", "price_desc". Defaults to price_asc.
limitnumberNumber of listings to return per page (max 20). Defaults to 20.
cursorstringPagination cursor returned from a previous response.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards/{id}/listings/cardmarket
eBay Listings
/v1/cards/:id/listings/ebay1 credit per item returnedRetrieve recent eBay sold listings for a specific card — completed sales with grading data, in USD. Supports cursor-based pagination for large result sets.
Parameters
idstringrequiredThe unique card ID.
graderstringGrading company filter (e.g. "PSA", "BGS", "CGC").
gradestringGrade value filter (e.g. "10", "9.5", "9").
min_pricenumberMinimum sale price.
max_pricenumberMaximum sale price.
sortstringSort order. One of "date_desc", "date_asc", "price_desc", "price_asc". Defaults to date_desc.
limitnumberNumber of listings to return per page (max 20). Defaults to 20.
cursorstringPagination cursor returned from a previous response.
Try it
curl -H "X-API-Key: YOUR_API_KEY" \https://api.pkmnprices.com/v1/cards/{id}/listings/ebay
Errors
The API uses standard HTTP status codes. All error responses include a JSON body with error.code and error.message fields.
| Status | Code | Description |
|---|---|---|
400 | bad_request | Invalid request parameters |
401 | unauthorized | Missing or invalid API key |
403 | forbidden | API key lacks permission for this resource |
404 | not_found | Resource not found |
429 | rate_limited | Too many requests — slow down |
500 | internal_error | Something went wrong on our end |
{"error": {"code": "unauthorized","message": "Missing or invalid API key. Pass a valid key in the X-API-Key header."}}
Rate Limiting
Credits are charged based on the number of items returned in each response. Single-item lookups cost 1 credit. List endpoints cost 1 credit per item in the response. Credits reset daily at midnight UTC. Rate limits are per account, not per API key.
| Plan | Daily credits | Rate limit | API keys |
|---|---|---|---|
| Free | 100 | 60 req/min | 1 |
| Pro | 20,000 | 60 req/min | 5 |
| Business | 200,000 | 200 req/min | Unlimited |
When rate limited, you'll receive a 429 status code. Wait and retry with exponential backoff.