API Reference

Documentation

One API for TCGPlayer and eBay prices. Query raw + graded tiers and history data from one schema built for apps, dashboards, alerts, and AI workflows.

Cards

Search cards with prices from TCGPlayer and eBay. Filter by set, rarity, condition, and more.

GET /v1/cards

Sets

Browse all Pokemon card sets with card counts and metadata.

GET /v1/sets

Sealed

Sealed product pricing for booster boxes, ETBs, bundles, and more.

GET /v1/sealed

Prices

Historical price data with daily averages, highs, lows, and sale counts.

GET /v1/cards/:id/prices/history

Listings

Recent eBay sold listings with grading data and sale prices.

GET /v1/cards/:id/listings

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.

01

Get API Key

Sign up and create a key in the dashboard.

02

Add Header

Include your API key in requests.

03

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

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.

LLM_INTEGRATION_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. 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").
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. Default: 1
per_pagenumberResults per page. Maximum 100. Default: 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"
      },
      "prices": [
        {
          "source": "tcgplayer",
          "condition": "Near Mint",
          "variant": "Holofoil",
          "market_price": 285,
          "created_at": "2026-04-15T00:00:00Z"
        }
      ]
    }
  ],
  "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.

Parameters

idintegerrequiredThe unique card ID.

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,
  "set": {
    "id": 1,
    "name": "Base Set"
  },
  "prices": [
    {
      "source": "tcgplayer",
      "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

namestringFilter by set name (partial match supported).
languagestringFilter by language (e.g. "English", "Japanese").
pagenumberPage number for pagination. Default: 1
per_pagenumberResults per page. Maximum 100. Default: 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. 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. Default: 1
per_pagenumberResults per page. Maximum 100. Default: 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"
      },
      "prices": [
        {
          "source": "tcgplayer",
          "condition": null,
          "variant": null,
          "market_price": 189.99,
          "created_at": "2026-04-15T00:00:00Z"
        }
      ]
    }
  ],
  "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

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

Parameters

idstringrequiredThe unique card ID.
periodstringTime period for history. One of "7d", "30d", "90d", "365d". Default: 90d
limitnumberMaximum number of data points to return. Default: 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
  }
}

eBay Listings

GET/v1/cards/:id/listings1 credit per item returned

Retrieve recent eBay sold listings for a specific card. 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").
sortstringSort order. One of "date_desc", "date_asc", "price_desc", "price_asc". Default: date_desc
limitnumberNumber of listings to return per page. Default: 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
Response
{
  "data": [
    {
      "title": "Pokemon 1999 Base Set 1st Edition Charizard PSA 10 GEM MINT",
      "price": 12000,
      "grader": "PSA",
      "grade": "10",
      "sold_at": "2026-04-14T18:32:00Z",
      "url": "https://www.ebay.com/itm/123456789012"
    },
    {
      "title": "Pokemon Base Set 1st Edition Charizard PSA 9 MINT",
      "price": 4750,
      "grader": "PSA",
      "grade": "9",
      "sold_at": "2026-04-13T10:15:00Z",
      "url": "https://www.ebay.com/itm/123456789013"
    }
  ],
  "next_cursor": "eyJwYWdlIjoyfQ=="
}

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.