AHledger API
The same data behind every page on this site, as JSON and plain text. No key needed for the free tier, 120 requests a minute, attribution required. Base URL https://api.ahledger.com.
Endpoints
| Endpoint | Returns | Cached |
|---|---|---|
| GET /v1/markets | Every market: id, game, ruleset, faction, region, label. | 5 minutes |
| GET /v1/items/{itemId}?game=forever | One item by Blizzard item id: name, quality, class, level, requirement, vendor value, icon. | 5 minutes |
| GET /v1/prices/{market}/{itemId}?range=7d | Latest price for an item on a market plus its history series. Ranges: 24h, 7d, 30d, 90d. | 1 minute |
| GET /v1/pricetable/{market} | Every priced item on a market as plain text, the format the addon reads. | 5 minutes |
| GET /health | Service status: database, queue, workers, ingestion. | 10 seconds |
Market ids use dots: forever.pvp.horde.us is the PvP Horde market in the US region. Item ids are Blizzard's, the same numbers in every item URL on this site. Every response carries a Cache-Control header; honor it.
Examples
Markets:
curl https://api.ahledger.com/v1/markets{
"markets": [
{ "id": "forever.normal.alliance.us", "game": "forever", "ruleset": "normal",
"faction": "alliance", "region": "us", "label": "Normal Alliance" },
...
]
}Latest price and seven days of history for Linen Cloth on PvP Horde:
curl "https://api.ahledger.com/v1/prices/forever.pvp.horde.us/2589?range=7d"{
"market": "forever.pvp.horde.us",
"item": { "id": 2589, "name": "Linen Cloth", "quality": "COMMON" },
"latest": {
"observedAt": "2026-11-05T14:02:11.000Z", "source": "addon",
"minBuyout": 18, "median": 20, "quantity": 3420, "auctions": 212,
"median7d": 22, "median30d": 21, "median90d": null
},
"range": "7d",
"series": [
{ "t": "2026-11-04T14:00:00.000Z", "min": 17, "median": 21, "p25": 19, "p75": 24,
"quantity": 3100, "auctions": 190 },
...
]
}Prices are copper: 10,000 copper is one gold. latest is null until a market has been scanned. The series is hourly buckets for 24h and 7d, daily for 30d and 90d.
The addon's price table, one line per item:
curl https://api.ahledger.com/v1/pricetable/forever.pvp.horde.us
AHL1|forever/pvp/horde/us|1793000000|18422
2589:20:18:3420:22:21:18:25
12784:1500000:1400000:2:1600000:1550000:1200000:1800000
...Header: format, market, unix time, row count. Row: item id, median, minimum buyout, quantity, 7 day median, 30 day median, 30 day low, 30 day high. An empty field means unknown. This is what AHledger sync writes into the addon.
Limits
- 120 requests per minute per address. Past that you get 429 with a Retry-After header.
- Responses are cached at the edge for the times above; polling faster than that returns the same bytes.
- Read only. The upload endpoint used by AHledger sync is signed with per-key secrets and is not part of the public surface.
- The Forever beta auction house is not open yet, so price endpoints return empty latest values and series until scans begin. The catalog endpoints are live now.
Need more than this, a bulk export, or a webhook? Say so through the contact form. Keyed tiers with higher limits arrive with the Trader and Desk plans.
Attribution and terms
Free use, personal or commercial, on two conditions: credit AHledger with a link to ahledger.com wherever the data is shown, and do not present the data as your own scan or resell it as a feed. The data comes from players' scans and Blizzard's own game data; nothing here is scraped from third parties, and we ask the same of you.
The API can change during the beta. Breaking changes will keep the old version running for at least 30 days and will be announced on this page.
Status
api.ahledger.com/health reports the database, queue, and worker state, and is safe to poll every 30 seconds.
Where the data comes from
The About page explains every source and how a price gets from a scan to a page.