C_AuctionHouse.SendSearchQuery

From Warcraft Wiki
Jump to navigation Jump to search

Queries an item in the auction house.

C_AuctionHouse.SendSearchQuery(itemKey, sorts, separateOwnerItems [, minLevelFilter, maxLevelFilter])

Arguments

itemKey
ItemKey
Field Type Description
itemID number
itemLevel number? = 0
itemSuffix number? = 0
battlePetSpeciesID number? = 0
sorts
AuctionHouseSortType[]
Field Type Description
sortOrder Enum.AuctionHouseSortOrder?
reverseSort boolean?
Enum.AuctionHouseSortOrder
Value Field Description
0 Price
1 Name
2 Level
3 Bid
4 Buyout
5 TimeRemaining Only works for Owned auctions. Added in 9.0.1
separateOwnerItems
boolean
minLevelFilter
number? = 0
maxLevelFilter
number? = 0

Details

  • Triggers the respective event for an item/commodity:
ITEM_SEARCH_RESULTS_UPDATED -> C_AuctionHouse.GetItemSearchResultInfo()
COMMODITY_SEARCH_RESULTS_UPDATED -> C_AuctionHouse.GetCommoditySearchResultInfo()
  • Search queries are restricted to 100 calls per minute. These should not be used to query the entire auction house. See C_AuctionHouse.ReplicateItems()

Example

Sends a search query for  [Storm Silver Ore] when the button is pressed. Also prints results when manually browsing the AH.

local test_item = 5956 -- Blacksmith Hammer
local test_commodity = 152579 -- Storm Silver Ore

local btn = CreateFrame("Button", nil, UIParent, "UIPanelButtonTemplate")
btn:SetPoint("CENTER")
btn:SetSize(120, 40)
btn:SetText("Example")
btn:SetScript("OnClick", function(self, button)
	local itemKey = C_AuctionHouse.MakeItemKey(test_commodity)
	C_AuctionHouse.SendSearchQuery(itemKey, {}, false)
end)

local f = CreateFrame("Frame")

function f:ITEM_SEARCH_RESULTS_UPDATED(event, itemKey)
	for i = 1, C_AuctionHouse.GetNumItemSearchResults(itemKey) do
		local result = C_AuctionHouse.GetItemSearchResultInfo(itemKey, i)
		print(event, itemKey.itemID, i, result.auctionID, result.buyoutAmount)
	end
end

function f:COMMODITY_SEARCH_RESULTS_UPDATED(event, itemID)
	for i = 1, C_AuctionHouse.GetNumCommoditySearchResults(itemID) do
		local result = C_AuctionHouse.GetCommoditySearchResultInfo(itemID, i)
		print(event, itemID, i, result.quantity, result.auctionID, result.unitPrice)
	end
end

function f:OnEvent(event, ...)
	self[event](self, event, ...)
end

f:RegisterEvent("ITEM_SEARCH_RESULTS_UPDATED")
f:RegisterEvent("COMMODITY_SEARCH_RESULTS_UPDATED")
f:SetScript("OnEvent", f.OnEvent)

Addendum: for sorting it requires an array of AuctionHouseSortType. This sorts by price (ascending), and then level (descending).

local sorts = {
	{sortOrder = Enum.AuctionHouseSortOrder.Price, reverseSort = false},
	{sortOrder = Enum.AuctionHouseSortOrder.Level, reverseSort = true},
}

C_AuctionHouse.SendSearchQuery(itemKey, sorts, false)

Patch changes

Shadowlands Patch 9.1.0 (2021-06-29): Added minLevelFilter, maxLevelFilter arguments.
Battle for Azeroth Patch 8.3.0 (2020-01-14): Added.