SOTA.net API
SOTA.net is opening a public read API: the community-collected data this site is built from, exposed as JSON for your tools, spreadsheets and websites. The first data set is the market data behind Receipt Search — prices and sales collected from player-uploaded vendor receipts.
The API is young and we are actively expanding it. This page is the contract: endpoints are documented here as they go live, and the roadmap section covers what is coming next.
What this is
A read-only HTTP API over the public, aggregated community data on SOTA.net. No registration, no API keys, no sign-in: if data is public on the site, the API serves the same view of it as plain JSON, with the same privacy rules the site itself applies.
Responses are UTF-8 JSON. Endpoints are versioned under /api/v1; anything documented on this page is stable — we will add fields, but not rename or remove them without notice here. Every endpoint on this page comes with a copy-paste curl example.
Receipt market data
Item price lookup over the vendor receipt archive. For any item — or the whole catalogue — the endpoint reports what it last sold for, when that sale happened, and its average price over the last 90 days. It is the data set behind Receipt Search and the item price list, as JSON.
GET /api/v1/receipts/prices
No authentication. One optional query parameter: item — the exact item name, matched case-insensitively. Repeat it for up to 50 items per request; leave it off to get the whole catalogue (~15,000 items) in one response.
Look up one item:
curl "https://shroudoftheavatar.net/api/v1/receipts/prices?item=Gold%20Ore"Several items — repeat item (names are matched whole, so commas in a name are fine):
curl "https://shroudoftheavatar.net/api/v1/receipts/prices?item=Gold%20Ore&item=Iron%20Ore"The whole catalogue:
curl "https://shroudoftheavatar.net/api/v1/receipts/prices"The response, per item:
{
"generatedAt": "2026-09-27T22:40:12Z",
"count": 2,
"items": [
{
"item": "Gold Ore",
"lastPrice": 8.5,
"lastSoldAt": "2026-09-27T18:03:00Z",
"avg90d": 9.13,
"sold90d": 4120
},
{
"item": "Iron Ore",
"lastPrice": 3,
"lastSoldAt": "2026-09-26T02:11:00Z",
"avg90d": 3.42,
"sold90d": 9860
}
],
"missing": []
}lastPrice— gold per unit of the item's most recent published sale.lastSoldAt— when that sale happened, ISO 8601, UTC.avg90d— average gold per unit over the trailing 90 days;nullif nothing sold in that window.sold90d— units sold over the trailing 90 days.generatedAt— when this snapshot was computed; the data refreshes about every 10 minutes.missing— requested names with no published sales (only present when you asked for specific items).
Prices come from published receipts only, with the same privacy rules the site applies everywhere else. Want a shape this doesn't cover — sales history, trends? Tell us.
Fair use
- Read endpoints are cached server-side; the data behind them updates on the order of minutes, not seconds. Polling faster than once a minute gains you nothing.
- Requests are rate-limited per IP. A
429response carries aRetry-Afterheader in seconds — honour it. - Identify your tool with a descriptive
User-Agentso we can reach out instead of blocking if something misbehaves.
Roadmap
The API grows in the direction people pull it. What is planned, roughly in order:
- Richer receipt views — the price lookup above is the start; per-item sales history and market trends come next.
- Read endpoints for community data — the stats the site renders (loot, monsters, fishing, combat) exposed as JSON for tools and overlays.
Building something and missing an endpoint? Tell us — real needs decide what ships next. Contact the site team and we'll talk it through.
