---
title: "Changelog — JustTCG API"
description: "Reverse-chronological log of every JustTCG API change: new endpoints, parameters, game support, deprecations, and breaking changes, newest first."
url: https://justtcg.com/docs/changelog
markdown_url: https://justtcg.com/docs/changelog.md
feeds:
  - https://justtcg.com/docs/changelog/feed.xml
  - https://justtcg.com/docs/changelog.json
---

# Changelog

Every change to the JustTCG API, newest first: new endpoints, parameters and games, behavior changes, deprecations and breaking changes. Each entry lists its category, whether it is breaking, and the endpoints it affects. Entries marked Breaking: yes can break existing integrations.

## 2026-10-19 — Barcode lookup for sealed product on /v2/cards

Category: added · Breaking: no · Endpoints: GET /v2/cards

Link: https://justtcg.com/docs/changelog#2026-10-19-barcode-lookup-for-sealed-product-on-v2-cards

Look up sealed product by its retail barcode with the new `gtin` parameter: `GET /v2/cards?gtin=820650850714`. It accepts a 12-digit UPC-A, a 13-digit EAN-13 or JAN, an 8-digit EAN-8 and a 14-digit GTIN-14, and ignores spaces and hyphens. A barcode sent as `q` (12 to 14 digits) is now matched the same way, then falls back to a normal name search if no product carries it, so apps that pass scanner input straight to `q` get the product instead of an empty result. One barcode can match several listings, so `data` may hold more than one card. See [v2 identifiers](https://justtcg.com/docs/api/cards-v2).

> **Note:** Coverage starts with sealed Magic: The Gathering, Pokémon and Yu-Gi-Oh! product and will grow. A code with an invalid check digit returns `400`; a valid code we don't recognize returns `404`.

## 2026-10-19 — changes_count on /v2/cards now counts price changes

Category: changed · Breaking: no · Endpoints: GET /v2/cards, POST /v2/cards

Link: https://justtcg.com/docs/changelog#2026-10-19-changes-count-on-v2-cards-now-counts-price-changes

`markets[].periods.<window>.changes_count` now counts the number of times the sale price changed during the window. Five sales all at the same price count 0. Until now it carried the same value as `sales_count`, which is unchanged. See [periods fields](https://justtcg.com/docs/schema/variant#v2-periods).

## 2026-10-19 — Sales counts on /v2/cards

Category: added · Breaking: no · Endpoints: GET /v2/cards, POST /v2/cards

Link: https://justtcg.com/docs/changelog#2026-10-19-sales-counts-on-v2-cards

Every window in `markets[].periods` now carries `sales_count`: the number of sales recorded for the variant in that market over the window (`7d`, `30d`, `90d`, `1y`, `all_time`). It is on browse, search, direct lookups and `POST /v2/cards`, for raw and graded variants, and follows `include=periods[.<window>]` like every other period statistic. It counts sales, not units, and leaves out refunded and voided sales. A window with no recorded sales is omitted, so read a missing window as zero. See [periods fields](https://justtcg.com/docs/schema/variant#v2-periods).

> **Note:** `changes_count` keeps working and carries the same value; its description has been corrected, since in v2 it was always a count of sales rather than of price changes. Individual sale records are not exposed.

## 2026-10-12 — All-time price statistics now cover full history

Category: changed · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2026-10-12-all-time-price-statistics-now-cover-full-history

v1 `minPriceAllTime` / `maxPriceAllTime` were computed over the trailing year only, so they always matched `minPrice1y` / `maxPrice1y`. They now cover everything recorded since tracking began in March 2025, and existing values have been backfilled. `minPriceAllTimeDate` / `maxPriceAllTimeDate` now give the date the extreme was first reached; previously a price that stayed at its extreme was stamped with its most recent update.

> **Note:** Expect all-time lows to drop and highs to rise for many variants, and their dates to move earlier. The 1y fields are unchanged.

## 2026-10-12 — v2 batch (POST /v2/cards) documented

Category: added · Breaking: no · Endpoints: POST /v2/cards

Link: https://justtcg.com/docs/changelog#2026-10-12-v2-batch-post-v2-cards-documented

`POST /v2/cards` fetches many cards in one request and returns them in the v2 schema. Send a JSON array of lookup objects with snake_case keys (`card_id`, `variant_id`, `tcgplayer_id`, `tcgplayer_sku_id`, `mtgjson_id`, `scryfall_id`); `include`, `updated_after` and `regions` go on the query string. See [v2 batch](https://justtcg.com/docs/api/cards-v2/batch).

> **Note:** v1-style camelCase items (`cardId`) return `400` on v2. The v2 lookup parameter for a SKU is `tcgplayer_sku_id`; earlier docs listed it as `tcgplayer_sku`.

## 2026-10-05 — Price status and last known price on every variant

Category: added · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards, GET /v2/cards, POST /v2/cards

Link: https://justtcg.com/docs/changelog#2026-10-05-price-status-and-last-known-price-on-every-variant

Since 2026-10-01 a variant priced at $100 or more that goes 14 days without a reported price expires to a `null` price (see [Thin markets](https://justtcg.com/docs/thin-markets)). The response now says so explicitly. v1 variants carry `priceStatus` (`current`, `expired`, `unpriced`) and `lastKnownPrice`; v2 `markets[]` entries carry `price_status` and `last_price`. `lastUpdated` / `updated_at` is defined as when the price was last observed, so for an expired variant it is when the last price was seen. Price history and window statistics are never modified by an expiry.

> **Note:** An expiry now counts as a price change: `updated_after` returns the expired variant once, with its `null` price, without `include_null_prices=true`. If your incremental sync assumed every returned price is non-null, handle `null` (or branch on `priceStatus`).

## 2026-09-22 — OpenAPI (Swagger) spec now covers /v2/cards

Category: changed · Breaking: no · Endpoints: GET /v2/cards

Link: https://justtcg.com/docs/changelog#2026-09-22-openapi-swagger-spec-now-covers-v2-cards

The public [OpenAPI spec](https://justtcg.com/docs/openapi) at `https://justtcg.com/docs/swagger.json` (now version 1.1.0) describes the `/v2/cards` beta alongside v1: `GET /v2/cards` and `GET /v2/cards/{id}`, with graded variants, the per-region `markets` array, cursor pagination headers, and `application/problem+json` errors. v2 operations are tagged `v2 (beta)` and marked `x-beta: true`.

> **Note:** The spec's server URL is now `https://api.justtcg.com` and every path carries its version prefix (`/v1/cards` rather than `/cards`). The URLs clients call are unchanged, but if you generated a client from the old spec, regenerate it. v2 batch is not live yet, so it is not in the spec.

## 2026-09-11 — New Games: Palworld OFFICIAL CARD GAME and Cyberpunk TCG

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2026-09-11-new-games-palworld-official-card-game-and-cyberpunk-tcg

Added support for two new games: Palworld OFFICIAL CARD GAME (`palworld-official-card-game`) and Cyberpunk TCG (`cyberpunk-tcg`).

## 2026-09-01 — Filter variants by language

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v2/cards

Link: https://justtcg.com/docs/changelog#2026-09-01-filter-variants-by-language

Added the `language` query parameter to `GET /v1/cards` and `GET /v2/cards`. Pass one or more languages, comma-separated, to narrow the `variants` array on each returned card: `?language=Japanese` or `?language=English,Japanese`. Values are case-insensitive, and an unrecognized value returns an error rather than being ignored. Accepted values are English, Japanese, French, German, Spanish, Italian, Chinese (S), Chinese (T), Portuguese, Russian, and Korean. See the [/v1/cards](https://justtcg.com/docs/api/cards) and [/v2/cards](https://justtcg.com/docs/api/cards-v2) references.

> **Note:** This filters variants, not cards. Result counts and pagination are unchanged whether or not you send it, which means a card with no variant in the language you asked for is still returned, with an empty `variants` array. Filter those out client-side if you only want matches. Variants with no language recorded are English.

## 2026-07-27 — Commercial use rights clarified

Category: changed · Breaking: no · Endpoints: none

Link: https://justtcg.com/docs/changelog#2026-07-27-commercial-use-rights-clarified

Expanded **Section 7** of the [Terms of Service](https://justtcg.com/terms) to spell out what paid subscribers may do with the data: display prices and history to end users, derive your own analytics and valuations, cache and store price points with no retention limit, and combine our data with other lawful sources. The boundary is unchanged (no reselling raw data and no building an API substitute), but it's now stated explicitly rather than implied. Also published a plain-English [Commercial Use Guidelines](https://justtcg.com/docs/commercial-use) page.

> **Note:** No rights were removed. If you're on a paid plan and building your own product, this change only clarifies what was already intended. The free tier remains personal, non-commercial use.

## 2026-07-09 — /v2/cards is now in Beta

Category: added · Breaking: no · Endpoints: GET /v2/cards

Link: https://justtcg.com/docs/changelog#2026-07-09-v2-cards-is-now-in-beta

Opened the beta of `/v2/cards`, see the [/v2/cards reference](https://justtcg.com/docs/api/cards-v2). Headline changes: **graded cards** as first-class variants, **multi-region localized pricing** via a per-variant `markets` array, an optional `regions` parameter (defaults to `NA`), `snake_case` everywhere, cursor pagination (RFC 8288 `Link` header), and `application/problem+json` errors. v2 covers the `/cards` endpoint only; `/games` and `/sets` stay on v1.

> **Note:** Beta: the contract is finalized but may still change before GA. v1 is unchanged and remains the default for every endpoint; adopt v2 per call at your own pace.

## 2026-06-08 — UUIDs added to both Card and Variant objects.

Category: added · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2026-06-08-uuids-added-to-both-card-and-variant-objects

Added `uuid` to both Card and Variant objects. This provides a stable, globally unique identifier for each entity, independent of the human-readable `id`. We recommend using this as your primary key moving forward. API v2 will use UUIDs as the primary `id` field. The slug-based `id` will still be supported for backwards compatibility.

## 2026-04-15 — Price History [1 Year Duration]

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2026-04-15-price-history-1-year-duration

Added `1y` as a new allowed value for the `priceHistoryDuration` query parameter on the `GET /cards` endpoint. When requested, the `priceHistory` array on each variant returns one data point per day over the trailing 365 days, sourced from a daily materialized aggregate. Existing values (`7d`, `30d`, `90d`, `180d`) are unchanged, and the default remains `7d`.

## 2026-02-25 — min_price Parameter Added to /cards Endpoint

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2026-02-25-min-price-parameter-added-to-cards-endpoint

Added the `min_price` optional query parameter to the `GET /cards` endpoint. This allows users to filter results by a minimum market price (e.g., `min_price=1.00`), significantly reducing noise from low-value cards in analytics and trending lists.

## 2026-02-19 — MCP Endpoint Added

Category: added · Breaking: no · Endpoints: MCP

Link: https://justtcg.com/docs/changelog#2026-02-19-mcp-endpoint-added

The MCP endpoint provides comprehensive pricing data to your agentic workflows.

## 2026-02-17 — UniVersus Game Support Added

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2026-02-17-universus-game-support-added

Added support for UniVersus. Use `universus` as the game query parameter to access UniVersus card data.

## 2025-12-29 — Sorcery Game Support Added

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2025-12-29-sorcery-game-support-added

Added support for Sorcery: Contested Realm. Use `sorcery-contested-realm` as the game query parameter to access Sorcery card data.

## 2025-12-19 — 90-Day and 180-Day Price History Support Added

Category: changed · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-12-19-90-day-and-180-day-price-history-support-added

Added support for 90d and 180d price history. Deprecated `priceHistory30d` in the process. Use query param `priceHistoryDuration` to select desired durations (7d, 30d, 90d, 180d). Defaults to 7d. `priceHistory30d` will be removed in a future major release.

## 2025-12-15 — New Games: hololive OFFICIAL CARD GAME and Dragon Ball Super: Fusion World

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2025-12-15-new-games-hololive-official-card-game-and-dragon-ball-super-fusion-world

Added support for two new games: hololive OFFICIAL CARD GAME (`hololive-official-card-game`) and Dragon Ball Super: Fusion World (`dragon-ball-super-fusion-world`).

## 2025-12-13 — Game and Set Value Index Fields Added

Category: added · Breaking: no · Endpoints: GET /v1/games, GET /v1/sets

Link: https://justtcg.com/docs/changelog#2025-12-13-game-and-set-value-index-fields-added

Added `game_value_usd` to `/games` and `set_value_usd` to `/sets`. These represent the total value of all cards in the game/set, calculated by taking the highest price of any variant for each card.

## 2025-12-09 — include_null_prices Parameter Added

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-12-09-include-null-prices-parameter-added

Added the `include_null_prices` boolean query parameter to `/cards`. When `true`, the response includes cards that don't have any pricing data. Default `false`.

## 2025-12-08 — Card Number Filter Added to /cards

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-12-08-card-number-filter-added-to-cards

Added the `number` query parameter to `/cards` so you can filter cards by their specific card number within a set.

## 2025-11-21 — Introduced sealed_count and variants_count Fields

Category: changed · Breaking: no · Endpoints: GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2025-11-21-introduced-sealed-count-and-variants-count-fields

Fixed card counts in `/sets` and `/games` to exclude sealed products. Introduced `sealed_count` on both endpoints and `variants_count` on `/sets`.

## 2025-11-19 — updated_after Parameter Added to /cards

Category: added · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2025-11-19-updated-after-parameter-added-to-cards

Added `updated_after` to both `GET /cards` and `POST /cards` (Batch). Filters results to variants whose pricing was updated at or after the provided Unix timestamp. Cannot be combined with the search query parameter (`q`).

## 2025-10-27 — External Identifiers Added

Category: added · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2025-10-27-external-identifiers-added

Added support for querying cards by MTGJSON and Scryfall IDs. Variants can be queried using TCGplayer SKU IDs.

## 2025-10-17 — Set Release Dates Added to /sets

Category: added · Breaking: no · Endpoints: GET /v1/sets

Link: https://justtcg.com/docs/changelog#2025-10-17-set-release-dates-added-to-sets

The `/sets` endpoint now includes the release date of each set.

## 2025-09-30 — Set IDs Standardized and set_name Added to Card Object

Category: changed · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets

Link: https://justtcg.com/docs/changelog#2025-09-30-set-ids-standardized-and-set-name-added-to-card-object

Set IDs standardized to lowercase-hyphenated format including the game name. Added `set_name` to the card object.

## 2025-09-29 — Payload Reduction Parameters Added

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-09-29-payload-reduction-parameters-added

Added `include_price_history` and `include_statistics` query parameters to `/cards`. Available windows: `7d`, `30d`, `90d`, `allTime`.

## 2025-09-23 — JavaScript and TypeScript SDKs Released

Category: added · Breaking: no · Endpoints: none

Link: https://justtcg.com/docs/changelog#2025-09-23-javascript-and-typescript-sdks-released

Released the official JS / TS SDKs. Install via npm: `npm install justtcg-js`.

## 2025-08-26 — 90-Day Analytics on /cards

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-08-26-90-day-analytics-on-cards

Added a suite of 90-day statistical fields for deeper quarterly market analysis.

> **Note:** Statistical fields only — the full point-by-point `priceHistory90d` is deferred to a future major release.

## 2025-08-12 — Language Field Added to Variant Object

Category: added · Breaking: no · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2025-08-12-language-field-added-to-variant-object

Added `language` to the variant object.

## 2025-08-10 — New Games: Grand Archive TCG and Pokemon Japan

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2025-08-10-new-games-grand-archive-tcg-and-pokemon-japan

Added support for Grand Archive TCG (`grand-archive-tcg`) and Pokemon Japan (`pokemon-japan`).

## 2025-08-01 — Multi-Condition and Multi-Printing Support

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-08-01-multi-condition-and-multi-printing-support

The `/cards` endpoint now accepts `condition` and `printing` query parameters with multiple comma-separated values, e.g. `/cards?condition=NM,LP&printing=First Edition,Unlimited`.

## 2025-07-11 — [BREAKING] Card ID Standardization Completed

Category: removed · Breaking: yes · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2025-07-11-card-id-standardization-completed

The `id` format for `cards` and `variants` now includes the card's rarity. Old format `game-set-name`, new format `game-set-name-rarity`. All previously stored IDs are invalid and must be re-fetched.

## 2025-07-04 — OrderBy Parameters Added

Category: added · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-07-04-orderby-parameters-added

Added `orderBy` (`price`, `24h`, `7d`, `30d`) and `order` (`asc`, `desc`) for sorting.

## 2025-07-01 — [BREAKING] Card ID Standardization

Category: removed · Breaking: yes · Endpoints: GET /v1/cards, POST /v1/cards

Link: https://justtcg.com/docs/changelog#2025-07-01-card-id-standardization

Card IDs now include the full game name. Some IDs with invalid characters have been standardized.

## 2025-06-14 — Rate Limit Policy Update

Category: changed · Breaking: no · Endpoints: none

Link: https://justtcg.com/docs/changelog#2025-06-14-rate-limit-policy-update

API rate limits adjusted for free users. See the Rate Limits page for details.

## 2025-05-15 — Deprecated /variants and /cards-search

Category: deprecated · Breaking: no · Endpoints: GET /v1/cards

Link: https://justtcg.com/docs/changelog#2025-05-15-deprecated-variants-and-cards-search

Their functionality is merged into `/cards`.

## 2025-04-02 — v1 API Launched

Category: added · Breaking: no · Endpoints: GET /v1/cards, GET /v1/sets, GET /v1/games

Link: https://justtcg.com/docs/changelog#2025-04-02-v1-api-launched

Version 1 introduces initial endpoints and card structure.
