Documentation

Variant object

A variant is a specific condition × printing combination of a card, with its price and statistics.

Current production schema. Returned by every v1 endpoint.

Core

PropertyTypeDescription
uuidstringStable, canonical identifier for the variant (UUID v5). Recommended as your primary key — see Identifiers.
idstringLegacy human-readable slug (the variantId). Format: cardId_condition_printing. Still queryable, but no longer the recommended key.
conditionstringCondition of the card (e.g. 'Near Mint', 'Lightly Played').
printingstringPrinting type (e.g. 'Normal', 'Foil', '1st Edition').
languagestringLanguage of the card (e.g. 'English', 'Japanese'). Only recorded for non-English printings, so a missing value means English. Filter on it with the language parameter on /cards.
tcgplayerSkuIdstringTCGplayer SKU ID for this variant.
pricenumber | nullCurrent price in USD: the last price the market reported for this condition. null when there is no current market report; priceStatus says why.
lastUpdatednumber | nullUnix timestamp (seconds) of when the price was last observed. For an expired variant this is when the last price was seen.
priceStatusstringcurrent: a market report is in effect. expired: the market stopped reporting this variant and the last price aged out (see thin markets), so price is null and lastKnownPrice carries the last observed value. unpriced: this condition has never had a price.
lastKnownPricenumber | nullThe last observed price in USD when priceStatus is expired; null otherwise. The same value is the last point of the variant's price history.

24-hour stats

PropertyTypeDescription
priceChange24hrnumber | nullPercentage price change over the last 24 hours.

7-day stats

PropertyTypeDescription
priceChange7dnumber | nullPercentage price change over the last 7 days.
avgPricenumber | nullAverage price over the last 7 days.
priceHistoryarray | nullArray of {p, t} points over the requested priceHistoryDuration. Default 7d.
minPrice7dnumber | nullMinimum price in the last 7 days.
maxPrice7dnumber | nullMaximum price in the last 7 days.
stddevPopPrice7dnumber | nullPopulation standard deviation of prices over the last 7 days.
covPrice7dnumber | nullCoefficient of variation for prices over the last 7 days.
iqrPrice7dnumber | nullInterquartile range of prices over the last 7 days.
trendSlope7dnumber | nullLinear regression trend slope for prices over the last 7 days.
priceChangesCount7dnumber | nullCount of distinct price changes in the last 7 days.

30-day stats

PropertyTypeDescription
priceChange30dnumber | nullPercentage price change over the last 30 days.
avgPrice30dnumber | nullAverage price over the last 30 days.
priceHistory30darray | nullArray of historical price points over 30 days.
minPrice30dnumber | nullMinimum price in the last 30 days.
maxPrice30dnumber | nullMaximum price in the last 30 days.
stddevPopPrice30dnumber | nullPopulation standard deviation over the last 30 days.
covPrice30dnumber | nullCoefficient of variation over the last 30 days.
iqrPrice30dnumber | nullInterquartile range over the last 30 days.
trendSlope30dnumber | nullTrend slope over the last 30 days.
priceChangesCount30dnumber | nullCount of distinct price changes in the last 30 days.
priceRelativeTo30dRangenumber | nullPosition within the 30-day min/max range, 0..1.

90-day stats

PropertyTypeDescription
priceChange90dnumber | nullPercentage price change over the last 90 days.
avgPrice90dnumber | nullAverage price over the last 90 days.
minPrice90dnumber | nullMinimum price in the last 90 days.
maxPrice90dnumber | nullMaximum price in the last 90 days.
stddevPopPrice90dnumber | nullPopulation standard deviation over the last 90 days.
covPrice90dnumber | nullCoefficient of variation over the last 90 days.
iqrPrice90dnumber | nullInterquartile range over the last 90 days.
trendSlope90dnumber | nullTrend slope over the last 90 days.
priceChangesCount90dnumber | nullCount of distinct price changes in the last 90 days.
priceRelativeTo90dRangenumber | nullPosition within the 90-day min/max range, 0..1.

Longer-term

PropertyTypeDescription
minPrice1ynumber | nullMinimum price in the last year.
maxPrice1ynumber | nullMaximum price in the last year.
minPriceAllTimenumber | nullLowest price ever recorded for this variant.
minPriceAllTimeDatestring | nullISO 8601 timestamp of the all-time minimum.
maxPriceAllTimenumber | nullHighest price ever recorded for this variant.
maxPriceAllTimeDatestring | nullISO 8601 timestamp of the all-time maximum.
Thin markets:priceis the last price the market recorded, never smoothed or clamped, so a rarely traded condition can carry one sale's price for a long time. A variant priced at $100 or more that goes 14 days without a reported price expires: price becomes null, priceStatus is "expired", and lastKnownPrice keeps the value that expired. History and statistics are untouched. Thin markets and price expiry covers syncing and how to judge confidence.

Example

json — variant.json
variant.json
{
  "uuid": "a1b2c3d4-5e6f-5a7b-8c9d-0e1f2a3b4c5d",
  "id": "pokemon-battle-academy-fire-energy-22-charizard-stamped-promo_near-mint",
  "condition": "Near Mint",
  "printing": "Normal",
  "language": "English",
  "tcgplayerSkuId": "1234567",
  "price": 4.99,
  "lastUpdated": 1743100261,
  "priceStatus": "current",
  "lastKnownPrice": null,
  "priceChange24hr": 0.5,
  "priceChange7d": -2.1
}