You can parse the item level out of the tooltip, that is accurate. That's what we're all doing at this point.
Lua Code:
function mnkDurability.GetItemLevel(slotID)
local tip = CreateFrame("GameTooltip", "scanTip", UIParent, "GameTooltipTemplate")
tip:ClearLines()
tip:SetOwner(UIParent,"ANCHOR_NONE")
tip:SetInventoryItem("player", slotID)
for i=1, 5 do
local l = _G["scanTipTextLeft"..i]:GetText()
if l and l:find('Item Level') then
local _, i = string.find(l, 'Item Level%s%d')
-- check for boosted levels ie Chromeie scenarios.
local _, x = string.find(l, " (", 1, true)
--print(t, ' ', x)
if x then
return string.sub(l, i, x-2) or '-'
end
return string.sub(l, i) or -'-'
end
end
return '-'
end