TCGdex API
Free Pokémon Trading Card Game API with no key: every set and card in 10+ languages, with images, card counts and full card data. Tested curl example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the TCGdex API?
TCGdex is a free, open-source Pokémon Trading Card Game API that requires no API key. It serves every set and card ever printed, with multilingual data in more than ten languages plus card images, and offers both a REST and a GraphQL interface.
TCGdex covers the entire Pokémon TCG back to Base Set in 1999, and its distinguishing feature is language coverage. The language code sits directly in the path — `/v2/en/sets`, `/v2/fr/sets`, `/v2/ja/sets` — so building a card app for a non-English audience needs no translation layer of your own, which is rare among free game APIs.
The data model is two levels deep and predictable: `/sets` lists every set with an id and card count, and `/sets/{id}` expands to the full card list for that set. Card images are served from a separate assets CDN and the URLs come back without an extension, so you append the quality and format you want, such as `/high.png` or `/low.webp`.
Quick facts
- Base URL
https://api.tcgdex.net/v2- Authentication
- No API key, no account, no rate-limit headers. The whole dataset is open source on GitHub and community-maintained.
- Rate limit
- No published limit. Responses are CDN-cached, so repeated reads are cheap.
- Pricing
- Free and open source (MIT).
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the TCGdex API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. List every Pokémon TCG set in English
GET https://api.tcgdex.net/v2/en/sets
curl 'https://api.tcgdex.net/v2/en/sets'const res = await fetch("https://api.tcgdex.net/v2/en/sets");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.tcgdex.net/v2/en/sets", timeout=20)
res.raise_for_status()
print(res.json())[
{
"id": "miscp",
"name": "Miscellaneous Promos",
"cardCount": {
"total": 1,
"official": 1
}
},
{
"id": "base1",
"name": "Base Set",
"logo": "https://assets.tcgdex.net/en/base/base1/logo",
"cardCount": {
"total": 102,
"official": 102
}
},
{
"id": "base2",
"name": "Jungle",
"logo": "https://assets.tcgdex.net/en/base/base2/logo",
"symbol": "https://assets.tcgdex.net/univ/base/base2/symbol",
"cardCount": {
"total": 64,
"official": 64
}
},
{
"id": "basep",
"name": "Wizards Black Star Promos",
"logo": "https://assets.tcgdex.net/en/base/basep/logo",
"symbol": "https://assets.tcgdex.net/univ/base/basep/symbol",
"cardCount": {
"total": 53,
"official": 53
}
},
{
"id": "wp",
"name": "W Promotional",
"cardCount": {
"total": 7,
"official": 7
}
},
{
"id": "base3",
"name": "Fossil",
"logo": "https://assets.tcgdex.net/en/base/base3/logo",
"symbol": "https://assets.tcgdex.net/univ/base/base3/symbol",
"cardCount": {
"total": 62,
"official": 62
}
},
{
"id": "jumbo",
"name": "Jumbo cards",
"cardCount": {
"total": 160,
"official": 160
}
},
{
"id": "base4",
"name": "Base Set 2",
"logo": "https://assets.tcgdex.net/en/base/base4/logo",
"symbol": "https://assets.tcgdex.net/univ/base/base4/symbol",
"cardCount": {
"total": 130,
"official": 130
}
},
{
"id": "base5",
"name": "Team Rocket",
"logo": "hParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lang | path segment | Required | Two-letter language code: `en`, `fr`, `de`, `es`, `it`, `pt`, `ja`, `ko`, `zh-tw`, `id`, `th`, `nl`, `pl`, `ru`. en |
resource | path segment | Required | `sets`, `cards`, `series`, `types`, `rarities` or any of the other filterable attributes. sets |
id | path segment | Optional | A set or card id, appended to expand a single record with its full data. base1 |
pagination:page | query | Optional | Page through large collections such as the full card list. Pairs with `pagination:itemsPerPage`. 1 |
Response fields
idstring- Stable set identifier such as `base1` or `swsh12`, used to fetch that set's cards.
namestring- Set name in the requested language.
logo / symbolstring- Asset base URLs with no file extension — append `/high.png`, `/low.webp` and so on. Both are absent for sets that never had artwork, so guard for undefined.
cardCount.totalinteger- Every card in the set including secret rares.
cardCount.officialinteger- The printed set size — the denominator on the card, for example the 102 in 4/102.
What you can build with the TCGdex API
- Build a Pokémon card collection tracker with images and set completion
- Add a card search or lookup to a Discord bot
- Populate a deckbuilder with legal cards for a given set or series
- Localise a TCG app for French, Japanese or Korean players without your own translations
Common errors and how to fix them
404
Unknown language code, set id or card id.
Fix: Language codes are lowercase two-letter, with `zh-tw` the exception. Set ids are lowercase alphanumeric — fetch `/sets` first rather than guessing.
Missing logo / symbol
Not an error: older and promotional sets often have no artwork.
Fix: Always null-check these fields before building an image URL.
TCGdex API — frequently asked questions
Is the TCGdex API free and does it require an API key?
It is completely free and needs no key or account. TCGdex is an open-source, community-maintained project and the underlying dataset is published on GitHub under the MIT licence.
How do I get Pokémon card images from TCGdex?
The `logo`, `symbol` and card `image` fields are base URLs without a file extension. Append a quality and format — for example `/high.png` for full resolution or `/low.webp` for thumbnails — to build a usable image URL.
Which languages does TCGdex support?
More than ten, including English, French, German, Spanish, Italian, Portuguese, Japanese, Korean, Traditional Chinese, Indonesian, Thai, Dutch, Polish and Russian. The language is the first path segment, so switching is a one-token change.
Does TCGdex include card prices?
No. It covers card data, sets and images. Market prices come from separate commercial sources, so pair it with a pricing API if your app needs valuations.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Image to Base64 Converter
Convert an image to a Base64 data URL online. Get copy-ready HTML img tags and CSS background-image snippets. Free, instant and fully private.
TCGdex is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.