Tracking auction prices in World of Warcraft is essential for any serious gold maker. While addons like TradeSkillMaster (TSM) and Auctionator provide robust market data, many players want a lightweight, always-visible display that updates in real time without opening the auction house. WeakAuras fills this gap perfectly. By creating custom auras that pull data from TSM price sources or the Undermine Journal, you can see market values, region-wide averages, and price fluctuations directly on your screen, anywhere in the game.
This article covers everything you need to build and use WeakAuras for auction price tracking. We'll explain the core concepts, provide ready-to-use string examples, and show you how to integrate them with existing gold-making workflows. Whether you're a sniper, flipper, farmer, or crafter, these auras will help you make faster, more informed decisions.
Understanding WeakAuras and TSM Price Sources
WeakAuras is a powerful UI customization addon that lets you create custom displays, called auras, triggered by events, conditions, or data. For auction price tracking, the most common approach is to use TSM's price sources as a data feed. TSM exposes several price variables that WeakAuras can read directly via the WeakAuras custom trigger system. The key price sources include:
- DBMarket, The 14-day moving average market price on your realm.
- DBRegionMarketAvg, The region-wide 14-day moving average market price.
- DBMinBuyout, The current minimum buyout price on your realm.
- DBRegionMinBuyoutAvg, The region-wide average of minimum buyout prices.
- VendorSell, The price you can sell the item to a vendor.
- DestroyValue, The value from disenchanting or milling an item.
These values are updated whenever you scan the auction house or use TSM's desktop application for automatic data syncing. Once loaded into your saved variables, WeakAuras can access them using the TSM_API functions. For example, TSM_API.GetItemPrice('item:12345', 'DBMarket') returns the DBMarket price of item ID 12345. You can embed these Lua function calls directly in a WeakAuras custom text display.
Setting Up Your First Price-Tracking Aura
To create a basic aura that shows the DBMarket price of a specific item, follow these steps:
- Open WeakAuras (
/wa) and click New. - Choose Text display type.
- Set the trigger to Custom.
- In the Custom Trigger tab, paste the following Lua code into the Event(s) field:
WEAKAURAS_SCAN_FINISHED, TSM_API_DATA_UPDATED - In the Custom Variables field, add:
price = TSM_API.GetItemPrice('item:1529', 'DBMarket')(replace 1529 with your item ID). - In the Display Text field, use:
%price%or format it with%price|Gold%to show gold formatting. - Click Done and position the aura on your screen.
This aura will update every time you scan the auction house or when TSM syncs new data. For a more advanced version, you can show multiple price sources using a table:
local itemID = 1529
local market = TSM_API.GetItemPrice('item:'..itemID, 'DBMarket')
local minBuyout = TSM_API.GetItemPrice('item:'..itemID, 'DBMinBuyout')
local regionAvg = TSM_API.GetItemPrice('item:'..itemID, 'DBRegionMarketAvg')
return 'Market: '..market..' | Min: '..minBuyout..' | Region: '..regionAvgPlace this code in the Custom Variables section, and set the display text to %info% (or whatever variable name you assign).
Tracking Multiple Items with a Single Aura
Rather than creating one aura per item, you can build a single aura that displays prices for a list of items. This is especially useful for farmers and crafters who need to monitor a set of raw materials or finished goods. Use a table to define your item IDs and iterate over them:
local items = {
{id=1529, name='Jade'},
{id=2770, name='Copper Ore'},
{id=2772, name='Iron Ore'},
}
local output = ''
for _, item in ipairs(items) do
local price = TSM_API.GetItemPrice('item:'..item.id, 'DBMarket')
if price then
output = output..item.name..': '..price..'g\n'
else
output = output..item.name..': N/A\n'
end
end
return outputSet the display text to %output% and choose a font size that accommodates the list. This aura will show you at a glance whether ore prices are rising or falling relative to your crafting costs.
Using WeakAuras for Sniping and Flipping
Snipers and flippers rely on seeing underpriced auctions instantly. While dedicated sniping addons like TSM's Sniper or Auctionator's quick scan are the primary tools, a WeakAuras overlay can provide supplementary information. For example, you can create an aura that compares the current DBMinBuyout of a high-value item to its DBRegionMarketAvg. If the min buyout is significantly lower than the region average, the aura changes color or displays an alert.
Here's a conditional trigger example for a sniper aura:
local itemID = 168185 -- example: Shadowghast Ingot
local min = TSM_API.GetItemPrice('item:'..itemID, 'DBMinBuyout')
local region = TSM_API.GetItemPrice('item:'..itemID, 'DBRegionMarketAvg')
if min and region and min < region * 0.8 then
return true, 'Buyout: '..min..'g (80% of region avg: '..region..'g)'
else
return false
endThis aura only shows when the item is listed at 80% or less of the region average. You can expand it to check multiple items by putting them in a table and looping through. This approach works well alongside basic flipping strategies where you want to catch mispriced goods.
Integrating with Undermine Journal Data
The Undermine Journal (TUJ) provides historical and real-time auction data for every realm and region. While TSM's API covers realm and region prices, TUJ offers additional metrics like sale rate, daily volume, and price history. WeakAuras cannot directly query TUJ's website inside the game, but you can import TUJ data manually using custom strings or by running a Lua script that reads from the TUJ saved variables if you use the TUJ addon.
Alternatively, you can use the Undermine Journal website to look up an item's sale rate and then hardcode a threshold into your WeakAuras. For example, if TUJ shows that a certain enchant has a sale rate of 0.2 (20% chance to sell per day), you might set your aura to only display that enchant when its DBMinBuyout is below a certain copper-per-sale-rate ratio.
To fetch TUJ data programmatically, you would need to use the TUJ_API if available. As of 2025, the TUJ addon does not expose a public API for WeakAuras, but you can still use the Custom Trigger with TUJ_UPDATE_EVENT (if you have the addon installed) and then parse the saved variables. This is an advanced technique and not recommended for beginners. Most players find that TSM's region data combined with TUJ's website is sufficient.
Price Alerts for Crafting and Flipping
Crafters can use WeakAuras to alert them when material prices drop below a profitable threshold. For example, if you craft Potion of Unbridled Fury (item ID 191381), you know the recipe requires 5 Hochenblume (item ID 191467) and 5 Bubble Poppy (item ID 191469). You can calculate the break-even point and create an aura that turns green when the material cost is low enough to make a profit.
Lua code for a profit-check aura:
local potionID = 191381
local herb1ID = 191467
local herb2ID = 191469
local potionPrice = TSM_API.GetItemPrice('item:'..potionID, 'DBMarket')
local herb1Price = TSM_API.GetItemPrice('item:'..herb1ID, 'DBMarket')
local herb2Price = TSM_API.GetItemPrice('item:'..herb2ID, 'DBMarket')
if potionPrice and herb1Price and herb2Price then
local cost = (herb1Price * 5) + (herb2Price * 5)
local profit = potionPrice - cost
if profit > 0 then
return true, 'Profit: '..profit..'g'
else
return false, 'No profit (cost: '..cost..'g, sell: '..potionPrice..'g)'
end
else
return false
endThis aura will show only when the crafted item is profitable based on current market prices. You can extend it to multiple recipes by using a loop. For more on crafting profitability, see our Alchemy Transmute Profits guide.
Visual Customization and Display Options
WeakAuras offers extensive visual customization. For price tracking, the most useful options are:
- Text, Format price strings with
%price|Gold%for gold, silver, copper display. - Color, Use conditional coloring: green when price is low, red when high, yellow when average. You can set this in the Display tab under Color using custom Lua conditions.
- Icon, Show the item icon by using
%icon%in the display text, or set the icon manually to the item's texture path. - Progress Bar, Visualize a price relative to a historical range. For example, a bar that fills from left to right as DBMarket approaches DBRegionMaxBuyout.
- Group, Combine multiple auras into a dynamic group that shows or hides based on conditions. This is useful for creating a dashboard of tracked items.
To add an icon to your text aura, include %icon% in the display text field and set the Icon source to Custom with the item's icon path (e.g., Interface\Icons\INV_Ore_Platinum_01). You can find icon paths on Wowhead or TUJ.
Performance Considerations
WeakAuras that call TSM_API functions repeatedly can cause lag if you have many auras or if they trigger on every event. To minimize performance impact:
- Use a single aura with a table of items instead of multiple individual auras.
- Limit update frequency by adding a cooldown in the custom trigger:
if aura_env.lastUpdate and GetTime() - aura_env.lastUpdate < 60 then return false end aura_env.lastUpdate = GetTime(). This ensures the aura only updates once per minute. - Only trigger on relevant events. Use
WEAKAURAS_SCAN_FINISHEDandTSM_API_DATA_UPDATEDrather than every frame. - Avoid using
forloops with hundreds of items in the custom trigger. If you need to track many items, consider using TSM's built-in group price display or the Auctionator vs TSM comparison to choose the right tool.
For most players, 10-20 items in a single aura is perfectly fine. If you need more, split them into multiple auras that update less frequently.
Example: Complete Aura for Ore Farming Profitability
Let's build a practical example for a miner who farms Serevite Ore (item ID 168185) and Draconium Ore (item ID 168186). The aura will show the current DBMarket price of each ore, the vendor sell price of the smelted bars, and a profit-per-hour estimate based on a user-defined farming rate.
Create a new Text aura with the following custom trigger:
local ore1ID = 168185
local ore2ID = 168186
local bar1ID = 168187 -- Serevite Bar
local bar2ID = 168188 -- Draconium Bar
local ore1Price = TSM_API.GetItemPrice('item:'..ore1ID, 'DBMarket')
local ore2Price = TSM_API.GetItemPrice('item:'..ore2ID, 'DBMarket')
local bar1Vendor = TSM_API.GetItemPrice('item:'..bar1ID, 'VendorSell')
local bar2Vendor = TSM_API.GetItemPrice('item:'..bar2ID, 'VendorSell')
-- Assume 200 ore per hour farming rate (adjust as needed)
local orePerHour = 200
local profitOre = (ore1Price or 0) * orePerHour
local profitBar = (bar1Vendor or 0) * (orePerHour / 2) -- 2 ore = 1 bar
local output = 'Serevite Ore: '..(ore1Price and ore1Price..'g' or 'N/A')..'\n'
output = output..'Draconium Ore: '..(ore2Price and ore2Price..'g' or 'N/A')..'\n'
output = output..'Serevite Bar vendor: '..(bar1Vendor and bar1Vendor..'g' or 'N/A')..'\n'
output = output..'Draconium Bar vendor: '..(bar2Vendor and bar2Vendor..'g' or 'N/A')..'\n'
output = output..'Est. gold/hr (ore): '..profitOre..'g'
return outputSet the display text to %output%. This aura gives you a quick readout of raw material prices versus vendor selling, helping you decide whether to sell ore or smelt into bars. For more detailed farming routes, see our Ore Farming Loop (Shadowlands) and Herb Farming Route (Dragonflight) guides.
Combining WeakAuras with Other Gold-Making Addons
WeakAuras works alongside your existing addon setup. You can use it to supplement TSM by showing a small price display while TSM handles the heavy lifting of operations and post scans. Many gold makers run WeakAuras for at-a-glance info and TSM for crafting and mailing.
If you prefer a simpler addon like Auctionator, you can still use WeakAuras to show region-wide averages that Auctionator does not provide by default. The key is that WeakAuras reads from TSM's data cache, so you must have TSM installed even if you don't use its full suite. TSM can be installed in