> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cromos.so/llms.txt
> Use this file to discover all available pages before exploring further.

# The card object

> One printing of one card, and every way it was printed.

A card is one entry in one expansion — Charizard from Base Set, `base1-4`. Its id is the
expansion id and the collector number joined by a hyphen, and it is stable: it is the id to
store against your own rows.

## Printings

A card exists in more than one physical printing, and `variants` is the list of them. Two
fields on a variant look similar and are not:

<ResponseField name="type" type="string">
  The **printing** — `normal`, `holo`, `reverse`. What was done to the card at the press.
</ResponseField>

<ResponseField name="size" type="string | null">
  The **physical size** — `standard`, `jumbo`. How big the piece of cardboard is.
</ResponseField>

They are different axes. A jumbo card and a holo card are not two options from one list, and
rendering them side by side reads as though they were.

Prices hang off the variant rather than off the card, because they differ per printing: a
holo Charizard and a normal Charizard are not the same object to a buyer.

For some cards the printing list is derived from the priced printings rather than taken from
the upstream variant data, because upstream ships a default that claims every card is normal
— including cards it prices as holo in the same payload. Where that happens, the printings
here can differ from what other catalogs show. Ours follow the money.

## Prices

Every variant carries up to two price blocks, from two marketplaces in two currencies:

<ResponseField name="tcgplayer" type="array">
  USD, one entry per condition, each with `market`, `low` and `high`.
</ResponseField>

<ResponseField name="cardmarket" type="object | null">
  EUR, with `avg`, `low` and `trend`, plus `_holo` counterparts. `price_kind` names which of the two
  column sets belongs to this printing — `null` where it could not be determined.
</ResponseField>

Each carries its own `observed_on`. The two sources are gathered independently, so their
dates do not have to agree, and neither is a conversion of the other.

For the full daily history rather than the latest figure, see
[Get card prices](/cards/prices).

## Images

`image` is `{ low, high }`, or `null` where we hold no art. Both rungs are always complete and
ready to use, and the two may be the same URL where only one rendition exists — so a client
never has to branch on it.

## Example

The captured payload already carries exactly one ability and one attack, so there is nothing
further to trim without deleting the only entry in either array — pasted in full below.

```json theme={null}
{
  "data": {
    "id": "base1-4",
    "expansion_id": "base1",
    "number": "4",
    "name": "Charizard",
    "rarity": "Rare",
    "illustrator": "Mitsuhiro Arita",
    "image": {
      "low": "https://assets.cromos.so/cards/base1-4/low.webp",
      "high": "https://assets.cromos.so/cards/base1-4/high.webp"
    },
    "category": "Pokemon",
    "metadata": {
      "hp": 120,
      "types": [
        "Fire"
      ],
      "pokedex_numbers": [
        6
      ],
      "stage": "Stage2",
      "evolve_from": "Charmeleon",
      "description": "Spits fire that is hot enough to melt boulders. Known to unintentionally cause forest fires.",
      "effect": null,
      "trainer_type": null,
      "energy_type": null,
      "retreat": 3,
      "abilities": [
        {
          "kind": "pokemon-power",
          "name": "Energy Burn",
          "text": "As often as you like during your turn (before your attack), you may turn all Energy attached to Charizard into Fire Energy for the rest of the turn. This power can't be used if Charizard is Asleep, Confused, or Paralyzed."
        }
      ],
      "attacks": [
        {
          "cost": [
            "Fire",
            "Fire",
            "Fire",
            "Fire"
          ],
          "name": "Fire Spin",
          "text": "Discard 2 Energy cards attached to Charizard in order to use this attack.",
          "damage": "100"
        }
      ],
      "weaknesses": [
        {
          "type": "Water",
          "modifier": "x2"
        }
      ],
      "resistances": [
        {
          "type": "Fighting",
          "modifier": "-30"
        }
      ],
      "legality": {
        "expanded": false,
        "standard": false
      }
    },
    "variants": [
      {
        "type": "holo",
        "subtype": "unlimited",
        "size": "standard",
        "stamps": [],
        "foil": null,
        "tcgplayer": [
          {
            "condition": "NM",
            "currency": "USD",
            "market": 81865,
            "low": 42650,
            "high": 149965,
            "observed_on": "2026-08-02"
          },
          {
            "condition": "LP",
            "currency": "USD",
            "market": 51007,
            "low": 35593,
            "high": 67838,
            "observed_on": "2026-08-02"
          },
          {
            "condition": "MP",
            "currency": "USD",
            "market": 39188,
            "low": 34500,
            "high": 46472,
            "observed_on": "2026-08-02"
          },
          {
            "condition": "HP",
            "currency": "USD",
            "market": 28103,
            "low": 25500,
            "high": 32342,
            "observed_on": "2026-08-02"
          },
          {
            "condition": "DMG",
            "currency": "USD",
            "market": 20006,
            "low": 11877,
            "high": 24800,
            "observed_on": "2026-08-02"
          }
        ],
        "cardmarket": {
          "price_kind": "plain",
          "currency": "EUR",
          "observed_on": "2026-08-03",
          "avg": 44670,
          "low": 9995,
          "trend": 33683,
          "avg_holo": null,
          "low_holo": null,
          "trend_holo": 12363
        }
      },
      {
        "type": "holo",
        "subtype": "shadowless",
        "size": "standard",
        "stamps": [
          "1st-edition"
        ],
        "foil": null,
        "tcgplayer": [],
        "cardmarket": null
      },
      {
        "type": "holo",
        "subtype": "shadowless",
        "size": "standard",
        "stamps": [],
        "foil": null,
        "tcgplayer": [],
        "cardmarket": null
      },
      {
        "type": "holo",
        "subtype": "1999-2000-copyright",
        "size": "standard",
        "stamps": [],
        "foil": null,
        "tcgplayer": [],
        "cardmarket": null
      }
    ]
  },
  "error": null
}
```
