Skip to content
pokemontcgapi.com

Japanese Pokémon card API

A Japanese Pokémon card API: the JP sets as their own catalogue

Japanese sets are not translations of the Western ones: different set lists, different numbering, different release dates. This API models them as what they are, a separate print region, and links each card to its Western twin where one exists.

Print regions
WEST, JP and CN (Simplified Chinese)
Filter
region=JP on sets, q=set.region:JP on cards
Names
Japanese on JP cards; lang= for the other locales
Twin link
jp_twin_id on Western cards

Most Pokémon card APIs cover the international print line and stop. The Japanese line is the larger half of the hobby by number of sets, it releases first, and it is what a growing share of Western collectors actually buy. Here GET /v1/sets?region=JP lists the Japanese sets with their own codes and dates, and q=set.region:JP narrows any card search to them.

A Japanese card is a card in its own right, with its own id, number, rarity, illustrator and image. Where we know the pairing, the Western printing of the same card carries jp_twin_id, so an app can show "also printed in Japan as…" without guessing from the artwork.

The Simplified Chinese line is modelled the same way, as region CN. The live counts for each region, with the earliest and latest set we hold, are on the coverage page and are read from the API when you open it.

One call, and what comes back

Listing sets. Add `?region=JP` to get only the Japanese print line; the set object is the same shape for every region.

GET/v1/sets1 credit · from Trialfull reference
curl -s -G "https://api.pokemontcgapi.com/v1/sets" \
  --data-urlencode "region=JP" \
  --data-urlencode "limit=2" \
  -H "X-Api-Key: $PTCG_API_KEY"
response.json
{
  "data": [
    {
      "id": "m6",
      "code": "m6",
      "slug": "storm-emeralda",
      "legacy_id": null,
      "name": "Storm Emeralda",
      "series": null,
      "region": "JP",
      "release_date": "2026-07-31",
      "total": 116,
      "printed_total": null,
      "ptcgo_code": null,
      "symbol_url": null,
      "logo_url": "https://media.rarebit.app/sets/m6/logo-normal.webp",
      "updated_at": "2026-08-26T17:47:39.900Z"
    },
    {
      "id": "m5",
      "code": "m5",
      "slug": "abyss-eye",
      "legacy_id": null,
      "name": "Abyss Eye",
      "series": null,
      "region": "JP",
      "release_date": "2026-05-22",
      "total": 118,
      "printed_total": null,
      "ptcgo_code": null,
      "symbol_url": null,
      "logo_url": "https://media.rarebit.app/sets/M5/logo-normal.webp",
      "updated_at": "2026-08-26T17:47:39.900Z"
    }
  ],
  "meta": { "limit": 2, "count": 2, "total_count": 379, "has_more": true },
  "links": { "next": "https://api.pokemontcgapi.com/v1/sets?limit=2&region=JP&cursor=eyJrIjpbIjIwMjYtMDUtMjJUMDA6MDA6MDAuMDAwWiJdLCJ..." }
}

Names and languages

Two things get confused here, so the API keeps them apart. The print region says where a card was printed; lang says which language you want the card name in. lang=ja on a Western card returns its Japanese name where we hold one; a Japanese card has a Japanese name to begin with. Card names exist in eight locales, and a missing translation falls back to English rather than returning an empty string.

Prices for Japanese cards

Japanese printings are priced where a source covers them, in the same row format as everything else: source, basis, currency, date. Coverage is thinner than on the Western line, and it is uneven across eras. The honest way to check is the per-region section of the coverage page, which reports how many sources and which currencies a probe card from each region returns today.

What it is not

Read this before you build on it. Every line here is a support ticket somebody else already opened.

No Korean cards
There are no Korean sets and no Korean card names in the catalogue today. The API accepts region=KR and lang=ko and answers with an empty page, not an error.
No game text on Japanese cards
Attacks, abilities and rules text are held in English for Western printings only. On a Japanese card those fields are null, which means "not held", not "has none".
Thinner price coverage
Expect fewer price rows per Japanese card than per Western card, and check as_of on each.

Questions people ask before signing up

Does the API include Japanese-exclusive sets?
Yes. The Japanese print line is its own region with its own sets, including those that were never released in the West. List them with GET /v1/sets?region=JP. Coverage, measured live
How do I match a Japanese card to its English version?
Western cards carry jp_twin_id where the pairing is known; request that id to get the Japanese printing. The pairing is not complete, so treat a null as unknown rather than as "no Japanese printing".
Are Japanese card names in Japanese?
Yes. Japanese cards have Japanese names, and lang=ja returns Japanese names for Western cards where we hold them. Names exist in eight locales: English, French, German, Japanese, Italian, Spanish, Portuguese and Simplified Chinese.
Is the Japanese catalogue on the free trial?
Yes. Every catalogue route and every image is on the trial: 800 credits, once, valid 30 days, no card. Free trial key

Keep reading