Skip to content
pokemontcgapi.com
Documentation

Set

An expansion: codes, totals, release date, print region and the artwork that identifies it.

object14 fields

id is the set code, not an internal UUID. Set codes are short strings like bs and sv3 — human-readable, stable and guessable, which is exactly what a UUID would take away from every id you already store.

615 sets are in the catalogue today, spread across three print regions. /v1/sets carries meta.total_count, so you can check that number yourself rather than trusting this sentence.

Fields

Set fields
FieldTypeNullDescription
idstringnoSame value as code. Present so code that stores one id field keeps compiling.
codestringnoCanonical code, e.g. bs. The natural key across every importer.
slugstringnoURL-safe name, e.g. base. Resolves anywhere code resolves.
legacy_idstringyesAlternate string id for the set, e.g. base1 for bs. Null on sets that never had one — most Japanese and Chinese print lines.
namestringnoPrinted set name.
seriesstringyesSeries name, e.g. Base. Null where the series is not mapped.
regionstringnoWEST (176 sets), JP (379) or CN (60), counted 2026-08-27. KR is valid in the schema and matches no rows. The region decides which upstream is authoritative and which prices are comparable.
release_datedateyesYYYY-MM-DD. The catalogue runs from 1996-10-20 to 2026-09-16.
totalintegeryesCards in the set including secret rares.
printed_totalintegeryesThe number printed on the card, e.g. 102 of a 134-card set.
ptcgo_codestringyesCode used by the game client, e.g. BS.
symbol_urlstringyesExpansion symbol. Null on all 615 sets: our upstream carries the logo and not the symbol, so nothing is written here. Use logo_url, which is present on 613 of them. (This row read "frequently null" until 2026-09-03, which was a kinder word than the data deserved.)
logo_urlstringyesSet logo.
updated_attimestampnoISO 8601, UTC.

Example

set.json
{
  "id": "bs",
  "code": "bs",
  "slug": "base",
  "legacy_id": "base1",
  "name": "Base",
  "series": "Base",
  "region": "WEST",
  "release_date": "1999-01-09",
  "total": 134,
  "printed_total": 102,
  "ptcgo_code": "BS",
  "symbol_url": null,
  "logo_url": "https://media.rarebit.app/sets/BASE/logo-normal.webp",
  "updated_at": "2026-08-26T17:47:39.900Z"
}

Asian print lines are separate sets

A Japanese set is its own set, with its own code, its own numbering and its own release date — not a translation of a Western one. region is how you keep the two apart, and ?region=JP on /v1/sets is a real filter that returns 379 rows.

lang on the card endpoints is a different thing entirely: it translates a printed name and does not change which set you are looking at.

view this page as markdown