Pokemon Card API
Updated . Plan numbers are the ones on the developers page that day; the live plans table wins if they ever disagree.
Quick answer
The HobbyCardIndex Pokémon card API returns raw and graded prices, set lists, sold sales, daily price history and photo identification for about 96,000 Pokémon cards, English and Japanese included, through a REST API keyed with an X-API-Key header. Plans start at $99 a month, with a free setup month by application.
What the Pokémon card API returns
Everything lives under https://hobbycardindex.com/api/v1/ and takes your key in an X-API-Key header (an Authorization: Bearer header works too). Every successful response is wrapped as {"success": true, "data": {...}}; the examples on this page show what sits inside data. Prices are US dollars with two decimals.
GET /sets?category=pokemon: every Pokémon set, with the set id, the language printed on its cards, its year and card count. Addlanguage=japanesefor Japanese sets orq=151to search set names.GET /prices/search: a card by name and number, or a whole set paged 25 at a time in card-number order when you passcategoryandsetwith noq. Each result carries raw, PSA 10, 9, 8 and 7, BGS 9.5, CGC 10 and SGC 10 prices.GET /prices/{cardId},/sales,/historyand/population: one card's prices, its sold sales, its daily history and (on Platform or with the add-on) how many copies each grader has graded.POST /scan: identify a Pokémon card or a slab from a photo, withcategory: "pokemon"to narrow the match.GET /market/movers?category=pokemon: the ten biggest risers and fallers over a day, a week or a month.POST /watchlistwith a whole set, andPUT /webhook: new cards we add to a followed set join your list by themselves and arrive ascards.added; price changes arrive once a day asprices.changed.
Try it: every English card in one set
Set ids come from GET /api/v1/sets. The Scarlet & Violet 151 set, for example, is pokemon-scarlet-violet-151 and returns 409 English cards.
curl 'https://hobbycardindex.com/api/v1/prices/search?category=pokemon&set=pokemon-scarlet-violet-151&language=english&limit=25&offset=0' \
-H 'X-API-Key: hci_live_...'
{
"results": [
{
"id": 23456,
"externalId": "98765",
"name": "Charizard ex #199",
"year": 2023,
"setName": "Pokemon Scarlet & Violet 151",
"cardNumber": "199",
"printRun": null,
"category": "Pokemon",
"playerName": "Charizard",
"imageUrl": "https://hobbycardindex.com/api/v1/images/proxy?i=...",
"addedAt": "2023-10-02T14:02:11Z",
"prices": {
"loose": 92.5,
"psa10": 435,
"psa9": 140,
"psa8": 98,
"psa7": null,
"bgs10": 390,
"cgc10": 310,
"sgc10": 330,
"volume": 2600
},
"hciUrl": "https://hobbycardindex.com/cards/23456"
}
],
"count": 100,
"limit": 25,
"offset": 0,
"hasMore": true
}
Example values, not live prices. hasMore tells you when to fetch the next offset; the set pages to its end, not to a 2,000-card cap.
Pokémon TCG API: what's in the catalog
About 96,000 Pokémon cards sit in the catalog, English and Japanese, from Base Set through the current Scarlet & Violet sets, alongside the other games (Magic, Yu-Gi-Oh, One Piece, Lorcana, Dragon Ball and Digimon) on the same key. Each card returns the raw and graded prices we hold for it, its sold-sale history and its set. year on a Pokémon card is the year its set came out, and it's null when we don't know it. Graded lanes are strongest on the chase cards and vintage holos; a common from a current set will usually have a raw price and little else, which is the honest shape of that market.
To browse the same data by hand first, the Pokémon card values hub and the Pokémon cards hub are built on it.
What you get
- Raw and graded prices in US dollars on about 96,000 Pokémon cards, refreshed daily.
- Set lists with ids, languages, years and card counts, and whole-set paging in card-number order.
- Sold sales per card, by grade, with sale type, bids, the marketplace and the listing link. Details on the sold comps page.
- Daily price history at every grade for up to ten years, for charts.
- Photo identification of raw cards and graded slabs, English and Japanese.
- Cert lookups for PSA, BGS, CGC and SGC slabs, and pop reports on Platform or with the add-on.
- A watch list that follows whole sets, with one signed webhook a day.
Plans and prices
| Plan | Price | Requests a month | Photo scans | Sold-sale lookups | Cert lookups | Lookups a second | Past the requests and scans (up to 3x) |
|---|---|---|---|---|---|---|---|
| Lite | $99 a month | 25,000 | 25,000 | 5,000 | 150 | 10 | $1 per 250 more |
| Growth Lite | $249 a month | 125,000 | 125,000 | 25,000 | 750 | 15 | $1 per 500 more |
| Growth | $499 a month | 500,000 | 500,000 | 100,000 | 3,000 | 20 | $1 per 1,000 more |
| Platform | from $1,500 a month | 2,000,000 | 1,500,000 | 500,000 | 50,000, plus 50,000 pop reports | 50 | Set up with Sean, invoiced; bulk price files included |
Price history comes with every size. Sold-sale, cert and pop lookups stop at the plan's number and never run over. Two add-ons: pop reports plus cert lookups for $100 a month, which brings 32,000 of each to Lite, Growth Lite or Growth, and the daily price files for $450 a month on Growth Lite or Growth (included in Platform, not offered on Lite). Lite, Growth Lite and Growth are month to month by card, cancelled any time in Settings, API Access, and run to the end of the paid month.
The free setup month is 30 days on real data with no card: 1,000 requests and 1,000 photo scans a day, 500 sold-sale lookups and 100 cert lookups for the month. You apply in Settings, API Access once you're signed in, and Sean reviews each one. When the 30 days end, the first month of the plan you applied with is invoiced, and paying it keeps the key going. Full plan details are on the developers page.
Credit and data use
A commercial plan licenses the data for a product your users see. You can store the prices and price history you pull while the plan is active and use them on card pages, in charts, collection values and your own estimates. Sold-sale records can be shown to your users and kept in your product, but not turned into a standalone sales database, copied by the category or offered as a download. Card recognition stays with the scan endpoint: show our identifications, don't use them to build a recognizer of your own.
The terms ask for one link back to us somewhere on your site, such as "Prices and API supplied by Hobby Card Index". It does not need to be beside the prices or on your main page. When a plan ends, stored copies go within 30 days. The full wording is in the Terms of Service, section 8, and the shorter version is under Data use on the developers page.
Common questions
Is there a Pokemon card API with prices?
Yes. The HobbyCardIndex API returns prices for about 96,000 Pokémon cards at eight grades: raw, PSA 10, 9, 8 and 7, BGS 9.5, CGC 10 and SGC 10, in US dollars. It also returns each card's sold sales, daily price history, set lists and photo identification, keyed with an X-API-Key header on every call.
Does the Pokemon card API cover Japanese cards?
Yes. Set lists and search take a language filter, so you can list Japanese sets with GET /api/v1/sets?category=pokemon&language=japanese and search or page through them with language=japanese. Each card carries the language printed on it, and prices, sold sales and photo identification work the same way for Japanese and English cards.
How do I list every card in a Pokemon set?
Call GET /api/v1/sets?category=pokemon to get the set ids, then GET /api/v1/prices/search?category=pokemon&set=<set id>&limit=25 with no q. Results come in card-number order, 100 a page, with hasMore telling you when to fetch the next offset. The Scarlet & Violet 151 set, for example, returns 409 English cards.
How much does the Pokemon card API cost?
Commercial plans start at $99 a month for Lite: 25,000 requests, 25,000 photo scans, 5,000 sold-sale lookups and 150 cert lookups. Growth Lite is $249 and Growth $499, both month to month by card. Platform starts at $1,500 a month, invoiced, with bulk price files. A free setup month on real data is available by application.
Can I get sold eBay prices for a Pokemon card?
Yes, on every commercial plan. GET /api/v1/prices/{cardId}/sales returns the card's recent sold sales, each with the price, date, grade, listing title, how it sold (auction, Buy It Now or Best Offer), bids and a link to the listing. eBay is by far the largest share, with TCGplayer, Fanatics Collect, Goldin and Heritage alongside.
Can the API identify a Pokemon card from a photo?
Yes. POST /api/v1/scan with the photo as base64 and category pokemon, and the response names the card with its set, number, a confidence score from 0 to 1, its prices and up to seven alternatives. A graded slab comes back with the grader, grade and cert number read from the label. Lite includes 25,000 scans a month.