Quick 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.

1

Get an API key

Sign up and create a key in the dashboard.

2

Add the header

Include your API key in requests.

3

Query data

Access cards, sets, and pricing.

bash
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.

http
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
typescript
import { PkmnPrices } from "@pkmnprices/sdk";
const client = new PkmnPrices({
apiKey: process.env.PKMNPRICES_API_KEY
});
// Search cards — fully typed params and response
const { data } = await client.cards.list({
name: "charizard",
per_page: 5
});
// Fetch one card with TCGplayer (USD) or Cardmarket (EUR) prices
const 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.

System prompt
Loading…

Cards

GET/v1/cards1 credit per item returned

Search 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

namestring

Filter by card name (partial match supported).

numberstring

Filter by card number within the set.

total_set_numberstring

Filter by total set number (e.g. "102" for Base Set).

set_idstring

Filter by set ID.

tcg_player_idinteger

Filter by TCGPlayer product ID.

languagestring

Card language (e.g. "English", "Japanese"). Free tier: English only.

raritystring

Card rarity (e.g. "Rare Holo", "Common").

stagestring

Evolution stage (e.g. "Basic", "Stage 1", "Stage 2").

card_typestring

Card type (e.g. "Fire", "Water", "Trainer").

weaknessstring

Weakness type (e.g. "Water").

energy_typestring

Attack energy type the card uses (e.g. "Fire"). Matches cards whose energy types include the value.

conditionstring

Card condition (e.g. "Near Mint", "Lightly Played", "Moderately Played").

variantstring

Card variant (e.g. "Normal", "Reverse Holo", "1st Edition").

gradestring

PSA/BGS/CGC grade value.

min_pricenumber

Minimum market price filter (USD).

max_pricenumber

Maximum market price filter (USD).

sortstring

Sort order. One of "price_asc", "price_desc", "name_asc", "name_desc".

pagenumber

Page number for pagination. Defaults to 1.

per_pagenumber

Results per page. Maximum 100. Defaults to 50.

Try it

curl -H "X-API-Key: YOUR_API_KEY" \
https://api.pkmnprices.com/v1/cards
Response
{
  "data": [
    {
      "id": 4521,
      "tcg_player_id": 89356,
      "name": "Charizard",
      "image_url": "https://images.pkmnprices.com/cards/4521.jpg",
      "number": "4",
      "total_set_number": "102",
      "rarity": "Rare Holo",
      "artist": "Mitsuhiro Arita",
      "hp": 120,
      "set": {
        "id": 1,
        "name": "Base Set"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 1,
    "total_pages": 1
  }
}
GET/v1/cards/:id1 credit

Retrieve 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

idintegerrequired

The unique card ID.

currencystring

Price 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}
Response
{
  "id": 4521,
  "tcg_player_id": 89356,
  "name": "Charizard",
  "image_url": "https://images.pkmnprices.com/cards/4521.jpg",
  "number": "4",
  "total_set_number": "102",
  "rarity": "Rare Holo",
  "artist": "Mitsuhiro Arita",
  "hp": 120,
  "stage": "Stage 2",
  "card_type": "Fire",
  "weakness": "Water",
  "resistance": null,
  "retreat_cost": 3,
  "energy_type": [
    "Fire"
  ],
  "ability": "Energy Burn",
  "flavor_text": "Spits fire that is hot enough to melt boulders. Known to cause forest fires unintentionally.",
  "attacks": [
    "Fire Spin"
  ],
  "cardmarket_url": "https://www.cardmarket.com/en/Pokemon/Products/Singles/Base-Set/Charizard",
  "set": {
    "id": 1,
    "name": "Base Set"
  },
  "prices": [
    {
      "source": "tcgplayer",
      "currency": "USD",
      "condition": "Near Mint",
      "variant": "Holofoil",
      "market_price": 285,
      "created_at": "2026-04-15T00:00:00Z"
    }
  ]
}

Sets

GET/v1/sets1 credit per item returned

Retrieve a paginated list of all Pokemon card sets. Supports name search and language filtering.

Parameters

namestring

Filter by set name (partial match supported).

languagestring

Filter by language (e.g. "English", "Japanese").

pagenumber

Page number for pagination. Defaults to 1.

per_pagenumber

Results per page. Maximum 100. Defaults to 50.

Try it

curl -H "X-API-Key: YOUR_API_KEY" \
https://api.pkmnprices.com/v1/sets
Response
{
  "data": [
    {
      "id": 1,
      "tcg_player_id": 2477,
      "name": "Base Set",
      "language": "English",
      "card_count": 102
    },
    {
      "id": 284,
      "tcg_player_id": 23456,
      "name": "Crown Zenith",
      "language": "English",
      "card_count": 230
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 650,
    "total_pages": 13
  }
}

Sealed Products

GET/v1/sealed1 credit per item returned

Search 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

namestring

Filter by product name (partial match supported).

set_idstring

Filter by set ID.

languagestring

Product language (e.g. "en", "jp").

min_pricenumber

Minimum market price filter (USD).

max_pricenumber

Maximum market price filter (USD).

sortstring

Sort order. One of "price_asc", "price_desc", "name_asc", "name_desc".

pagenumber

Page number for pagination. Defaults to 1.

per_pagenumber

Results per page. Maximum 100. Defaults to 50.

Try it

curl -H "X-API-Key: YOUR_API_KEY" \
https://api.pkmnprices.com/v1/sealed
Response
{
  "data": [
    {
      "id": 5678,
      "tcg_player_id": 45123,
      "name": "Crown Zenith Booster Box",
      "image_url": "https://images.pkmnprices.com/sealed/5678.jpg",
      "set": {
        "id": 284,
        "name": "Crown Zenith"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 412,
    "total_pages": 9
  }
}
GET/v1/sealed/:id1 credit

Retrieve a single sealed Pokemon product by its unique ID. Pro and Business tiers only.

Parameters

idintegerrequired

The unique sealed product ID.

Try it

curl -H "X-API-Key: YOUR_API_KEY" \
https://api.pkmnprices.com/v1/sealed/{id}
Response
{
  "id": 5678,
  "tcg_player_id": 45123,
  "name": "Crown Zenith Booster Box",
  "image_url": "https://images.pkmnprices.com/sealed/5678.jpg",
  "set": {
    "id": 284,
    "name": "Crown Zenith"
  },
  "prices": [
    {
      "source": "tcgplayer",
      "condition": null,
      "variant": null,
      "market_price": 189.99,
      "created_at": "2026-04-15T00:00:00Z"
    }
  ]
}

Price History

GET/v1/cards/:id/prices/history1 credit per item returned

Retrieve 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

idstringrequired

The unique card ID.

currencystring

Price source/currency. "usd" returns TCGPlayer/eBay history, "eur" returns Cardmarket history. Cards without Cardmarket data return an empty array for "eur". Defaults to usd.

periodstring

Time period for history. One of "7d", "30d", "90d", "365d". Defaults to 90d.

limitnumber

Maximum 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
Response
{
  "data": [
    {
      "date": "2026-04-08",
      "avg": 8100,
      "low": 7800,
      "high": 8450,
      "sale_count": 3,
      "source": "ebay",
      "condition": "Near Mint",
      "variant": "1st Edition"
    },
    {
      "date": "2026-04-09",
      "avg": 8200,
      "low": 7950,
      "high": 8500,
      "sale_count": 5,
      "source": "ebay",
      "condition": "Near Mint",
      "variant": "1st Edition"
    },
    {
      "date": "2026-04-15",
      "avg": 8250,
      "low": 8100,
      "high": 8400,
      "sale_count": 4,
      "source": "ebay",
      "condition": "Near Mint",
      "variant": "1st Edition"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 365,
    "total": 90,
    "total_pages": 1
  }
}

TCGplayer Listings

GET/v1/cards/:id/listings/tcgplayer1 credit per item returned

Retrieve 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

idstringrequired

The unique card ID.

conditionstring

Condition filter (e.g. "Near Mint", "Lightly Played", "Moderately Played").

languagestring

Listing language filter (e.g. "English", "Japanese").

printingstring

Printing/variant filter (e.g. "Holofoil", "Normal", "Reverse Holofoil").

min_pricenumber

Minimum offer price (USD).

max_pricenumber

Maximum offer price (USD).

sortstring

Sort order. One of "price_asc", "price_desc". Defaults to price_asc.

limitnumber

Number of listings to return per page (max 20). Defaults to 20.

cursorstring

Pagination 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
Response
{
  "data": [
    {
      "id": 7890,
      "listing_id": 1234567890,
      "printing": "Holofoil",
      "condition": "Near Mint",
      "language": "English",
      "price": 279.99,
      "shipping_price": 0,
      "seller_name": "TopTierCards",
      "seller_id": "a1b2c3d4",
      "seller_rating": 99.8,
      "seller_sales": "50,000+",
      "quantity": 3,
      "listing_type": "standard",
      "direct_seller": true,
      "gold_seller": true,
      "verified_seller": true,
      "custom_title": "PSA-ready, pack fresh",
      "updated_at": "2026-06-10T14:22:00+00:00"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "Nzg5MA==",
    "count": 20
  }
}

Cardmarket Listings

GET/v1/cards/:id/listings/cardmarket1 credit per item returned

Retrieve live Cardmarket marketplace offers for a specific card — current asking prices in EUR, not completed sales. Supports cursor-based pagination.

Parameters

idstringrequired

The unique card ID.

conditionstring

Condition filter (e.g. "Near Mint", "Excellent").

languagestring

Listing language filter (e.g. "English", "German").

variantstring

Variant filter (e.g. "Holofoil", "Reverse Holofoil").

min_pricenumber

Minimum offer price (EUR).

max_pricenumber

Maximum offer price (EUR).

sortstring

Sort order. One of "price_asc", "price_desc". Defaults to price_asc.

limitnumber

Number of listings to return per page (max 20). Defaults to 20.

cursorstring

Pagination 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
Response
{
  "data": [
    {
      "id": 3456,
      "article_id": 1789012345,
      "price": 38.5,
      "variant": "Holofoil",
      "condition": "Near Mint",
      "seller": "CardKingdomEU",
      "quantity": 2,
      "language": "English",
      "comment": "Pack fresh, sleeved immediately",
      "updated_at": "2026-06-10T14:22:00+00:00"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "MzQ1Ng==",
    "count": 20
  }
}

eBay Listings

GET/v1/cards/:id/listings/ebay1 credit per item returned

Retrieve recent eBay sold listings for a specific card — completed sales with grading data, in USD. Supports cursor-based pagination for large result sets.

Parameters

idstringrequired

The unique card ID.

graderstring

Grading company filter (e.g. "PSA", "BGS", "CGC").

gradestring

Grade value filter (e.g. "10", "9.5", "9").

min_pricenumber

Minimum sale price.

max_pricenumber

Maximum sale price.

sortstring

Sort order. One of "date_desc", "date_asc", "price_desc", "price_asc". Defaults to date_desc.

limitnumber

Number of listings to return per page (max 20). Defaults to 20.

cursorstring

Pagination 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
Response
{
  "data": [
    {
      "id": 5678,
      "ebay_listing_id": "385012345678",
      "title": "Pokemon 1999 Base Set 1st Edition Charizard PSA 10 GEM MINT",
      "price": 12000,
      "grader": "PSA",
      "grade": "10",
      "sale_type": "auction",
      "sold_at": "2026-04-14",
      "listing_url": "https://www.ebay.com/itm/123456789012"
    },
    {
      "id": 5679,
      "ebay_listing_id": "385012345679",
      "title": "Pokemon Base Set 1st Edition Charizard PSA 9 MINT",
      "price": 4750,
      "grader": "PSA",
      "grade": "9",
      "sale_type": "buy_it_now",
      "sold_at": "2026-04-13",
      "listing_url": "https://www.ebay.com/itm/123456789013"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "NTY3OQ==",
    "count": 20
  }
}

Errors

The API uses standard HTTP status codes. All error responses include a JSON body with error.code and error.message fields.

StatusCodeDescription
400bad_requestInvalid request parameters
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks permission for this resource
404not_foundResource not found
429rate_limitedToo many requests — slow down
500internal_errorSomething went wrong on our end
json
{
"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.

PlanDaily creditsRate limitAPI keys
Free10060 req/min1
Pro20,00060 req/min5
Business200,000200 req/minUnlimited

When rate limited, you'll receive a 429 status code. Wait and retry with exponential backoff.