Currency & Economy API (Retail — Patch 12.0.0)
Comprehensive reference for currency, auction house, store, token, trading post, mail, and trade APIs.
Source: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API Current as of: Patch 12.0.0 (Build 65655) — January 28, 2026 Scope: Retail only.
Scope
-
C_CurrencyInfo — Currency data, tracking, backpack display
-
Auction House — Listing, bidding, buying, selling, commodities
-
C_WowTokenPublic / C_WowTokenUI — WoW Token market
-
AccountStore / StorePublic — In-game shop
-
CatalogShop — Catalog shop system
-
C_PerksProgram — Trading Post (Trader's Tender)
-
BlackMarket — Black Market Auction House
-
TradeInfo — Player-to-player trading
-
MailInfo — Mailbox system
C_CurrencyInfo — Currency System
Currency Data
Function Returns Description
C_CurrencyInfo.GetCurrencyInfo(currencyType)
currencyInfo
Currency info by type
C_CurrencyInfo.GetCurrencyInfoFromLink(link)
currencyInfo
From hyperlink
C_CurrencyInfo.GetCurrencyIDFromLink(link)
currencyID
ID from hyperlink
C_CurrencyInfo.GetCurrencyLink(currencyType, amount)
link
Currency hyperlink
C_CurrencyInfo.GetCurrencyListSize()
size
Number of entries
C_CurrencyInfo.GetCurrencyListInfo(index)
info
Entry at index
C_CurrencyInfo.GetCurrencyListLink(index)
link
Link at index
Currency Info Fields
-
name — Currency name
-
description — Description text
-
currencyID — Unique ID
-
iconFileID — Icon texture
-
quantity — Current amount
-
maxQuantity — Max cap (0 = none)
-
canEarnPerWeek — Has weekly cap?
-
quantityEarnedThisWeek — Earned this week
-
maxWeeklyQuantity — Weekly max
-
totalEarned — Total ever earned
-
isTradeable — Can be traded?
-
quality — Item quality
-
isDiscovered — Has been discovered?
-
isShowInBackpack — Shown in Backpack?
Backpack & Tracking
Function Returns Description
C_CurrencyInfo.GetBackpackCurrencyInfo(index)
currencyData
Backpack slot
C_CurrencyInfo.GetNumBackpackCurrencies()
numSlots
Num backpack slots
C_CurrencyInfo.SetCurrencyBackpack(index, backpack)
— Toggle backpack
C_CurrencyInfo.IsCurrencyTracked(currencyID)
isTracked
Is tracked?
C_CurrencyInfo.SetCurrencyTracked(currencyID, tracked)
— Set tracked
Currency List Management
Function Returns Description
C_CurrencyInfo.ExpandCurrencyList(index, expand)
— Expand/collapse header
C_CurrencyInfo.IsCurrencyHeader(index)
isHeader
Is header?
C_CurrencyInfo.GetFactionGrantedByCurrency(currencyID)
factionID
Associated faction
C_CurrencyInfo.DoesCurrentFilterPassFilter(currencyID)
passes
Passes filter?
Gold Functions (Global)
Function Returns Description
GetMoney()
copper
Player's money in copper
GetCoinTextureString(copper)
text
Gold/silver/copper string
GetMoneyString(copper, ...)
text
Formatted money string
Auction House
Browse & Search
Function Returns Description
C_AuctionHouse.SearchForItemKeys(itemKeys, sorts)
— Search by item keys
C_AuctionHouse.SendBrowseQuery(query)
— Browse query
C_AuctionHouse.SendSearchQuery(itemKey, sorts, separateOwnerItems)
— Item search
C_AuctionHouse.GetBrowseResults()
browseResults
Browse results
C_AuctionHouse.GetNumItemSearchResults(itemKey)
numResults
Num search results
C_AuctionHouse.GetItemSearchResultInfo(itemKey, index)
resultInfo
Search result info
C_AuctionHouse.RefreshItemSearchResults(itemKey)
— Refresh search
C_AuctionHouse.GetFilterGroups()
filterGroups
Available filters
Commodities
Function Returns Description
C_AuctionHouse.SendSellSearchQuery(itemKey, sorts, separateOwnerItems)
— Commodity search
C_AuctionHouse.GetCommoditySearchResultInfo(itemID, index)
resultInfo
Commodity result
C_AuctionHouse.GetNumCommoditySearchResults(itemID)
numResults
Num commodity results
C_AuctionHouse.StartCommoditiesPurchase(itemID, quantity)
— Start commodity buy
C_AuctionHouse.ConfirmCommoditiesPurchase()
— Confirm commodity buy
C_AuctionHouse.CancelCommoditiesPurchase()
— Cancel commodity buy
C_AuctionHouse.GetCommodityQuote(itemID)
quote
Price quote
Listing & Selling
Function Returns Description
C_AuctionHouse.PostItem(itemLocation, duration, quantity, bid, buyout)
— List item
C_AuctionHouse.PostCommodity(itemLocation, duration, quantity, unitPrice)
— List commodity
C_AuctionHouse.GetItemKeyInfo(itemKey)
keyInfo
Item key info
C_AuctionHouse.MakeItemKey(itemID, itemLevel, itemSuffix, battlePetSpeciesID)
itemKey
Create item key
C_AuctionHouse.GetAvailablePostCount(itemLocation)
count
How many to list
C_AuctionHouse.CalculateItemDeposit(itemLocation, duration, quantity)
deposit
Deposit cost
C_AuctionHouse.GetQuoteDurationRemaining()
seconds
Quote time remaining
Bidding & Buying
Function Returns Description
C_AuctionHouse.PlaceBid(auctionID, bidAmount)
— Place bid
C_AuctionHouse.GetBidInfo(index)
bidInfo
Bid info
C_AuctionHouse.GetNumBids()
numBids
Active bids
C_AuctionHouse.HasFavorite(itemKey)
isFavorite
Is favorited?
C_AuctionHouse.SetFavoriteItem(itemKey, isFavorite)
— Set favorite
C_AuctionHouse.GetFavoriteItems()
itemKeys
All favorites
Own Auctions
Function Returns Description
C_AuctionHouse.GetNumOwnedAuctions()
numAuctions
Own auctions
C_AuctionHouse.GetOwnedAuctionInfo(index)
auctionInfo
Own auction info
C_AuctionHouse.CancelAuction(auctionID)
— Cancel auction
C_AuctionHouse.QueryOwnedAuctions(sorts)
— Query own auctions
Auction House State
Function Returns Description
C_AuctionHouse.IsAuctionHouseAvailable()
isAvailable
AH available?
C_AuctionHouse.CloseAuctionHouse()
— Close AH
C_AuctionHouse.GetAuctionHouseTimeLeftBand(timeLeftEnum)
seconds
Time left
C_AuctionHouse.ReplicateItems()
— Full AH scan
C_AuctionHouse.GetNumReplicateItems()
count
Replicate count
C_AuctionHouse.GetReplicateItemInfo(index)
info
Replicate item
C_WowTokenPublic — WoW Token
Function Returns Description
C_WowTokenPublic.GetCurrentMarketPrice()
price
Gold price
C_WowTokenPublic.GetGuaranteedPrice()
price
Guaranteed price
C_WowTokenPublic.UpdateMarketPrice()
— Request update
C_WowTokenPublic.GetCommerceSystemStatus()
status
System status
C_WowTokenPublic.BuyToken()
— Buy token (gold)
C_WowTokenPublic.SellToken(auctionID)
— Sell token
AccountStore / StorePublic — In-Game Shop
Function Returns Description
C_StorePublic.IsEnabled()
enabled
Shop enabled?
C_StorePublic.IsDisabledByParentalControls()
disabled
Parental block?
C_StorePublic.DoesGroupHavePurchaseableProducts(group)
hasPurchaseable
Has products?
C_PerksProgram — Trading Post
Function Returns Description
C_PerksProgram.GetAvailableActivities()
activities
Current activities
C_PerksProgram.GetPendingChestRewards()
rewards
Pending rewards
C_PerksProgram.GetTimeRemaining()
seconds
Rotation time left
C_PerksProgram.GetCurrencyAmount()
amount
Trader's Tender
C_PerksProgram.GetVendorItemInfo(perksVendorItemID)
itemInfo
Vendor item
C_PerksProgram.GetAvailableVendorItemIDs()
itemIDs
Current rotation
C_PerksProgram.GetFrozenPerksVendorItemInfo()
info
Frozen item
C_PerksProgram.RequestPurchase(perksVendorItemID)
— Purchase item
C_PerksProgram.RequestRefund(perksVendorItemID)
— Refund item
C_PerksProgram.GetDraggedPerksVendorItemInfo()
itemInfo
Dragged item
C_PerksProgram.IsFrozenItem(perksVendorItemID)
isFrozen
Is frozen?
C_PerksProgram.SetFrozenPerksVendorItem(perksVendorItemID)
— Freeze item
C_PerksProgram.ClearFrozenPerksVendorItem()
— Unfreeze
C_PerksProgram.GetPerksVendorCategoryIDs()
categoryIDs
Category IDs
C_PerksProgram.GetPerksVendorCategoryInfo(categoryID)
categoryInfo
Category info
Black Market
Function Returns Description
C_BlackMarket.GetNumItems()
numItems
Current BMAH items
C_BlackMarket.GetItemInfoByIndex(index)
info
BMAH item info
C_BlackMarket.GetHotItem()
info
Hot item of the day
C_BlackMarket.ItemPlaceBid(index, amount)
— Place BMAH bid
C_BlackMarket.RequestItems()
— Request item list
C_BlackMarket.IsViewOnly()
isViewOnly
View-only mode?
Trade (Player-to-Player)
Function Returns Description
InitiateTrade(unit)
— Start trade
AcceptTrade()
— Accept trade
CancelTrade()
— Cancel trade
AddTradeMoney()
— Add gold offer
SetTradeMoney(copper)
— Set gold amount
GetTargetTradeMoney()
copper
Their gold offer
GetPlayerTradeMoney()
copper
Your gold offer
GetTradeTargetItemInfo(slotIndex)
name, texture, quantity, quality, isUsable, enchant
Their item
GetTradePlayerItemInfo(slotIndex)
name, texture, quantity, quality, isUsable, enchant
Your item
ClickTradeButton(slotIndex)
— Click trade slot
GetNumTradeItems()
numPlayerItems, numTargetItems
Item counts
Mail System
Function Returns Description
GetInboxNumItems()
numItems, totalItems
Inbox count
GetInboxHeaderInfo(index)
packageIcon, stationeryIcon, sender, subject, money, CODAmount, daysLeft, hasItem, wasRead, wasReturned, textCreated, canReply, isGM
Mail header
GetInboxText(index)
bodyText, stationeryBG, stationeryBGR, stationeryBGG, stationeryBGB, color
Mail body
GetInboxItem(index, itemIndex)
name, itemID, texture, count, quality, canUse
Attachment
GetInboxItemLink(index, itemIndex)
link
Attachment link
TakeInboxItem(index, itemIndex)
— Take attachment
TakeInboxMoney(index)
— Take gold
TakeInboxTextItem(index)
— Take text item
DeleteInboxItem(index)
— Delete mail
ReturnInboxItem(index)
— Return mail
AutoLootMailItem(index)
— Auto-loot all
InboxItemCanDelete(index)
canDelete
Can delete?
SendMail(recipient, subject, body)
— Send mail
SetSendMailMoney(copper)
— Set gold to send
SetSendMailCOD(copper)
— Set COD amount
GetSendMailPrice()
cost
Sending cost
GetSendMailItem(index)
name, texture, count, quality
Attached item
GetSendMailItemLink(index)
link
Attached link
ClickSendMailItemButton(itemIndex, clearItem)
— Add/remove attachment
SendMailCanSend()
canSend
Can send?
Common Patterns
Display Currency with Cap
local function ShowCurrency(currencyID) local info = C_CurrencyInfo.GetCurrencyInfo(currencyID) if info then local text = info.name .. ": " .. info.quantity if info.maxQuantity > 0 then text = text .. " / " .. info.maxQuantity end if info.canEarnPerWeek and info.maxWeeklyQuantity > 0 then text = text .. " (Weekly: " .. info.quantityEarnedThisWeek .. "/" .. info.maxWeeklyQuantity .. ")" end print(text) end end
Auction House Search
-- Register for results local f = CreateFrame("Frame") f:RegisterEvent("ITEM_SEARCH_RESULTS_UPDATED") f:SetScript("OnEvent", function(self, event, itemKey, ...) local numResults = C_AuctionHouse.GetNumItemSearchResults(itemKey) for i = 1, numResults do local result = C_AuctionHouse.GetItemSearchResultInfo(itemKey, i) if result then print(result.buyoutAmount, "copper -", result.quantity, "available") end end end)
-- Initiate search local itemKey = C_AuctionHouse.MakeItemKey(12345) -- itemID C_AuctionHouse.SendSearchQuery(itemKey, {}, false)
Check WoW Token Price
C_WowTokenPublic.UpdateMarketPrice()
local f = CreateFrame("Frame") f:RegisterEvent("TOKEN_MARKET_PRICE_UPDATED") f:SetScript("OnEvent", function() local price = C_WowTokenPublic.GetCurrentMarketPrice() if price then print("WoW Token: " .. GetCoinTextureString(price)) end end)
Key Events
Event Payload Description
CURRENCY_DISPLAY_UPDATE
currencyType, quantity, quantityChange, quantityGainSource, quantityLostSource Currency changed
AUCTION_HOUSE_SHOW
— AH opened
AUCTION_HOUSE_CLOSED
— AH closed
AUCTION_HOUSE_BROWSE_RESULTS_UPDATED
— Browse results ready
ITEM_SEARCH_RESULTS_UPDATED
itemKey Item search ready
COMMODITY_SEARCH_RESULTS_UPDATED
itemID Commodity search ready
AUCTION_HOUSE_NEW_RESULTS_RECEIVED
itemKey New results
ITEM_SEARCH_RESULTS_ADDED
itemKey Result added
AUCTION_HOUSE_AUCTION_CREATED
auctionID Auction posted
AUCTION_CANCELED
auctionID Auction canceled
TOKEN_MARKET_PRICE_UPDATED
result Token price updated
TOKEN_STATUS_CHANGED
— Token status changed
PERKS_PROGRAM_CURRENCY_REFRESH
— Trader's Tender updated
PERKS_PROGRAM_PURCHASE_SUCCESS
— Trading Post purchase
PERKS_PROGRAM_SET_FROZEN_ITEM
— Item frozen
MAIL_INBOX_UPDATE
— Inbox updated
MAIL_SEND_SUCCESS
— Mail sent
MAIL_SHOW
— Mailbox opened
MAIL_CLOSED
— Mailbox closed
TRADE_SHOW
— Trade window opened
TRADE_CLOSED
— Trade ended
TRADE_ACCEPT_UPDATE
playerAccept, targetAccept Accept state
TRADE_MONEY_CHANGED
— Gold offer changed
TRADE_PLAYER_ITEM_CHANGED
slotIndex Player item changed
TRADE_TARGET_ITEM_CHANGED
slotIndex Target item changed
BLACK_MARKET_ITEM_UPDATE
— BMAH items updated
BLACK_MARKET_OUTBID
— Outbid on BMAH
Gotchas & Restrictions
-
Auction House hardware event — Posting, buying, and bidding require hardware events (user clicks).
-
Commodity vs. item — Commodities (stackable) use a different API path than equipment/unique items.
-
AH throttling — Searches are rate-limited. Rapid queries get throttled by the server.
-
Mail COD — COD mail auto-deducts gold when attachment is taken. Test with InboxItemCanDelete() .
-
GetMoney() returns copper — Divide by 100 for silver, 10000 for gold.
-
Currency caps — Always check maxQuantity and maxWeeklyQuantity before displaying progress.
-
WoW Token price is async — Call UpdateMarketPrice() then wait for TOKEN_MARKET_PRICE_UPDATED .
-
ReplicateItems() is slow — Full AH scan is expensive. Use sparingly and handle results incrementally.