Circle of Wizards All APIs on RapidAPI →

Path of Exile 2 Item and Currency Pricing

Live Path of Exile 2 market prices — unique item medians, currency exchange rates, and price history — drawn straight from the official GGG trade API and normalized into clean JSON.

This API wraps Grinding Gear Games' official Path of Exile 2 trade API and the community price tracker poe2scout, then hands you structured, ready-to-use price data instead of raw trade listings. Ask for an item by name and get back a median price plus p10/p90 spread and a 7-day trend; ask for currency and get every major orb priced in Chaos. Responses are heavily cached so you stay well clear of GGG's strict rate limits without managing any of that yourself.

Endpoints

Endpoint What it returns
GET /health Liveness check. Fields: status, redis (connected/disconnected), league, timestamp. Always unauthenticated.
GET /league/current The active PoE2 league. Fields: league, start_date, end_date, description. Note: GGG's PoE2 league feed only returns the league id/name, so start_date, end_date, and description are typically null.
GET /price/currency Exchange rates for all major orbs, priced in Chaos. Fields: league, currency ("chaos"), rates (a map of orb id → { chaos_per_unit, sample_size }), last_updated. Optional league query param.
GET /price/item?name=<item> Median / percentile price for a named unique item. Fields: item, league, currency (divine or chaos), price_median, price_p10, price_p90, listings_count, last_updated, trend_7d (rising/falling/stable). Requires name; optional league.
GET /price/bulk?ids[]=a&ids[]=b Batch price check for up to 20 items in one call. Returns league and a results array; each entry is either { item, league, currency, price_median, listings_count, last_updated } or { item, error } for items with no listings.
GET /price/history/:item?days=7 Daily price trend over time, sourced from poe2scout. Fields: item, league, days, trend, history (array of { date, price_chaos, price_divine, count }), last_updated. days defaults to 7, max 90; item name is URL-encoded in the path.

Why this API

  • Real, official data. Item and currency prices come from GGG's own PoE2 trade API (/api/trade2), not a scraped mirror — the same source the in-game trade site uses.
  • Decision-ready numbers, not raw listings. You get a computed median plus p10/p90 percentile spread and a trend_7d direction per item, instead of having to page through and parse dozens of trade listings yourself.
  • One call for the whole currency market. /price/currency returns every major orb (Divine, Exalted, Annulment, Chaos-relative, and more) in a single response, each with a sample_size so you know how thin the data is.
  • Batch-friendly. /price/bulk prices up to 20 items per request, with per-item errors so one missing unique never fails the whole call.
  • Rate-limit safe by design. All upstream responses are cached in Redis (default 10-minute TTL, 1-hour for league data), and currency requests fall back to poe.watch if the GGG API is briefly unavailable — so you're insulated from GGG's ~12 req/min ceiling and transient outages.

Typical use cases

  • Power a price-check overlay, Discord bot, or trade companion that resolves "what is X worth right now?" by item name.
  • Build crafting-cost or flip calculators using live orb exchange rates from /price/currency.
  • Track a watchlist of uniques over time with /price/history/:item and surface rising/falling movers.
  • Snapshot a basket of items at once for loot-value or stash-valuation tools via /price/bulk.
  • Detect the current temp league name programmatically with /league/current and route all your other queries to it.

Good to know

  • name must be an exact item name. /price/item and /price/bulk match against unique item names (e.g. Shavronne's Wrappings, Astramentis). Currency orbs are not searchable here — requesting one (e.g. Divine Orb) returns a clean 404 pointing you to /price/currency.
  • Items rotate by league. Available uniques and their liquidity change every league; a heavily-traded staple may have hundreds of listings while a niche or rotated-out item returns a 404 (no listings found). This is expected, not an outage.
  • Currency display switches automatically. For /price/item and /price/bulk, prices are shown in divine when the median exceeds ~100 chaos, otherwise in chaos — check the currency field on each response. Divine↔Chaos uses an approximate fixed conversion, so treat price_* values as estimates, not exact quotes.
  • Freshness and caching. Responses are cached for ~10 minutes (currency/items) and ~1 hour (league), so last_updated reflects when the data was fetched, not the instant you called. Markets move fast near league launch.
  • Nullable fields are normal. start_date/end_date/description on /league/current and price_divine/count in history entries can be null depending on what upstream returns.
  • History depends on poe2scout coverage. /price/history/:item is only as complete as poe2scout's data for that item and league; items it doesn't track return a 404.
  • Limits. /price/bulk accepts at most 20 items per call; /price/history days must be between 1 and 90. By default the API queries the league set in its configuration, but every price endpoint accepts a league query param to override it.