PokeTrace 2.0 już jestZobacz, co się zmieniło
PokeTrace 2.0 już jestZobacz, co się zmieniło

Reference

Changelog

Notable changes, updates and deprecations to the PokeTrace API.

v2.0.0

Dragonite · November 2026

US and EU cards are merged. A card sold in both markets is now one card: one request returns its TCGPlayer and eBay prices in USD and its CardMarket prices in EUR. 2.0 ships under the new /v2 prefix: GET /v2/cards returns a linked card once, under its US id, and v2 card objects group prices by grade, then market, then source. /v1 keeps its previous list and card fields, so existing integrations keep working unchanged. Old US and EU ids and slugs keep working. See API versions for the differences between the two prefixes.

Added

  • Unified card responses. On /v2, GET /cards/:id accepts a US id or an EU id and returns markets, with the card id, currency and variant for each market, and prices, grouped by grade or condition, then market, then source, for example prices.NEAR_MINT.EU.cardmarket_unsold. Each market keeps its own currency; nothing is converted.
  • GET /v2/cards list items carry the same markets and prices as GET /cards/:id.
  • On /v1, GET /v1/cards/:id adds markets, pricesByGrade (the same grade-first structure) and counterparts next to its existing fields.
  • GET /cards/:id/prices/:tier/history accepts an optional market=US|EU query parameter to read the linked card's history through the same id.
  • The website catalog shows one card with both markets' prices. The market switch is now "Prices available in: All / US / EU", and EU card pages redirect to the merged card.

Changed

  • New /v2 prefix. 2.0 ships under https://api.poketrace.com/v2, with WebSocket at /v2/ws and the OpenAPI document at /v2/openapi.json. Both prefixes use the same API key and plans. They differ in the card list, the card object fields, the price history periods and the Free daily limit.
  • One list item per card on /v2. GET /v2/cards returns a card linked across markets once, as the combined card: the US record's fields plus markets and prices for both markets. Cards without a linked card, such as most Japanese cards, come back on their own. The full list shrinks from about 183,000 to about 131,000 items.
  • Card fields on /v2. prices is grouped by grade, then market, then source, and v2 card objects have no pricesByGrade or counterparts. The linked card's id is in markets.EU.cardId or markets.US.cardId.
  • market=US or market=EU on GET /v2/cards means "cards with prices in that market". A linked card matches both. market=EU still needs a plan with EU access.
  • On /v2, lookups by cardmarket_ids or tcgplayer_ids still find linked EU cards. They come back as the combined card: the top-level id is the US id, and the EU id is in markets.EU.cardId. An EU set slug returns its US set as one merged set, and set with card_number is an identity lookup that returns the combined card.
  • /v1 unchanged. GET /v1/cards keeps its previous behaviour: every record, US and EU separately, market=EU returns EU records, and set takes the slug as given. On /v1, prices stays grouped by source, then tier.
  • Integration impact. When you move from /v1 to /v2, read prices grade first, for example prices.NEAR_MINT.US.tcgplayer instead of prices.tcgplayer.NEAR_MINT. If you page through GET /cards and store ids, linked cards you stored under their EU id arrive with the US id at the top level; map them through markets.EU.cardId. The EU id stays valid for GET /cards/:id and price history.
  • EU and graded access is unchanged: Free stays US raw only, and EU and graded data stay on the plans that include them. Without EU access, markets.EU is { "available": false, "reason": "plan" } and no EU prices are returned.
  • Price history on /v2. On GET /v2/cards/:id/prices/:tier/history, Free can request up to 7d, Pro and Growth up to 1y, and period=all requires Scale or Business. A longer period returns 403 with code: "UPGRADE_REQUIRED", for example { "error": "Full price history (period=all) requires Scale or Business", "code": "UPGRADE_REQUIRED" } or, on Free, { "error": "Price history beyond 7 days (period=30d, 90d or 1y) requires Pro or higher", "code": "UPGRADE_REQUIRED" }. On /v1, history periods work as before.
  • Free daily limit on /v2. The Free plan gets 100 requests per day on /v2; the burst limit stays 1 request / 2 s. /v1 is unchanged.
  • One request now covers both markets, so most clients need fewer requests.
  • OpenAPI info.version is 2.0.0, codename dragonite. The health endpoint returns version: "2.0.0" and codename: "dragonite".

Business plan

November 6, 2026

  • New Business plan: 1,000,000 requests per day and a burst limit of 300 requests per 10 seconds.
  • Business includes everything in Scale: EU and graded data, WebSocket updates, eBay sold listings and priority support.

Growth plan limit raised

November 6, 2026

  • The Growth plan daily limit is now 50,000 requests (previously 30,000). Burst limits are unchanged.

Cardmarket update

October 11, 2026

  • Fixed an issue that stopped prices updating for some cards.
  • Improved separate pricing for First Edition and reverse-holo cards.
  • Current coverage focuses on English and Japanese cards.
  • Current prices for ungraded singles cover Mint and Near Mint.
  • Some products may show fewer listings than on Cardmarket. See Cardmarket coverage for details.

v1.7.0

Onyx · May 2026

Added

  • Sealed product taxonomy is now exposed on cards and catalog results. Responses include productType and productFamily so sealed products no longer need to be inferred from set names.
  • New filters on GET /cards and the catalog: product_type and product_family. Use product_type=sealed for sealed products or combine it with families such as booster_box, booster_pack, elite_trainer_box, and tin.

Changed

  • CardMarket products without real expansion metadata are grouped under an internal product bucket instead of a public Unknown set.
  • Health endpoint now returns version: "1.7.0" and codename: "onyx".

v1.6.0

Snorlax · April 2026

Changed

  • EU CardMarket pricing now includes per-language breakdowns. EU tiers now expose a language map (for example EN, JP, KO) alongside country splits.
  • EU cards now include variant data. EU cards now return "Normal" or "Holofoil" instead of null. This describes finish labels only; it does not introduce separate First Edition and Unlimited pricing or history.
  • GET /cards now includes a prices object on each card. List responses now return plan-filtered prices by source and tier, so most use cases no longer require an extra detail call.
  • WebSocket delivery and subscription handling have been improved. Real-time connections are more stable and price.card-updated events now arrive more reliably for live dashboards, alerts, and trading tools.
  • Cards search/list page size is now capped at 20. The limit parameter for GET /cards now accepts values from 1 to 20.
  • Rate limits simplified to daily only. Monthly limits have been removed. All plans now use a single daily quota that resets at midnight UTC.
  • Increased daily limits for paid plans: Pro increased to 10,000/day (previously 5,000), Scale increased to 100,000/day (previously 20,000).
  • Free plan daily limit reduced to 250/day (previously 500).

Added

  • variant filter added to the catalog API. Accepts: Normal, Holofoil, Reverse_Holofoil, 1st_Edition, 1st_Edition_Holofoil, Unlimited, Unlimited_Holofoil.
  • New game types for non-English EU sets. pokemon-chinese, pokemon-thai, pokemon-indonesian in addition to existing pokemon and pokemon-japanese.
  • game filter added to GET /cards and the catalog. Filter by language to get only English, Japanese, Chinese, Thai, or Indonesian cards.

Removed

  • Monthly rate limit headers (X-RateLimit-Monthly-*) are no longer returned. The X-RateLimit-Limit and X-RateLimit-Remaining headers now refer exclusively to your daily quota.
  • The monthly field has been removed from /auth/info usage responses and 429 error payloads.

v1.2

February 2026

Changed

  • EU CardMarket Price Trend data now uses the AGGREGATED tier (previously UNKNOWN). This tier represents CardMarket's official price aggregate with no condition/grader breakdown.
  • saleCount is no longer returned for the AGGREGATED tier (card detail and history endpoints). The value was always 0 since Price Trend is a computed aggregate.
  • low and high are now null for the AGGREGATED tier — Price Trend is a single value, not a range.

Added

  • avg1d, avg7d, avg30d rolling averages now included in EU AGGREGATED tier — both in card detail and price history responses.
  • Price history endpoint (/cards/:id/prices/AGGREGATED/history) now returns daily Price Trend snapshots with rolling averages from CardMarket's price guide.

v1.1

February 2026

Removed

  • confidence, volatility, and trend fields have been removed from all API price responses. As communicated via email in January 2026, these fields have been discontinued.
  • Affected endpoints: GET /cards/:id, GET /cards/:id/prices/:tier/history

Improved

  • saleCount now reflects cumulative historical sales across all data sources, providing more accurate volume data.
  • Health endpoint now returns version: "1.6.0" and codename: "snorlax" in the response.