---
title: "Browse cards independently of prices"
method: GET
path: "/v1/catalog/cards"
tags: ["Japanese catalogue"]
---

# Browse cards independently of prices

`GET /v1/catalog/cards`

## Request

- Base URL: `https://tcgdata-api.ottenniels1999.workers.dev`
- URL: `https://tcgdata-api.ottenniels1999.workers.dev/v1/catalog/cards`
- Auth: HTTP bearer

Japanese Pokémon card records remain discoverable when prices are missing or stale. Follow pricing.price_variants[].id to the existing price and history endpoints.

1 admitted HTTP request. Unknown query/body parameters are rejected. Examples contain illustrative data and placeholder IDs; they are not live catalogue records.

## Query parameters

- `game` 'pokemon_jp', required
- `q` string
- `set` string
- `limit` integer
- `after` string
- `locale` string
- `release_status` 'released' | 'unreleased' | 'unknown' | 'all'
- `pricing_status` 'available' | 'unmapped' | 'unpriced' | 'stale' | 'unapproved' | 'identity_conflict' | 'unreleased'
- `view` 'full' | 'compact'
- `select` string: Comma-separated top-level fields; overrides view. id is always returned. Unknown or nested fields return 400. Allowed top-level fields: id, slug, catalogue_language, name, game, set_id, set_name, number, printed_number, language, images, metadata, metadata_status, metadata_quality, metadata_text, finish_details, locale, release_status, data_provenance, snapshot_built_at, variants, pricing, canonical_membership.
- `variant_release_status` 'released' | 'all'

## Response `200`

Success. 1 admitted HTTP request.

- CatalogueCardList
  - `data` CatalogueCard[], required
    - `id` string, required: Stable Japanese source-card identity. It is not a tcg_ price-variant ID or a readable slug.
    - `slug` string, nullable: Readable-address fields can be null for source cards without a verified price-variant route. Use the cat_ ID for source-card details.
    - `catalogue_language` string, nullable: Readable-address fields can be null for source cards without a verified price-variant route. Use the cat_ ID for source-card details.
    - `name` string: Source-card name. A name change does not create a new catalogue ID.
    - `game` 'pokemon_jp': The independent source-card catalogue currently supports Japanese Pokémon only. Stored tcg_ variants have a separate six-game catalogue.
    - `set_id` string, nullable: Source-set identifier, or null when unavailable. This is a catalogue membership, not proof of a unique physical printing.
    - `set_name` string, nullable: Available source-set display name, or null.
    - `number` string, nullable: Source catalogue number. Preserve prefixes and leading zeroes; a catalogue ordinal is not necessarily printed on the card.
    - `printed_number` string, nullable: Verified printed Pokémon collector notation, or null. Never derived from catalogue counts or ordinals.
    - `language` string: Physical source-card locale, such as ja. It does not filter Cardmarket prices or certify the language of every metadata text field.
    - `images` Images: Available small/large images are root-relative API paths, fetched server-side with Bearer authentication against the API origin; null means unavailable. Follow the complete path, including catalogue_card_id for catv_ variants or face for Magic metadata.faces images. base is null. No public CDN URL or token is returned. Every admitted image response consumes one request from the shared daily and monthly limits; image and byte counters are diagnostic.
      - `base` unknown, required
      - `small` string, nullable, required
      - `large` string, nullable, required
    - `metadata` MetadataPokemonJp
      - `category` string, nullable, required: Source card category. Its values depend on the game and card type.
      - `subtypes` string[], required: Source classifications below the main category; an empty list may be unverified.
      - `hp` integer, nullable, required: Hit points. Supporter and Energy cards do not have Pokémon HP; other nulls can be unknown.
      - `types` string[], required: Pokémon energy-type labels, such as Fire. These are separate from attack energy costs.
      - `level` string, nullable, required: Printed level label when available. It stays text and is not derived from HP or evolution.
      - `printed_number` string, nullable, required: Verified printed collector notation, including prefixes and denominators. Never inferred from set size.
      - `evolves_from` string, nullable, required: Source name of the preceding evolution. Null does not establish that the card is a Basic Pokémon.
      - `rarity` string, nullable, required: Source rarity label for this printing; labels are not normalized across games.
      - `illustrator` string, nullable, required: Source illustrator credit, preserved as text.
      - `flavor_text` string, nullable, required: Available flavor text, preserved in its source language; no translation is performed.
      - `pokedex_numbers` integer[], required: Supplied National Pokédex numbers; no species identity is inferred from a card name.
      - `abilities` object[], required: Available abilities or Pokémon Powers. An empty array alone does not prove that no ability is printed.
        - `name` string, nullable, required: Source ability name.
        - `type` string, nullable, required: Source classification such as Ability or Pokémon Power; not a closed enum.
        - `text` string, nullable, required: Source ability effect text. Text language can differ from the card locale.
      - `attacks` object[], required: Available attacks. Supporter-only exclusions do not apply to every Trainer: Technical Machine and Fossil cards may have attacks.
        - `name` string, nullable, required: Source attack name.
        - `cost` string[], required: Ordered energy symbols. Repeated symbols are retained; do not deduplicate them.
        - `energy_cost` integer, nullable, required: Supplied total attack energy cost. Null is unknown; zero is a known zero cost.
        - `damage` string, nullable, required: Printed damage expression, such as 40+, 20× or 100. Preserve it as text; null may be a non-damaging attack or missing data.
        - `text` string, nullable, required: Available attack effect text, without automatic translation.
      - `weaknesses` object[], required: Available weakness modifiers. Empty does not establish verified absence.
        - `type` string, nullable, required: Energy-type label of the weakness.
        - `value` string, nullable, required: Printed modifier, such as ×2 or +20; keep it as text.
      - `resistances` object[], required: Available resistance modifiers. Empty does not establish verified absence.
        - `type` string, nullable, required: Energy-type label of the resistance.
        - `value` string, nullable, required: Printed modifier, such as -30; keep it as text.
      - `retreat_cost` string[], required: Supplied retreat energy symbols. A missing list is different from a known retreat value of zero.
      - `retreat` integer, nullable, required: Supplied total retreat cost. Zero is meaningful; null may be unknown or not applicable.
      - `rules` string[], required: Available rule-box text, including special card rules. Empty remains unverified unless diagnostics establish otherwise.
      - `regulation_mark` string, nullable, required: Source regulation mark when available; not a guarantee of current format legality.
      - `legalities` object, required: Catalogue legality labels with no separate freshness guarantee; do not infer current tournament eligibility.
        - `standard` string, nullable, required: Source legality label for standard. Null means no supplied status.
        - `expanded` string, nullable, required: Source legality label for expanded. Null means no supplied status.
        - `unlimited` string, nullable, required: Source legality label for unlimited. Null means no supplied status.
        - `gym_leader_challenge` string, nullable, required: Source legality label for gym leader challenge. Null means no supplied status.
    - `metadata_status` MetadataStatus
      - `state` 'available' | 'unavailable', required
      - `unknown_fields` string[], required
      - `unverified_empty_fields` string[], required
    - `metadata_quality` MetadataQuality
      - `state` 'complete' | 'partial' | 'unavailable', required
      - `scope` 'emitted_fields', required
      - `unknown_fields` string[], required
      - `not_applicable_fields` string[], required
      - `known_empty_fields` string[], required
      - `unverified_empty_fields` string[], required
    - `metadata_text` MetadataText: Best-effort language observations per nonempty rule/name text. Inferred languages are unverified, not printed-locale or translation provenance. Short/ambiguous text may remain unknown; card locale is never used to fill missing evidence.
      - `state` 'mixed' | 'single_language' | 'unknown' | 'unavailable', required
      - `languages` string[], required
      - `fields` object[], required
        - `path` string, required: JSON Pointer relative to the metadata object.
        - `languages` string[], required
        - `evidence` 'inferred' | 'unknown', required
    - `finish_details` FinishDetails: Use guide_finish as the finish query parameter on readable price/history routes. Guide buckets and physical printing facts are independent: One Piece physical_finish nonfoil can use guide_finish normal while legacy finish is null. A sole explicit finish is exposed as physical_finish; multiple possible finishes never select a physical variant by guessing.
      - `guide_finish` string, nullable, required
      - `physical_finish` string, nullable, required
      - `possible_physical_finishes` string[], required
    - `locale` string: Physical source-card locale, such as ja. It does not filter Cardmarket prices or certify the language of every metadata text field.
    - `release_status` 'released' | 'unreleased' | 'unknown': Core release classification. Lists default to released; all or an explicit state includes other cores. A detail lookup can retain an approved published core with another state.
    - `data_provenance` 'structured_source' | 'physical_minimum' | 'source_record': Structured source facts, a physically checked minimum or a retained source record, respectively. These labels do not promise equal metadata completeness or certify every field.
    - `snapshot_built_at` string, date-time: Build time of this catalogue snapshot. It is distinct from pricing.price_variants[].observed_at and is not a price-freshness indicator.
    - `variants` CatalogueVariant[]: Source variant assertions with catv_ IDs. Default output includes released verified/source_asserted variants; variant_release_status=all includes other labelled assertions. A source variant does not inherit a price from the core.
      - `printed_number` string, nullable: Printed notation supplied in the variant's own validated metadata, or null.
      - `id` string: Stable source-variant identity inside the parent cat_ record. There is no separate catv_ detail endpoint; tcg_ IDs identify price variants.
      - `label` string: Source-variant display label. It is not a guide bucket or a permanent identity.
      - `finish` string, nullable: Supplied physical finish assertion. Its reliability is described by evidence_status; it does not define the price-guide finish filter.
      - `edition` string, nullable: Supplied physical edition assertion, when known. It never makes an unfiltered guide quote edition-specific.
      - `number` string, nullable: Source-variant catalogue number, kept separate from verified printed_number.
      - `metadata` MetadataPokemonJp
        - `category` string, nullable, required: Source card category. Its values depend on the game and card type.
        - `subtypes` string[], required: Source classifications below the main category; an empty list may be unverified.
        - `hp` integer, nullable, required: Hit points. Supporter and Energy cards do not have Pokémon HP; other nulls can be unknown.
        - `types` string[], required: Pokémon energy-type labels, such as Fire. These are separate from attack energy costs.
        - `level` string, nullable, required: Printed level label when available. It stays text and is not derived from HP or evolution.
        - `printed_number` string, nullable, required: Verified printed collector notation, including prefixes and denominators. Never inferred from set size.
        - `evolves_from` string, nullable, required: Source name of the preceding evolution. Null does not establish that the card is a Basic Pokémon.
        - `rarity` string, nullable, required: Source rarity label for this printing; labels are not normalized across games.
        - `illustrator` string, nullable, required: Source illustrator credit, preserved as text.
        - `flavor_text` string, nullable, required: Available flavor text, preserved in its source language; no translation is performed.
        - `pokedex_numbers` integer[], required: Supplied National Pokédex numbers; no species identity is inferred from a card name.
        - `abilities` object[], required: Available abilities or Pokémon Powers. An empty array alone does not prove that no ability is printed.
          - `name` string, nullable, required: Source ability name.
          - `type` string, nullable, required: Source classification such as Ability or Pokémon Power; not a closed enum.
          - `text` string, nullable, required: Source ability effect text. Text language can differ from the card locale.
        - `attacks` object[], required: Available attacks. Supporter-only exclusions do not apply to every Trainer: Technical Machine and Fossil cards may have attacks.
          - `name` string, nullable, required: Source attack name.
          - `cost` string[], required: Ordered energy symbols. Repeated symbols are retained; do not deduplicate them.
          - `energy_cost` integer, nullable, required: Supplied total attack energy cost. Null is unknown; zero is a known zero cost.
          - `damage` string, nullable, required: Printed damage expression, such as 40+, 20× or 100. Preserve it as text; null may be a non-damaging attack or missing data.
          - `text` string, nullable, required: Available attack effect text, without automatic translation.
        - `weaknesses` object[], required: Available weakness modifiers. Empty does not establish verified absence.
          - `type` string, nullable, required: Energy-type label of the weakness.
          - `value` string, nullable, required: Printed modifier, such as ×2 or +20; keep it as text.
        - `resistances` object[], required: Available resistance modifiers. Empty does not establish verified absence.
          - `type` string, nullable, required: Energy-type label of the resistance.
          - `value` string, nullable, required: Printed modifier, such as -30; keep it as text.
        - `retreat_cost` string[], required: Supplied retreat energy symbols. A missing list is different from a known retreat value of zero.
        - `retreat` integer, nullable, required: Supplied total retreat cost. Zero is meaningful; null may be unknown or not applicable.
        - `rules` string[], required: Available rule-box text, including special card rules. Empty remains unverified unless diagnostics establish otherwise.
        - `regulation_mark` string, nullable, required: Source regulation mark when available; not a guarantee of current format legality.
        - `legalities` object, required: Catalogue legality labels with no separate freshness guarantee; do not infer current tournament eligibility.
          - `standard` string, nullable, required: Source legality label for standard. Null means no supplied status.
          - `expanded` string, nullable, required: Source legality label for expanded. Null means no supplied status.
          - `unlimited` string, nullable, required: Source legality label for unlimited. Null means no supplied status.
          - `gym_leader_challenge` string, nullable, required: Source legality label for gym leader challenge. Null means no supplied status.
      - `metadata_status` MetadataStatus
        - `state` 'available' | 'unavailable', required
        - `unknown_fields` string[], required
        - `unverified_empty_fields` string[], required
      - `metadata_quality` MetadataQuality
        - `state` 'complete' | 'partial' | 'unavailable', required
        - `scope` 'emitted_fields', required
        - `unknown_fields` string[], required
        - `not_applicable_fields` string[], required
        - `known_empty_fields` string[], required
        - `unverified_empty_fields` string[], required
      - `metadata_text` MetadataText: Best-effort language observations per nonempty rule/name text. Inferred languages are unverified, not printed-locale or translation provenance. Short/ambiguous text may remain unknown; card locale is never used to fill missing evidence.
        - `state` 'mixed' | 'single_language' | 'unknown' | 'unavailable', required
        - `languages` string[], required
        - `fields` object[], required
          - `path` string, required: JSON Pointer relative to the metadata object.
          - `languages` string[], required
          - `evidence` 'inferred' | 'unknown', required
      - `images` Images: Available small/large images are root-relative API paths, fetched server-side with Bearer authentication against the API origin; null means unavailable. Follow the complete path, including catalogue_card_id for catv_ variants or face for Magic metadata.faces images. base is null. No public CDN URL or token is returned. Every admitted image response consumes one request from the shared daily and monthly limits; image and byte counters are diagnostic.
        - `base` unknown, required
        - `small` string, nullable, required
        - `large` string, nullable, required
      - `release_status` 'released' | 'unreleased' | 'unknown': Release classification of the assertion, separate from the core release_status. The variant_release_status filter controls which assertions are returned.
      - `evidence_status` 'verified' | 'source_asserted' | 'uncertain': Verified means reviewed evidence establishes the variant; source_asserted identifies a reviewed vendor assertion; uncertain is unresolved. Source assertions never become physical facts by guessing.
      - `pricing` PricingAvailability
        - `status` 'available' | 'unmapped' | 'unpriced' | 'stale' | 'unapproved' | 'identity_conflict' | 'unreleased', required: Core price availability: available, unmapped, unpriced, stale, unapproved, identity_conflict or unreleased. A safe available bridge can remain visible while a separate conflicting bridge is withheld.
        - `price_variants` PriceVariantReference[], required: Exact approved, fresh and meaningful guide references. Follow each tcg_ ID to prices or history; the list can be empty while metadata stays readable.
          - `id` string, required: Permanent price-variant key. Use it on /v1/cards/{id}/prices or independent stored-variant history; a cat_ or catv_ ID is not a substitute.
          - `catalogue_variant_id` string: Present only when a reviewed bridge explicitly links the price to a verified released source variant. Match it to variants[].id. Its absence means the reference is not attributed to one source-variant assertion.
          - `guide_finish` string, nullable, required: Price-provider bucket, normally normal or foil. Use this for readable finish filters, regardless of the asserted physical finish.
          - `currency` 'EUR', required: Currency of the linked guide measurement.
          - `observed_at` string, date-time, required: Source observation time of the linked price; distinct from the catalogue snapshot build time.
          - `quote_scope` 'product_guide': General measurement of the approved product and guide bucket, not an individual listing or sale.
          - `language_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
          - `edition_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
          - `condition_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
    - `pricing` PricingAvailability
      - `status` 'available' | 'unmapped' | 'unpriced' | 'stale' | 'unapproved' | 'identity_conflict' | 'unreleased', required: Core price availability: available, unmapped, unpriced, stale, unapproved, identity_conflict or unreleased. A safe available bridge can remain visible while a separate conflicting bridge is withheld.
      - `price_variants` PriceVariantReference[], required: Exact approved, fresh and meaningful guide references. Follow each tcg_ ID to prices or history; the list can be empty while metadata stays readable.
        - `id` string, required: Permanent price-variant key. Use it on /v1/cards/{id}/prices or independent stored-variant history; a cat_ or catv_ ID is not a substitute.
        - `catalogue_variant_id` string: Present only when a reviewed bridge explicitly links the price to a verified released source variant. Match it to variants[].id. Its absence means the reference is not attributed to one source-variant assertion.
        - `guide_finish` string, nullable, required: Price-provider bucket, normally normal or foil. Use this for readable finish filters, regardless of the asserted physical finish.
        - `currency` 'EUR', required: Currency of the linked guide measurement.
        - `observed_at` string, date-time, required: Source observation time of the linked price; distinct from the catalogue snapshot build time.
        - `quote_scope` 'product_guide': General measurement of the approved product and guide bucket, not an individual listing or sale.
        - `language_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
        - `edition_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
        - `condition_scope` 'unfiltered': Guide prices are not filtered by physical language, edition or condition. Catalogue ja locale or edition evidence does not change that market scope.
    - `canonical_membership` object, nullable: The narrowly reviewed SoulSilver/HeartGold shared energy-card membership. Other cores return null. It does not assert an edition, foil finish or a new price variant.
      - `canonical_card_id` string, required: Existing HeartGold source-card record to which this reviewed membership points.
      - `canonical_set_id` 'l1hg_ja', required: Canonical HeartGold source-set membership in this reviewed relation.
      - `alias_set_id` 'l1ss_ja', required: Retained SoulSilver source-set membership. Both source records can exist; catalogue counts do not count unique physical printings.
  - `next_cursor` string, nullable, required

## Other responses

- `400`: Invalid request or batch_size_exceeded (more IDs than the account plan allows)
- `401`: Invalid or missing key
- `403`: Inactive account, expired free test or resource_limits_unconfigured
- `404`: Not found or unavailable
- `405`: Wrong method
- `409`: Ambiguous printing or variant
- `413`: Oversized request body or response_too_large (response exceeds 1 MiB)
- `415`: Wrong content type
- `429`: Monthly, UTC-daily or minute request limit; authenticated account limits include a paid-plan or custom-access upgrade suggestion. Defensive resource-limit errors retain the ordinary error envelope.
- `503`: Disabled, unconfigured or temporarily unavailable

---

[API](https://skmtc.dev/tcgdata/apis/tcgdata-dev-multi-game-prices-and-daily-history.md) · [All operations](https://skmtc.dev/tcgdata/apis/tcgdata-dev-multi-game-prices-and-daily-history/llms.txt) · [OpenAPI document](https://skmtc.dev/tcgdata/apis/tcgdata-dev-multi-game-prices-and-daily-history/revisions/1db91fd8a408?raw)
