Skip to main content

API documentation

Albion Market exposes a public JSON API so scripts and AI agents can search items, fetch live prices, and compute the same arbitrage and route opportunities as the website. No API key. 100 requests per minute per client.

Discovery

Endpoints

Public API endpoints
MethodPathPurpose
GET/api/items?q=bagSearch the item catalog by display name. Use the returned id with the other endpoints.
GET/api/prices?items=T4_BAG&server=westRaw city and quality prices. Requires a unique item name, not a numeric id.
GET/api/history?items=T4_BAGPrice history and trend per item, city, and quality. Up to 10 items per call; trends are rising, falling, flat, or unknown.
GET/api/arbitrage?item=T4_BAGLowest sell order versus highest buy order per server and quality.
GET/api/routes?item=T4_BAG&origin=CaerleonCity-to-city hops with optional fees, distance cap, and sort.
GET/api/healthService status plus links to OpenAPI and llms.txt.

Suggested workflow

  1. Search names: GET /api/items?q=bag
  2. Copy a unique id such as T4_BAG
  3. Fetch prices or computed trades with /api/prices, /api/arbitrage, or /api/routes

Errors include a machine-readable code. On ITEM_NOT_FOUND, retry with suggestion or search again. On RATE_LIMITED, UPSTREAM_TIMEOUT or UPSTREAM_RATE_LIMITED, wait retryAfter seconds. UPSTREAM_RATE_LIMITED means this instance has spent its own request budget on the upstream market API and is holding off rather than getting the whole site blocked; back off for retryAfter seconds and it clears on its own. Note that UPSTREAM_RATE_LIMITED and ITEM_INDEX_UNAVAILABLE share status 503, so branch on code rather than status. On /api/arbitrage and /api/routes, a total upstream failure is reported as what actually happened rather than a blanket 500, and a partial failure lists each failed server in errors with the status it would have returned on its own.

Human tools live on Home, Arbitrage, and Routes. Market data comes from the Albion Online Data Project.