Undermine Exchange API

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:

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

You are not logged in.
You are logged in.

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:

Static Data

These endpoints provide supplemental information for using our API, and change very infrequently.

Realm List

Path/v1/static/realms.json
Points1 point (3 uncompressed)
AccessFree ✅️
Almost all of our APIs accept a lowercase region and lowercase realm slug, so this provides a list of all the regions and realms we support. The slugs should match what Blizzard uses in their APIs. Realm names are always in English, but if a realm has a localized name when shown in the English client, that's included as a "nativeName" property.
{ "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
Points1 point
AccessFree ✅️
Some weapons/armor are priced by item level and have by item name suffixes, and our API requires those suffix IDs. Since they're pretty obscure, we provide a list of them here. Note: these are only used by endpoints which require paid access anyway.
{ "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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️
This returns the current price and availability for a specific non-commodity item on every realm in the region.
{ "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
Points3 points (5 uncompressed)
AccessPaid Become a patron!⚠️
Same as Now Item Detail, but for a specific item + level. If the item also always comes with suffixes, there likely won't be a result for it on this endpoint.
{ "request": { "region": "us", "itemId": 260376, "itemLevel": 266, "period": "now" }, "result": [ ... ] }

Now Item Suffix Detail

Path/v1/region/:region/items/:itemId/:itemLevel/:itemSuffix/now.json
Points3 points (5 uncompressed)
AccessPaid Become a patron!⚠️
Same as Now Item Detail, but for a specific item + level + suffix.
{ "request": { "region": "us", "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "now" }, "result": [ ... ] }

Daily Item Detail

Path/v1/region/:region/items/:itemId/daily.json
Points5 points (9 uncompressed)
AccessFree ✅️

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
Points5 points (9 uncompressed)
AccessPaid Become a patron!⚠️
Same as Daily Item Detail, but for a specific item + level.
{ "request": { "region": "us", "itemId": 260376, "itemLevel": 266, "period": "daily" }, "result": { ... } }

Daily Item Suffix Detail

Path/v1/region/:region/items/:itemId/:itemLevel/:itemSuffix/daily.json
Points5 points (9 uncompressed)
AccessPaid Become a patron!⚠️
Same as Daily Item Detail, but for a specific item + level + suffix.
{ "request": { "region": "us", "itemId": 224608, "itemLevel": 86, "itemSuffix": 13157, "period": "daily" }, "result": { ... } }

Commodities

Base Commodity Summary

Path/v1/region/:region/commodities.json
Points3 point (5 uncompressed)
AccessFree ✅️

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
Points3 point (5 uncompressed)
AccessPaid Become a patron!⚠️
This contains the same data as Base Commodity Summary, but includes item level details for commodities which are equippable. They are very rare, and you really don't need level-based pricing for commodities, but it's here if you want it.
{ "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
Points1 point
AccessFree ✅️
This returns the current price, availability, and auctions for a specific commodity item in the region. The result includes two timestamps:
  • "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
Points1 point
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points1 point (3 uncompressed)
AccessFree ✅️

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
Points1 point (3 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️
This returns the current price and availability for a specific battle pet on every realm in the region.
{ "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
Points3 points (5 uncompressed)
AccessPaid Become a patron!⚠️
Same as Now Pet Detail, but for a specific species + breed.
{ "request": { "region": "us", "petSpecies": 145, "petBreed": 6, "period": "now" }, "result": [ ... ] }

Daily Pet Detail

Path/v1/region/:region/pets/:petSpecies/daily.json
Points5 points (9 uncompressed)
AccessFree ✅️

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
Points5 points (9 uncompressed)
AccessPaid Become a patron!⚠️
Same as Daily Pet Detail, but for a specific species + breed.
{ "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
Points3 points (7 uncompressed)
AccessFree ✅️

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
Points3 points (7 uncompressed)
AccessPaid 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
Points1 point (3 uncompressed)
AccessPaid 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
Points1 point
AccessFree ✅️
This returns the current price, availability, and auctions for a specific non-commodity item on this realm. The result includes two timestamps:
  • "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
Points1 point
AccessPaid 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
Points1 point
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessPaid 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
Points1 points (3 uncompressed)
AccessFree ✅️

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
Points1 points (3 uncompressed)
AccessPaid 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
Points1 point
AccessFree ✅️
This returns the current price, availability, and auctions for a specific pet on this realm. The result includes two timestamps:
  • "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
Points1 point
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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
Points3 points (5 uncompressed)
AccessFree ✅️

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
Points3 points (5 uncompressed)
AccessPaid 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.