Welcome
Undermine Exchange provides an auction house data API, supplying historical pricing data covering all items on all realms for the latest version of World of Warcraft (Retail, not Classic). This API allows software developers to get historical pricing data via a standard, stable interface.What's in the API?
Our API provides all the pricing data you can view on the Undermine Exchange website:- Current region-wide minimum/median prices and total quantities for all items and battle pets
- Current prices and quantities for individual items and battle pets for all realms in a region
- 14-day hourly resolution price/quantity history for individual items/pets on each realm
- Daily resolution price/quantity history for individual items/pets on each region/realm
- Item-level-specific and pet-breed-specific pricing data
Additional Resources
Before we get started, please check out Blizzard's Community API. It's available to everyone, and is the source of the auction house snapshot data that powers Undermine Exchange. Use those resources first where you can.
Also check out the TSM Public Web API, which is another excellent pricing API resource.
Finally, if you're inclined to assemble this data yourself, you can find the data collection code for this API and Undermine Exchange as a whole at Project Shatari on Github.
Limitations
Rate Limits
To manage our resource usage, the API enforces a rate limit for each API consumer. Each request costs a number of points, and you're provided a sliding window of 3,000 points per hour. If you exceed that points budget, your request will not be serviced, and you'll need to wait for enough points to replenish before your request will return a result.
Each API endpoint described below will include points cost information. Many endpoints will include 2 costs: a lower cost for gzip-compressed responses (preferred), and a higher cost for uncompressed responses.
Patron Access Limits
Many endpoints are available to the public without any Patreon membership requirements. However, some endpoints do require paid membership to our Patreon campaign, specifically those which mirror functionality where the Undermine Exchange website also requires paid access. All endpoints listed below will state whether they require Free or Paid access.
There are no differences in rate limits between free and paid accounts at this time.
Basically, if it requires a paid account to view on the site, it requires that same paid account to access it via the API. There are no additional costs for API access versus website access: the same tier of support provides access to both.
Item and Pet Metadata
We do not provide any APIs for item or pet metadata (names, qualities, icons, levels, etc). Blizzard and other providers can supply that information. Most notably, it's up to you to know whether an item is a commodity (stackable) or not, so you know which item endpoint to use.Gaining Access
Send HTTP GET requests to https://api.undermine.exchange/ at the paths listed below.
All requests to the API must include your API key. This key is tied to your Patreon account, since Patreon is our user account provider.
Note: Most API calls are free to the public, where you do not need a paid Patreon membership. You don't even need to be a member of our Patreon campaign at all, you just need to log in to our site via Patreon.
Your API Key
Using Your Key
You must include an Authorization header in your request:Authorization: ApiKey AQwerTYUIop12ASdfhJKLFakeKeyLOLuseYOURown
GZip Compression and Quota
You should always include the request header Accept-Encoding: gzip so we can compress the data we send to you, for better performance and reduced bandwidth usage. Requests without gzip compression may use additional request quota.API Paths and URLs
The host is https://api.undermine.exchange/. Paths listed below will have placeholders for values you're expected to provide:- :region - One of us, eu, tw, kr
- :realm - A realm slug, such as medivh
- :itemId - An item ID, such as 118852
- :itemLevel - An item level, such as 266
- :itemSuffix - An item suffix ID, such as 13157
- :petSpecies - A pet species ID, such as 145
- :petBreed - A pet breed ID, such as 6
Static Data
These endpoints provide supplemental information for using our API, and change very infrequently.Realm List
| Path | /v1/static/realms.json |
|---|---|
| Points | 1 point (3 uncompressed) |
| Access | Free ✅️ |
{ "request": { "list": "realms" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "realms": [ {"region": "us", "slug": "aegwynn", "name": "Aegwynn"}, {"region": "us", "slug": "aerie-peak", "name": "Aerie Peak"}, ... {"region": "eu", "slug": "grom", "name": "Grom", "nativeName": "Гром"}, ... ] } }
Suffix List
| Path | /v1/static/suffixes.json |
|---|---|
| Points | 1 point |
| Access | Free ✅️ |
{ "request": { "list": "suffixes" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "suffixes": [ { "id": 13150, "name": { "enus": "of the Fireflash", "dede": "des Feuersturms", ... } }, { "id": 13151, "name": { "enus": "of the Peerless", "dede": "der Unvergleichlichkeit", ... } }, ... ] } }
Region Data
These endpoints cover an entire region, instead of specific realms.Items
Base Item Summary
| Path | /v1/region/:region/items.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
A list of every (non-commodity) item for sale in that region, with the median and minimum price (in copper), and how many unique realms are selling it. By "unique realms" we essentially mean connected realms, so if one auction house covers 4 in-game realms, we consider that one "realm" in this count.
The item must be on sale on at least 1 realm to appear in this list. If it's not for sale anywhere, it's not here.
This endpoint does not include separate item level or item suffix pricing, it's only by item ID.
{ "request": { "region": "us", "list": "items", "detail": "base" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "items": { "25": {"item": 25, "median": 928288300, "min": 7980000, "realms": 12}, "209": {"item": 209, "median": 3969000, "min": 4100, "realms": 35}, ... } } }
Full Item Summary
| Path | /v1/region/:region/items.json?detail=full |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
This includes all the same data as the Base Item Summary, but adds item level pricing as well. Same caveat applies for availability: an item must currently be on sale somewhere in the region to appear in this list, otherwise it's not included.
Also, the "min" and "realms" data is only included for level/suffix variations when that item is from the current expansion.
{ "request": { "region": "us", "list": "items", "detail": "full" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "items": { "25": { "item": 25, "median": 928288300, "min": 7980000, "realms": 12, "level": { "1": {"level": 1, "median": 928288300} } }, ... "118852": { "item": 118852, "median": 445500000, "min": 33431700, "realms": 27, "level": { "16": {"level": 16, "median": 800002800}, "40": {"level": 40, "median": 742925800}, "41": {"level": 41, "median": 436315900}, "80": {"level": 80, "median": 619999900} } }, ... "224636": { "item": 224636, "median": 23926800, "min": 60000, "realms": 54, "level": { "73": { "level": 73, "median": 150530500, "suffix": { "13150": {"suffix": 13150, "median": 150530500}, "13152": {"suffix": 13152, "median": 27581700}, "13161": {"suffix": 13161, "median": 27625300} } }, "74": { "level": 74, "median": 9999900, "suffix": { "13150": {"suffix": 13150, "median": 360762800}, "13151": {"suffix": 13151, "median": 29293700}, "13152": {"suffix": 13152, "median": 9999900}, "13156": {"suffix": 13156, "median": 45556800}, "13157": {"suffix": 13157, "median": 38676800} } } } }, ... "260377": { "item": 260377, "median": 500000000, "min": 200000000, "realms": 81, "level": { "240": { "level": 240, "median": 500000000, "min": 200000000, "realms": 60 }, "243": { "level": 243, "median": 400006700, "min": 240000000, "realms": 11 }, ... } }, ... } } }
Now Item Detail
| Path | /v1/region/:region/items/:itemId/now.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
{ "request": { "region": "us", "itemId": 114821, "period": "now" }, "result": [ { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "price": 2350000, "quantity": 18, "realms": ["alleria", "exodar", "khadgar", "medivh"] }, { "lastUpdated": "2026-05-01T00:05:30Z", "snapshot": "2026-05-01T00:01:25Z", "price": 1990000, "quantity": 25, "realms": ["runetotem", "uther"] }, ... ] }
Now Item Level Detail
| Path | /v1/region/:region/items/:itemId/:itemLevel/now.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "itemId": 260376, "itemLevel": 266, "period": "now" }, "result": [ ... ] }
Now Item Suffix Detail
| Path | /v1/region/:region/items/:itemId/:itemLevel/:itemSuffix/now.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "now" }, "result": [ ... ] }
Daily Item Detail
| Path | /v1/region/:region/items/:itemId/daily.json |
|---|---|
| Points | 5 points (9 uncompressed) |
| Access | Free ✅️ |
For each item on each realm, once per day, we find the snapshot in that day with the highest total quantity, and store that quantity and the price at that time.
This endpoint then looks at all the data for that item, summing up the total quantity per day, and averaging (mean) the daily prices, across all the realms in the region. This gives you "total quantity" and "average price" values for that item for each day across the region.
{ "request": { "region": "us", "itemId": 114821, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 2300000, "quantity": 1112}, {"day": "2022-09-05", "price": 2009900, "quantity": 965}, {"day": "2022-09-06", "price": 1949900, "quantity": 766}, {"day": "2022-09-07", "price": 2472500, "quantity": 869}, ... ] } }
Daily Item Level Detail
| Path | /v1/region/:region/items/:itemId/:itemLevel/daily.json |
|---|---|
| Points | 5 points (9 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "itemId": 260376, "itemLevel": 266, "period": "daily" }, "result": { ... } }
Daily Item Suffix Detail
| Path | /v1/region/:region/items/:itemId/:itemLevel/:itemSuffix/daily.json |
|---|---|
| Points | 5 points (9 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "daily" }, "result": { ... } }
Commodities
Base Commodity Summary
| Path | /v1/region/:region/commodities.json |
|---|---|
| Points | 3 point (5 uncompressed) |
| Access | Free ✅️ |
This is the latest snapshot of the commodities pricing for that region. The result includes two timestamps:
- "snapshot" is Blizzard's timestamp when they assembled the data.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "snapshot."
The item list includes items which aren't currently for sale (showing quantity=0), and adds a "seen" timestamp to those records, indicating when that item was last seen for sale.
{ "request": { "region": "us", "list": "commodities", "detail": "base" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "commodities": { "117": {"item": 117, "price": 100, "quantity": 1691}, ... "729": {"item": 729, "price": 5000000, "quantity": 0, "seen": "2026-04-21T18:35:02Z"}, ... } } }
Full Commodity Summary
| Path | /v1/region/:region/commodities.json?detail=full |
|---|---|
| Points | 3 point (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "list": "commodities", "detail": "full" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "commodities": { "117": {"item": 117, "price": 100, "quantity": 1691}, ... "128017": { "item": 128017, "price": 1665035900, "quantity": 2, "level": { "16": { "level": 16, "price": 1665035900, "quantity": 2 }, "44": { "level": 44, "price": 2255685700, "quantity": 0, "seen": "2026-02-08T23:14:24Z" } } }, ... } } }
Now Commodity Detail
| Path | /v1/region/:region/commodities/:itemId/now.json |
|---|---|
| Points | 1 point |
| Access | Free ✅️ |
- "lastSeen" is Blizzard's snapshot timestamp when we last had a nonzero quantity.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "lastSeen" (quantity > 0) or an hour after "lastSeen" (quantity = 0). It may also be a date significantly in the past when quantity = 0, this is normal.
{ "request": { "region": "us", "itemId": 21877, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 1200, "quantity": 83738, "auctions": [ {"price": 1200, "quantity": 1153}, {"price": 1500, "quantity": 1516}, {"price": 1900, "quantity": 27}, {"price": 2000, "quantity": 6163}, {"price": 3500, "quantity": 25280}, ... ] } }
Now Commodity Level Detail
| Path | /v1/region/:region/commodities/:itemId/:itemLevel/now.json |
|---|---|
| Points | 1 point |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Now Commodity Detail, but for a specific commodity item + level. As mentioned in the Full Commodity Summary, this is very rarely useful, but is here for the sake of completion.
The individual auction rows only have "price", since they're always quantity=1, being treated like non-stackable items. If they had bonuses or modifiers, they would also appear there. Best just to pretend this endpoint doesn't exist, bonuses make no sense on stackable items...
{ "request": { "region": "us", "itemId": 69863, "itemLevel": 1, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 357000, "quantity": 2, "auctions": [ {"price": 357000}, {"price": 377000}, ... ] } }
Hourly Commodity Detail
| Path | /v1/region/:region/commodities/:itemId/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The price and quantity of this commodity item in this region at each Blizzard snapshot, for the past 14 days or so. The snapshot timestamps come straight from Blizzard. When quantity becomes zero, we carry the price from the previous snapshot. Snapshots are roughly hourly, but it's not guaranteed (especially during Blizzard's weekly scheduled downtime).
{ "request": { "region": "us", "itemId": 21877, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 1500, "quantity": 62136}, {"snapshot": "2026-04-22T04:14:45Z", "price": 1100, "quantity": 102353}, {"snapshot": "2026-04-22T05:14:50Z", "price": 1000, "quantity": 103537}, {"snapshot": "2026-04-22T06:14:48Z", "price": 1500, "quantity": 100219}, ... ] } }
Hourly Commodity Level Detail
| Path | /v1/region/:region/commodities/:itemId/:itemLevel/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as the Hourly Commodity Detail, but for a specific commodity item + level. Which we've already described as very unusual and best ignored.
{ "request": { "region": "us", "itemId": 69863, "itemLevel": 1, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 0, "quantity": 0}, {"snapshot": "2026-04-22T04:14:45Z", "price": 0, "quantity": 0}, {"snapshot": "2026-04-22T05:14:50Z", "price": 201800, "quantity": 1}, {"snapshot": "2026-04-22T06:14:48Z", "price": 201800, "quantity": 1}, ... ] } }
Daily Commodity Detail
| Path | /v1/region/:region/commodities/:itemId/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The maximum quantity, and the price at that time, of the commodity item in that region for each day we've seen it. Ever.
{ "request": { "region": "us", "itemId": 21877, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 1800, "quantity": 644421}, {"day": "2022-09-05", "price": 1100, "quantity": 727189}, {"day": "2022-09-06", "price": 1000, "quantity": 708004}, {"day": "2022-09-07", "price": 900, "quantity": 523286}, ... ] } }
Daily Commodity Level Detail
| Path | /v1/region/:region/commodities/:itemId/:itemLevel/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Daily Commodity Detail, but for a specific commodity item + level. What are we even doing here.
{ "request": { "region": "us", "itemId": 69863, "itemLevel": 1, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 888800, "quantity": 19}, {"day": "2022-09-05", "price": 1957800, "quantity": 19}, {"day": "2022-09-06", "price": 1957800, "quantity": 18}, {"day": "2022-09-07", "price": 999900, "quantity": 19}, ... ] } }
Battle Pets
Base Pet Summary
| Path | /v1/region/:region/pets.json |
|---|---|
| Points | 1 point (3 uncompressed) |
| Access | Free ✅️ |
A list of every battle pet for sale in that region, with the median and minimum price (in copper), and how many unique realms are selling it. By "unique realms" we essentially mean connected realms, so if one auction house covers 4 in-game realms, we consider that one "realm" in this count.
The pet must be on sale on at least 1 realm to appear in this list. If it's not for sale anywhere, it's not here.
This endpoint does not include separate breed pricing, it's only by species ID.
{ "request": { "region": "us", "list": "pets", "detail": "base" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "pets": { "39": {"species": 39, "median": 28879200, "min": 980000, "realms": 80}, "40": {"species": 40, "median": 39990500, "min": 550000, "realms": 74}, ... } } }
Full Pet Summary
| Path | /v1/region/:region/pets.json?detail=full |
|---|---|
| Points | 1 point (3 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
This includes all the same data as the Base Pet Summary, but adds breed pricing as well. Same caveat applies for availability: a pet must currently be on sale somewhere in the region to appear in this list, otherwise it's not included.
{ "request": { "region": "us", "list": "pets", "detail": "full" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "pets": { "39": { "species": 39, "median": 28879200, "min": 980000, "realms": 80, "breed": { "11": {"breed": 11, "median": 28879200, "min": 980000, "realms": 80} } }, ... "55": { "species": 40, "median": 39990500, "min": 550000, "realms": 74, "breed": { "3": {"breed": 3, "median": 3150000, "min": 120100, "realms": 46}, "5": {"breed": 5, "median": 23478900, "min": 51200, "realms": 46}, "6": {"breed": 6, "median": 19980000, "min": 234500, "realms": 42}, "9": {"breed": 9, "median": 25479900, "min": 234500, "realms": 42} } }, ... } } }
Now Pet Detail
| Path | /v1/region/:region/pets/:petSpecies/now.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
{ "request": { "region": "us", "petSpecies": 145, "period": "now" }, "result": [ { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "price": 2350000, "quantity": 5, "realms": ["alleria", "exodar", "khadgar", "medivh"] }, { "lastUpdated": "2026-05-01T00:05:30Z", "snapshot": "2026-05-01T00:01:25Z", "price": 1990000, "quantity": 6, "realms": ["runetotem", "uther"] }, ... ] }
Now Pet Breed Detail
| Path | /v1/region/:region/pets/:petSpecies/:petBreed/now.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "petSpecies": 145, "petBreed": 6, "period": "now" }, "result": [ ... ] }
Daily Pet Detail
| Path | /v1/region/:region/pets/:petSpecies/daily.json |
|---|---|
| Points | 5 points (9 uncompressed) |
| Access | Free ✅️ |
For each pet on each realm, once per day, we find the snapshot in that day with the highest total quantity, and store that quantity and the price at that time.
This endpoint then looks at all the data for that pet, summing up the total quantity per day, and averaging (mean) the daily prices, across all the realms in the region. This gives you "total quantity" and "average price" values for that pet for each day across the region.
{ "request": { "region": "us", "petSpecies": 145, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 2300000, "quantity": 75}, {"day": "2022-09-05", "price": 2009900, "quantity": 82}, {"day": "2022-09-06", "price": 1949900, "quantity": 117}, {"day": "2022-09-07", "price": 2472500, "quantity": 99}, ... ] } }
Daily Pet Breed Detail
| Path | /v1/region/:region/pets/:petSpecies/:petBreed/daily.json |
|---|---|
| Points | 5 points (9 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
{ "request": { "region": "us", "petSpecies": 145, "petBreed": 6, "period": "daily" }, "result": { ... } }
Realm Data
These endpoints cover a specific realm, instead of the entire region.
Connected realms share an auction house, but you can use any realm in that set to obtain the information. You don't need to know which realms are connected to which other realms. However, in responses, you may see a list of realms together, and that list helps you identify the realms that are connected to each-other.
Items
Base Item Summary
| Path | /v1/realm/:region/:realm/items.json |
|---|---|
| Points | 3 points (7 uncompressed) |
| Access | Free ✅️ |
This is the latest snapshot of the non-commodity item pricing for that realm. The result includes two timestamps:
- "snapshot" is Blizzard's timestamp when they assembled the latest data.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "snapshot."
The item list includes items which aren't currently for sale (showing quantity=0), and adds a "seen" timestamp to those records, indicating when that item was last seen for sale.
This endpoint does not include separate item level or item suffix pricing, it's only by item ID.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "list": "items", "detail": "base" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "items": { "25": {"item": 25, "price": 99990100, "quantity": 1}, "35": {"item": 35, "price": 230422000, "quantity": 0, "seen": "2026-04-27T04:20:23Z"}, ... } } }
Full Item Summary
| Path | /v1/realm/:region/:realm/items.json?detail=full |
|---|---|
| Points | 3 points (7 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
This contains all the same data as the Base Item Summary, but also includes item level and suffix details for equippable items.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "list": "items", "detail": "full" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "items": { "25": { "item": 25, "price": 99990100, "quantity": 1, "level": { "1": {"level": 1, "price": 99990100, "quantity": 1} } }, ... "32678": {"item": 32678, "price": 750100, "quantity": 0, "seen": "2026-04-30T17:31:11Z"}, ... "32753": {"item": 32753, "price": 2000000, "quantity": 10}, ... "118852": { "item": 118852, "price": 334316600, "quantity": 1, "level": { "16": {"level": 16, "price": 746781000, "quantity": 0, "seen": "2026-03-18T04:07:12Z"}, "41": {"level": 41, "price": 334316600, "quantity": 1}, "44": {"level": 44, "price": 652150700, "quantity": 0, "seen": "2026-02-08T21:13:03Z"}, "47": {"level": 47, "price": 431110000, "quantity": 0, "seen": "2022-11-30T14:28:02Z"}, "68": {"level": 68, "price": 500000000, "quantity": 0, "seen": "2026-04-04T10:43:05Z"}, "123": {"level": 123, "price": 1438904500, "quantity": 0, "seen": "2024-07-08T23:30:42Z"}, "196": {"level": 196, "price": 10000000, "quantity": 0, "seen": "2026-01-20T23:22:23Z"}, "367": {"level": 367, "price": 200000000, "quantity": 0, "seen": "2025-07-28T05:23:46Z"} } }, ... "224636": { "item": 224636, "price": 8001200, "quantity": 4, "level": { "75": { "level": 75, "suffix": { "13161": {"suffix": 13161, "price": 5750000, "quantity": 0, "seen": "2026-04-01T23:43:09Z"} } }, "76": { "level": 76, "suffix": { "13156": {"suffix": 13156, "price": 1990000, "quantity": 0, "seen": "2026-04-02T23:43:07Z"} } }, "77": { "level": 77, "suffix": { "13150": {"suffix": 13150, "price": 990000, "quantity": 0, "seen": "2026-04-02T23:43:07Z"} } }, "78": { "level": 78, "suffix": { "13152": {"suffix": 13152, "price": 349600, "quantity": 0, "seen": "2026-04-22T22:20:18Z"} } }, "79": { "level": 79, "suffix": { "13150": {"suffix": 13150, "price": 39176400, "quantity": 0, "seen": "2026-05-01T01:31:11Z"}, "13151": {"suffix": 13151, "price": 801000, "quantity": 0, "seen": "2026-02-14T22:49:19Z"}, "13156": {"suffix": 13156, "price": 3750000, "quantity": 0, "seen": "2026-03-25T03:37:33Z"}, "13157": {"suffix": 13157, "price": 427723200, "quantity": 0, "seen": "2026-02-21T15:25:54Z"}, "13161": {"suffix": 13161, "price": 8888100, "quantity": 0, "seen": "2026-04-29T02:31:14Z"} } }, "80": { "level": 80, "suffix": { "13151": {"suffix": 13151, "price": 1408500, "quantity": 0, "seen": "2026-03-17T03:28:37Z"}, "13152": {"suffix": 13152, "price": 27460900, "quantity": 0, "seen": "2026-05-01T01:31:11Z"}, "13156": {"suffix": 13156, "price": 9750000, "quantity": 0, "seen": "2026-04-07T17:29:52Z"}, "13157": {"suffix": 13157, "price": 10008100, "quantity": 0, "seen": "2026-04-28T01:21:30Z"} } }, "86": { "level": 86, "suffix": { "13150": {"suffix": 13150, "price": 8888100, "quantity": 0, "seen": "2026-04-26T14:20:17Z"}, "13151": {"suffix": 13151, "price": 8001200, "quantity": 1}, "13152": {"suffix": 13152, "price": 3008100, "quantity": 0, "seen": "2026-05-01T04:31:12Z"}, "13156": {"suffix": 13156, "price": 580000, "quantity": 0, "seen": "2026-02-27T04:34:36Z"}, "13157": {"suffix": 13157, "price": 3000000, "quantity": 0, "seen": "2026-04-07T18:29:53Z"}, "13161": {"suffix": 13161, "price": 9991200, "quantity": 3} } }, "382": { "level": 382, "suffix": { "13157": {"suffix": 13157, "price": 27487200, "quantity": 0, "seen": "2025-07-31T20:36:33Z"} } }, "408": { "level": 408, "suffix": { "13150": {"suffix": 13150, "price": 28480000, "quantity": 0, "seen": "2025-10-02T03:37:55Z"}, "13151": {"suffix": 13151, "price": 150000000, "quantity": 0, "seen": "2025-03-23T23:33:06Z"}, "13152": {"suffix": 13152, "price": 28480000, "quantity": 0, "seen": "2025-10-18T23:39:00Z"}, "13157": {"suffix": 13157, "price": 44444400, "quantity": 0, "seen": "2025-12-06T20:55:50Z"}, "13161": {"suffix": 13161, "price": 28480000, "quantity": 0, "seen": "2025-10-18T23:39:00Z"} } }, "434": { "level": 434, "suffix": { "13150": {"suffix": 13150, "price": 28480000, "quantity": 0, "seen": "2025-09-27T04:35:08Z"}, "13151": {"suffix": 13151, "price": 48480000, "quantity": 0, "seen": "2025-03-19T19:33:03Z"}, "13152": {"suffix": 13152, "price": 38480000, "quantity": 0, "seen": "2025-05-31T08:31:10Z"}, "13156": {"suffix": 13156, "price": 759900, "quantity": 0, "seen": "2025-06-24T04:31:23Z"}, "13157": {"suffix": 13157, "price": 299999900, "quantity": 0, "seen": "2025-08-16T03:36:53Z"}, "13161": {"suffix": 13161, "price": 100000000, "quantity": 0, "seen": "2024-12-18T20:25:31Z"} } }, "460": { "level": 460, "suffix": { "13150": {"suffix": 13150, "price": 48480000, "quantity": 0, "seen": "2025-03-21T09:33:03Z"}, "13151": {"suffix": 13151, "price": 66666600, "quantity": 0, "seen": "2025-11-23T10:45:15Z"}, "13152": {"suffix": 13152, "price": 162620200, "quantity": 0, "seen": "2025-06-20T10:31:22Z"}, "13156": {"suffix": 13156, "price": 48480000, "quantity": 0, "seen": "2025-10-02T03:37:55Z"}, "13157": {"suffix": 13157, "price": 100000000, "quantity": 0, "seen": "2024-11-06T10:42:35Z"}, "13161": {"suffix": 13161, "price": 2390000, "quantity": 0, "seen": "2026-01-16T08:19:23Z"} } }, "483": { "level": 483, "suffix": { "13150": {"suffix": 13150, "price": 150000000, "quantity": 0, "seen": "2025-01-09T18:32:41Z"}, "13151": {"suffix": 13151, "price": 120024300, "quantity": 0, "seen": "2025-12-31T00:17:42Z"}, "13152": {"suffix": 13152, "price": 32497700, "quantity": 0, "seen": "2024-11-06T08:42:35Z"}, "13156": {"suffix": 13156, "price": 80000000, "quantity": 0, "seen": "2025-10-04T21:37:59Z"}, "13157": {"suffix": 13157, "price": 1000000, "quantity": 0, "seen": "2025-11-30T00:17:48Z"}, "13161": {"suffix": 13161, "price": 90000000, "quantity": 0, "seen": "2025-04-18T18:41:57Z"} } }, "506": { "level": 506, "suffix": { "13150": {"suffix": 13150, "price": 80000000, "quantity": 0, "seen": "2025-10-02T03:37:55Z"}, "13151": {"suffix": 13151, "price": 140000000, "quantity": 0, "seen": "2025-11-22T17:45:14Z"}, "13152": {"suffix": 13152, "price": 150000000, "quantity": 0, "seen": "2025-02-17T15:30:34Z"}, "13156": {"suffix": 13156, "price": 10705700, "quantity": 0, "seen": "2025-05-18T03:08:26Z"}, "13157": {"suffix": 13157, "price": 1096862300, "quantity": 0, "seen": "2026-01-20T14:19:30Z"}, "13161": {"suffix": 13161, "price": 140000000, "quantity": 0, "seen": "2025-06-01T03:31:13Z"} } }, "515": { "level": 515, "suffix": { "13150": {"suffix": 13150, "price": 55990600, "quantity": 0, "seen": "2025-06-10T21:45:58Z"}, "13151": {"suffix": 13151, "price": 150000000, "quantity": 0, "seen": "2025-05-31T08:31:10Z"}, "13152": {"suffix": 13152, "price": 797697400, "quantity": 0, "seen": "2026-01-21T05:26:50Z"}, "13156": {"suffix": 13156, "price": 194104800, "quantity": 0, "seen": "2024-12-13T04:54:13Z"}, "13157": {"suffix": 13157, "price": 797797400, "quantity": 0, "seen": "2026-01-21T05:26:50Z"}, "13161": {"suffix": 13161, "price": 797697400, "quantity": 0, "seen": "2026-01-21T05:26:50Z"} } }, "525": { "level": 525, "suffix": { "13150": {"suffix": 13150, "price": 28489900, "quantity": 0, "seen": "2026-01-07T10:17:10Z"}, "13151": {"suffix": 13151, "price": 28480000, "quantity": 0, "seen": "2025-05-30T18:31:08Z"}, "13152": {"suffix": 13152, "price": 28489900, "quantity": 0, "seen": "2026-01-07T10:17:10Z"}, "13156": {"suffix": 13156, "price": 60000000, "quantity": 0, "seen": "2026-01-21T05:26:50Z"}, "13157": {"suffix": 13157, "price": 28479600, "quantity": 0, "seen": "2025-09-28T21:35:11Z"}, "13161": {"suffix": 13161, "price": 28489900, "quantity": 0, "seen": "2025-12-17T09:15:52Z"} } }, "532": { "level": 532, "suffix": { "13150": {"suffix": 13150, "price": 28489900, "quantity": 0, "seen": "2025-12-14T09:23:12Z"}, "13151": {"suffix": 13151, "price": 70000000, "quantity": 0, "seen": "2026-01-21T05:26:50Z"}, "13152": {"suffix": 13152, "price": 28480000, "quantity": 0, "seen": "2025-10-06T07:38:00Z"}, "13156": {"suffix": 13156, "price": 28480000, "quantity": 0, "seen": "2025-10-06T07:38:00Z"}, "13157": {"suffix": 13157, "price": 28489900, "quantity": 0, "seen": "2026-01-07T10:17:10Z"}, "13161": {"suffix": 13161, "price": 44999900, "quantity": 0, "seen": "2025-12-06T20:55:50Z"} } }, "538": { "level": 538, "suffix": { "13150": {"suffix": 13150, "price": 38489900, "quantity": 0, "seen": "2026-01-07T10:17:10Z"}, "13151": {"suffix": 13151, "price": 38480000, "quantity": 0, "seen": "2025-10-18T19:38:58Z"}, "13152": {"suffix": 13152, "price": 80000000, "quantity": 0, "seen": "2025-12-31T04:17:42Z"}, "13156": {"suffix": 13156, "price": 38480000, "quantity": 0, "seen": "2025-10-10T20:24:40Z"}, "13157": {"suffix": 13157, "price": 38489900, "quantity": 0, "seen": "2026-01-07T10:17:10Z"}, "13161": {"suffix": 13161, "price": 54999900, "quantity": 0, "seen": "2025-11-18T14:29:35Z"} } }, "545": { "level": 545, "suffix": { "13150": {"suffix": 13150, "price": 2813000, "quantity": 0, "seen": "2026-02-07T01:12:57Z"}, "13151": {"suffix": 13151, "price": 70000000, "quantity": 0, "seen": "2026-01-21T18:26:46Z"}, "13152": {"suffix": 13152, "price": 5283800, "quantity": 0, "seen": "2026-02-08T02:16:14Z"}, "13156": {"suffix": 13156, "price": 60000000, "quantity": 0, "seen": "2026-01-21T18:26:46Z"}, "13157": {"suffix": 13157, "price": 546080700, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13161": {"suffix": 13161, "price": 546080700, "quantity": 0, "seen": "2026-02-08T23:13:03Z"} } }, "558": { "level": 558, "suffix": { "13150": {"suffix": 13150, "price": 5000000, "quantity": 0, "seen": "2025-08-29T20:12:41Z"}, "13151": {"suffix": 13151, "price": 21178500, "quantity": 0, "seen": "2025-07-24T00:23:41Z"}, "13152": {"suffix": 13152, "price": 1200000, "quantity": 0, "seen": "2025-03-23T13:33:02Z"}, "13156": {"suffix": 13156, "price": 10000800, "quantity": 0, "seen": "2025-11-01T05:04:05Z"}, "13157": {"suffix": 13157, "price": 21178500, "quantity": 0, "seen": "2025-07-24T00:23:41Z"}, "13161": {"suffix": 13161, "price": 546080700, "quantity": 0, "seen": "2026-02-08T23:13:03Z"} } }, "561": { "level": 561, "suffix": { "13150": {"suffix": 13150, "price": 2390000, "quantity": 0, "seen": "2026-01-18T05:19:27Z"}, "13151": {"suffix": 13151, "price": 1739700, "quantity": 0, "seen": "2025-09-05T19:19:33Z"}, "13152": {"suffix": 13152, "price": 997388400, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13156": {"suffix": 13156, "price": 63937300, "quantity": 0, "seen": "2025-07-24T00:23:41Z"}, "13157": {"suffix": 13157, "price": 1000000, "quantity": 0, "seen": "2025-11-29T03:17:49Z"}, "13161": {"suffix": 13161, "price": 1490000, "quantity": 0, "seen": "2026-01-21T00:22:21Z"} } }, "564": { "level": 564, "suffix": { "13150": {"suffix": 13150, "price": 120000000, "quantity": 0, "seen": "2025-03-07T16:43:11Z"}, "13151": {"suffix": 13151, "price": 3330000, "quantity": 0, "seen": "2025-05-24T17:48:46Z"}, "13152": {"suffix": 13152, "price": 186361900, "quantity": 0, "seen": "2025-07-20T17:36:03Z"}, "13156": {"suffix": 13156, "price": 950000, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13157": {"suffix": 13157, "price": 186361900, "quantity": 0, "seen": "2025-07-20T17:36:03Z"}, "13161": {"suffix": 13161, "price": 50202500, "quantity": 0, "seen": "2025-07-16T15:36:00Z"} } }, "597": { "level": 597, "suffix": { "13150": {"suffix": 13150, "price": 6423400, "quantity": 0, "seen": "2026-02-08T05:13:02Z"}, "13151": {"suffix": 13151, "price": 6629900, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13152": {"suffix": 13152, "price": 900000, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13156": {"suffix": 13156, "price": 950000, "quantity": 0, "seen": "2026-02-08T23:13:03Z"}, "13157": {"suffix": 13157, "price": 2500000, "quantity": 0, "seen": "2026-02-07T17:12:58Z"}, "13161": {"suffix": 13161, "price": 1750000, "quantity": 0, "seen": "2026-02-02T00:18:14Z"} } }, "600": { "level": 600, "suffix": { "13150": {"suffix": 13150, "price": 2500000, "quantity": 0, "seen": "2026-02-07T17:12:58Z"}, "13151": {"suffix": 13151, "price": 1750000, "quantity": 0, "seen": "2026-02-01T01:18:10Z"}, "13152": {"suffix": 13152, "price": 2390000, "quantity": 0, "seen": "2026-01-17T19:19:26Z"}, "13156": {"suffix": 13156, "price": 980000, "quantity": 0, "seen": "2025-12-04T00:55:48Z"}, "13157": {"suffix": 13157, "price": 2500000, "quantity": 0, "seen": "2026-02-07T17:12:58Z"}, "13161": {"suffix": 13161, "price": 1300000, "quantity": 0, "seen": "2026-02-08T03:13:01Z"} } }, "603": { "level": 603, "suffix": { "13150": {"suffix": 13150, "price": 2750000, "quantity": 0, "seen": "2026-01-20T01:19:33Z"}, "13151": {"suffix": 13151, "price": 7202100, "quantity": 0, "seen": "2026-02-05T09:32:28Z"}, "13152": {"suffix": 13152, "price": 1750000, "quantity": 0, "seen": "2026-02-05T04:32:30Z"}, "13156": {"suffix": 13156, "price": 13500000, "quantity": 0, "seen": "2026-01-10T06:17:10Z"}, "13157": {"suffix": 13157, "price": 2750000, "quantity": 0, "seen": "2026-01-21T12:26:48Z"}, "13161": {"suffix": 13161, "price": 1750000, "quantity": 0, "seen": "2026-02-04T00:32:29Z"} } } } }, ... } } }
Tertiary Stats
| Path | /v1/realm/:region/:realm/stats.json |
|---|---|
| Points | 1 point (3 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
This provides item keys where certain tertiary stats are currently for sale. For example, under the "speed" list, you might find item 169406, level 45, suffix 13152. In that case, there is some auction currently posted for that item + level + suffix combo which has the speed tertiary stat bonus. You can then look that item up via the Now Item Suffix Detail realm endpoint to get pricing and auction data.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "list": "stats" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "stats": { "speed": [ {"item": 169406, "level": 45, "suffix": 13152}, {"item": 169419, "level": 45, "suffix": 13161}, {"item": 188036, "level": 50}, ... ], "leech": [ {"item": 159173, "level": 74, "suffix": 13157}, {"item": 113632, "level": 16}, {"item": 159799, "level": 74, "suffix": 13150}, ... ], "avoidance": [ ... ], "indestructible": [ ... ] } } }
Now Item Detail
| Path | /v1/realm/:region/:realm/items/:itemId/now.json |
|---|---|
| Points | 1 point |
| Access | Free ✅️ |
- "lastSeen" is Blizzard's snapshot timestamp when we last had a nonzero quantity.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "lastSeen" (quantity > 0) or an hour after "lastSeen" (quantity = 0). It may also be a date significantly in the past when quantity = 0, this is normal.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 114821, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 235000, "quantity": 18, "auctions": [ {"price": 235000, "quantity": 4}, {"price": 240000, "quantity": 7}, ... ] } }
Now Item Level Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/now.json |
|---|---|
| Points | 1 point |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Now Item Detail, but for a specific non-commodity item + level.
The auction list has a separate entry for each individual item (instead of grouping by price), and also includes item modifiers, bonuses, and tertiary stats, when present.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 260372, "itemLevel": 266, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 1500000000, "quantity": 7, "auctions": [ { "price": 1500000000, "modifiers": {"28": 3606, "29": 49, "30": 40}, "bonuses": [6652, 10844, 12795, 13334, 13577] }, { "price": 1500000000, "modifiers": {"28": 3606, "29": 32, "30": 40}, "bonuses": [41, 10844, 12795, 13334, 13577], "stats": ["leech"] }, { "price": 1690000000, "modifiers": {"28": 3606, "29": 32, "30": 49}, "bonuses": [42, 10844, 12795, 13334, 13577], "stats": ["speed"] }, ... ] } }
Now Item Suffix Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/:itemSuffix/now.json |
|---|---|
| Points | 1 point |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Now Item Level Detail, but for a specific non-commodity item + level + suffix.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 11658800, "quantity": 2, "auctions": [ { "price": 11658800, "modifiers": {"28": 2462}, "bonuses": [41, 1527, 1707, 10844, 11943], "stats": ["leech"] }, { "price": 11658800, "modifiers": {"28": 2462}, "bonuses": [1530, 1710, 6652, 10254, 10844, 11944] } ] } }
Hourly Item Detail
| Path | /v1/realm/:region/:realm/items/:itemId/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The price and quantity of this non-commodity item on this realm at each Blizzard snapshot, for the past 14 days or so. The snapshot timestamps come straight from Blizzard. When quantity becomes zero, we carry the price from the previous snapshot. Snapshots are roughly hourly, but it's not guaranteed (especially during Blizzard's weekly scheduled downtime).
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 114821, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 25000000, "quantity": 0}, {"snapshot": "2026-04-22T04:14:45Z", "price": 4000000, "quantity": 3}, {"snapshot": "2026-04-22T05:14:50Z", "price": 4000000, "quantity": 3}, {"snapshot": "2026-04-22T06:14:48Z", "price": 4000000, "quantity": 7}, ... ] } }
Hourly Item Level Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Hourly Item Detail, but for a specific non-commodity item + level.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 260376, "itemLevel": 266, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 1450000000, "quantity": 5}, {"snapshot": "2026-04-22T04:14:45Z", "price": 1450000000, "quantity": 4}, {"snapshot": "2026-04-22T05:14:50Z", "price": 1450000000, "quantity": 4}, {"snapshot": "2026-04-22T06:14:48Z", "price": 1450000000, "quantity": 4}, ... ] } }
Hourly Item Suffix Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/:itemSuffix/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Hourly Item Detail, but for a specific non-commodity item + level + suffix.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 6162200, "quantity": 1}, {"snapshot": "2026-04-22T04:14:45Z", "price": 6162200, "quantity": 1}, {"snapshot": "2026-04-22T05:14:50Z", "price": 6162200, "quantity": 1}, {"snapshot": "2026-04-22T06:14:48Z", "price": 6162200, "quantity": 1}, ... ] } }
Daily Item Detail
| Path | /v1/realm/:region/:realm/items/:itemId/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The maximum quantity, and the price at that time, of the non-commodity item on that realm for each day we've seen it. Ever.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 114821, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 2300000, "quantity": 112}, {"day": "2022-09-05", "price": 2009900, "quantity": 65}, {"day": "2022-09-06", "price": 1949900, "quantity": 66}, {"day": "2022-09-07", "price": 2472500, "quantity": 69}, ... ] } }
Daily Item Level Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Daily Item Detail, but for a specific non-commodity item + level.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 260376, "itemLevel": 266, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2026-03-20", "price": 38000000000, "quantity": 1}, {"day": "2026-03-21", "price": 25000000000, "quantity": 1}, {"day": "2026-03-22", "price": 25000000000, "quantity": 0}, {"day": "2026-03-23", "price": 10000000000, "quantity": 1}, {"day": "2026-03-24", "price": 8900000000, "quantity": 2}, ... ] } }
Daily Item Suffix Detail
| Path | /v1/realm/:region/:realm/items/:itemId/:itemLevel/:itemSuffix/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Daily Item Detail, but for a specific non-commodity item + level + suffix.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2026-02-09", "price": 4880000, "quantity": 1}, {"day": "2026-02-10", "price": 4880000, "quantity": 0}, {"day": "2026-02-11", "price": 5070500, "quantity": 1}, {"day": "2026-02-12", "price": 5070500, "quantity": 2}, ... ] } }
Battle Pets
Base Pet Summary
| Path | /v1/realm/:region/:realm/pets.json |
|---|---|
| Points | 1 points (3 uncompressed) |
| Access | Free ✅️ |
This is the latest snapshot of the battle pet pricing for that realm. The result includes two timestamps:
- "snapshot" is Blizzard's timestamp when they assembled the latest data.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "snapshot."
The pet list includes pets which aren't currently for sale (showing quantity=0), and adds a "seen" timestamp to those records, indicating when that pet was last seen for sale.
This endpoint does not include separate breed pricing, it's only by species ID.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "list": "pets", "detail": "base" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "pets": { "39": {"species": 39, "price": 19880000, "quantity": 4}, "40": {"species": 40, "price": 5709700, "quantity": 3}, "41": {"species": 41, "price": 19980000, "quantity": 3}, "42": {"species": 42, "price": 769990000, "quantity": 0, "seen": "2026-04-23T02:20:20Z"}, ... } } }
Full Pet Summary
| Path | /v1/realm/:region/:realm/pets.json?detail=full |
|---|---|
| Points | 1 points (3 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
This contains all the same data as the Base Pet Summary, but also includes breed pricing details.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "list": "pets", "detail": "full" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "snapshot": "2026-05-01T00:00:00Z", "pets": { "39": { "species": 39, "price": 19880000, "quantity": 4, "breed": { "11": {"breed": 11, "price": 19880000, "quantity": 4} } }, ... "42": { "species": 42, "price": 769990000, "quantity": 0, "seen": "2026-04-23T02:20:20Z", "breed": { "7": {"breed": 7, "price": 769990000, "quantity": 0, "seen": "2026-04-23T02:20:20Z"} } }, ... "70": { "species": 70, "price": 5000000, "quantity": 3, "breed": { "3": {"breed": 3, "price": 67690000, "quantity": 1}, "5": {"breed": 5, "price": 67690000, "quantity": 0, "seen": "2026-03-29T10:37:26Z"}, "12": {"breed": 12, "price": 5000000, "quantity": 2} } }, ... } } }
Now Pet Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/now.json |
|---|---|
| Points | 1 point |
| Access | Free ✅️ |
- "lastSeen" is Blizzard's snapshot timestamp when we last had a nonzero quantity.
- "lastUpdated" is when Undermine Exchange generated this file. It will typically be a few minutes after "lastSeen" (quantity > 0) or an hour after "lastSeen" (quantity = 0). It may also be a date significantly in the past when quantity = 0, this is normal.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 8999900, "quantity": 4, "auctions": [ {"price": 8999900, "quantity": 1}, {"price": 9989900, "quantity": 2}, ... ] } }
Now Pet Breed Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/:petBreed/now.json |
|---|---|
| Points | 1 point |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Now Pet Detail, but for a specific species + breed.
The auction list has a separate entry for each individual pet (instead of grouping by price), and also includes item modifiers, when present.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "petBreed": 6, "period": "now" }, "result": { "lastUpdated": "2026-05-01T00:05:00Z", "lastSeen": "2026-05-01T00:00:00Z", "price": 8999900, "quantity": 1, "auctions": [ { "price": 8999900, "modifiers": {"2": 2, "3": 145, "4": 6, "5": 1, "6": 20029} } ] } }
Hourly Pet Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The price and quantity of this pet on this realm at each Blizzard snapshot, for the past 14 days or so. The snapshot timestamps come straight from Blizzard. When quantity becomes zero, we carry the price from the previous snapshot. Snapshots are roughly hourly, but it's not guaranteed (especially during Blizzard's weekly scheduled downtime).
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 14998400, "quantity": 2}, {"snapshot": "2026-04-22T04:14:45Z", "price": 14998400, "quantity": 2}, {"snapshot": "2026-04-22T05:14:50Z", "price": 14998400, "quantity": 2}, {"snapshot": "2026-04-22T06:14:48Z", "price": 12998400, "quantity": 3}, ... ] } }
Hourly Pet Breed Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/:petBreed/hourly.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Hourly Pet Detail, but for a specific pet species + breed.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "petBreed": 6, "period": "hourly" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "hourly": [ {"snapshot": "2026-04-22T03:14:41Z", "price": 14998900, "quantity": 0}, {"snapshot": "2026-04-22T04:14:45Z", "price": 14998900, "quantity": 0}, {"snapshot": "2026-04-22T05:14:50Z", "price": 14998900, "quantity": 0}, {"snapshot": "2026-04-22T06:14:48Z", "price": 12998400, "quantity": 1}, ... ] } }
Daily Pet Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Free ✅️ |
The maximum quantity, and the price at that time, of the pet on that realm for each day we've seen it. Ever.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 420000, "quantity": 15}, {"day": "2022-09-05", "price": 420000, "quantity": 7}, {"day": "2022-09-06", "price": 420000, "quantity": 7}, {"day": "2022-09-07", "price": 420000, "quantity": 7}, ... ] } }
Daily Pet Breed Detail
| Path | /v1/realm/:region/:realm/pets/:petSpecies/:petBreed/daily.json |
|---|---|
| Points | 3 points (5 uncompressed) |
| Access | Paid ✅️⛔ Become a patron!⚠️ |
Same as Daily Pet Detail, but for a specific pet species + breed.
{ "request": { "region": "us", "realms": ["alleria", "exodar", "khadgar", "medivh"], "petSpecies": 145, "petBreed": 6, "period": "daily" }, "result": { "lastUpdated": "2026-05-01T00:00:00Z", "daily": [ {"day": "2022-09-04", "price": 439300, "quantity": 0}, {"day": "2022-09-05", "price": 439300, "quantity": 0}, {"day": "2022-09-06", "price": 439300, "quantity": 0}, {"day": "2022-09-07", "price": 439300, "quantity": 0}, {"day": "2022-09-08", "price": 1250000, "quantity": 1}, ... ] } }
Support
This service is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. If something is broken, or wrong, or slow, or late, you can let us know, but there are no guarantees things will get fixed, nor are there any assurances of correct and timely data.
If you have any questions about the API, please reach us at the feedback email listed on our website.