BYTETOOLS

Path of Exile API

Official Path of Exile API with no key for public endpoints: current leagues, ladders, PvP matches and the public stash tab river. Tested curl example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Path of Exile API?

The Path of Exile API is Grinding Gear Games' official HTTP API. Its public endpoints — league lists, ladders and PvP matches — need no API key and return live data about the current challenge league, while account-scoped endpoints require OAuth.

Path of Exile resets its economy every few months with a new challenge league, which makes the `/leagues` endpoint the natural starting point for any tool built around the game: it tells you what leagues currently exist, when they started, when they end and what rules apply. Almost every third-party build planner and trade site begins by calling it.

Two practical notes. First, GGG requires a descriptive User-Agent that identifies your application and a contact address — generic agents are refused, and this is enforced. Second, the API is split: leagues, ladders and PvP are open, while anything touching a specific account's characters or stash tabs needs an OAuth application registered with GGG. The example below uses the open half.

Quick facts

Base URL
https://api.pathofexile.com
Authentication
Public endpoints need no key, but a descriptive User-Agent naming your app and a contact address is mandatory. Account-scoped and stash endpoints require an OAuth client registered with GGG.
Rate limit
Enforced per endpoint and returned in `X-Rate-Limit-*` response headers. Read them rather than guessing — limits change between leagues.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Path of Exile API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch the current main leagues

GET https://api.pathofexile.com/leagues?type=main&limit=1

curl
curl 'https://api.pathofexile.com/leagues?type=main&limit=1'
JavaScript (fetch)
const res = await fetch("https://api.pathofexile.com/leagues?type=main&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.pathofexile.com/leagues?type=main&limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
[
  {
    "id": "Standard",
    "name": "Standard",
    "realm": "pc",
    "url": "https://www.pathofexile.com/ladders/league/Standard",
    "startAt": "2013-01-23T21:00:00Z",
    "endAt": null,
    "description": "The default game mode.",
    "category": {
      "id": "Standard"
    },
    "registerAt": "2019-09-06T19:00:00Z",
    "delveEvent": true,
    "rules": []
  }
]

Parameters

ParameterTypeRequiredDescription
typequeryOptionalLeague category: `main` for permanent and challenge leagues, `event` for races, `season` for a named season. main
realmqueryOptional`pc`, `xbox`, `sony` or `poe2`. Defaults to PC. pc
limitqueryOptionalHow many leagues to return, up to 50. 1
offsetqueryOptionalPagination offset. 0

Response fields

idstring
League identifier used by every other endpoint and by the trade API. This is what you pass around, not `name`.
realmstring
Platform the league belongs to.
startAt / endAtstring
ISO 8601 start and end timestamps. `endAt` is null for permanent leagues such as Standard.
descriptionstring
Human-readable summary of the league's rules.
category.idstring
The season or event a challenge league belongs to.
rulesarray
Modifiers active in the league, for example Hardcore or Solo Self-Found. An empty array means standard rules.
delveEventboolean
Whether Delve league mechanics are enabled.

What you can build with the Path of Exile API

  • Detect the current challenge league automatically so a build planner never needs a manual update
  • Show a countdown to league start or end on a community site
  • Fetch ladder standings for a race event or guild leaderboard
  • Identify which leagues are Hardcore or SSF before filtering trade data

Common errors and how to fix them

403

Missing or generic User-Agent.

Fix: Send a header naming your application and a contact address. GGG enforces this and will refuse library defaults.

429

Rate limit exceeded.

Fix: Read the `X-Rate-Limit-*` and `Retry-After` headers and back off. Limits are per-endpoint and tighten during league launches.

401

An account-scoped endpoint was called without OAuth.

Fix: Only leagues, ladders and PvP are open. Character and stash data needs a registered OAuth client.

Path of Exile API — frequently asked questions

Does the Path of Exile API need an API key?

The public endpoints — leagues, ladders and PvP matches — need no key. They do require a descriptive User-Agent identifying your application and a contact address. Account-scoped endpoints such as characters and stash tabs require OAuth.

How do I find the current Path of Exile challenge league?

Call the leagues endpoint with `type=main` and look for the entry with a non-null `endAt` that is not Standard or Hardcore. Reading it at runtime is why community tools survive a league launch without a code change.

What is the public stash tab river?

A separate endpoint that streams every public stash tab change in the game as a paginated sequence of change ids. It is what powers third-party trade sites, and it is high volume — expect to consume it continuously rather than polling casually.

Are there rate limits on the Path of Exile API?

Yes, and they vary by endpoint and by time. Every response carries `X-Rate-Limit-*` headers describing the current policy and your usage, so read those headers and adapt instead of hardcoding an interval.

Tools that pair with this API

Path of Exile is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.