Localized pricing: the markets array
BetaTrading card prices are genuinely local. v2 replaces v1's single price field with a markets array.
The EU price of a card is its own real, observed price, not a US price converted into euros. To reflect that, v2 replaces v1's single price field with a markets array on each variant. There is one entry for each region you request, so you can compare regions in a single response.
Only NA is live today:Right now
NA is the only region with data. The regions parameter and markets array are already shaped for multi-region pricing, but EU, UK, JP, and other regions will switch on later as their data matures — this page describes the shape you can build against today.The markets object
| Property | Type | Description |
|---|---|---|
| region | string | The region this pricing is for. It matches a code you asked for, either a market code like NA or EU, or an ISO country code like MX or CA. |
| currency | string | The ISO 4217 currency (for example USD or EUR) that price and every periods value is quoted in. Market codes use the market's main currency; country codes use that country's local currency. |
| price | number | null | The real, observed price in this region, in the currency above. A value of null means we have no local data for this region, and it is up to you whether to read another region you requested instead. |
| updated_at | number | When this price was last observed, as a Unix timestamp in seconds. |
| change_24h_pct | number | null | Percent change in price over the last 24 hours for this region. In v1 this was called priceChange24hr. |
| periods | object | Price statistics grouped by time window (7d, 30d, 90d, 1y, and all_time). Only the windows you request are included. |
| price_history | array | A time series of observed prices for this region, as { t, p } points. This is the same price history v1 returned, now scoped to each region. |
Regions and the NA default:
regions is optional. Leave it out and v2 defaults to North America (NA), which is the same US pricing v1 returned. Prices are never converted between currencies.Primary market rule:
markets[0], the first region in your regions list, is the primary market. Filtering with min_price and sorting with orderBy apply to this market only; the other markets are there for reference. There is no way to sort or filter on a blended figure across regions.Null prices & fallback:A market's
price is either the real price observed in that region or null. The server never fills in another region's price and never converts currencies for you. If you want a USD fallback, request NA as an extra region and read its entry, for example: markets[0].price ?? markets.find(m => m.region === "NA").price.Requesting regions
One query parameter on /v2/cards controls which regions come back, in priority order.
regionsstring
Optional
A comma-separated list of region codes, listed in priority order (not case sensitive). The first region is your primary market. Currently only NA returns data; the other codes are reserved for regions rolling out later. Each region beyond the first adds to the request cost.
Default:
NANAEUUKJPOCELATAMOTHER…ISO country codesRequest cost:A single region costs the same as an equivalent v1 call. Each region beyond the first is a separate price lookup and adds a surcharge. See Request cost for the full breakdown.
Example
One card's NA pricing, the only region live today.
request.sh
curl "https://api.justtcg.com/v2/cards?card_id=pokemon-base-set-charizard-4®ions=na" \
-H "x-api-key: tcg_your_api_key_here"response.json (excerpt)
{
"markets": [
{
"region": "NA",
"currency": "USD",
"price": 155.00,
"updated_at": 1765635970,
"change_24h_pct": -0.9,
"periods": { "7d": { "change_pct": -2.4, "avg": 158.0, "min": 151.0, "max": 162.0 } },
"price_history": [{ "t": 1765636400, "p": 155.0 }]
}
]
}