Skip to content
API

Team Fortress 2 developer API

TF2 API for backpacks and item prices

Read a public Team Fortress 2 backpack by SteamID64, then search or quote saved item prices without scanning that backpack again. AppID 440 uses inventory context 2. Grouped market prices are estimates for unusual items.

game=tf2Steam AppID 440 / context 2

Updated

tf2 inventory request
curl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/inventory" --data-urlencode "steam_id=76561198090744629" --data-urlencode "game=tf2" --data-urlencode "top=0"

Choose the endpoint for the data you need

One server-side WOK key authenticates every route below. An inventory request depends on Steam visibility; a saved catalog read does not depend on a player's profile.

TaskWOK requestResponse to check
Read public owned itemsGET /v1/inventory?game=tf2status, items, items_total, unpriced and meta.cache_age.
Browse matching market namesGET /v1/items?game=tf2&q=...Source-specific items[].prices[], market_hash_name and next_cursor.
Quote one exact itemGET /v1/price?game=tf2&name=...Selected price, source, sources and updated_at.
Read observed daily historyGET /v1/price-history?game=tf2&name=...Source and returned OHLC points; unobserved days are absent.
Revalue an active inventory snapshotPOST /v1/inventories with refresh_prices:trueUse local prices without another Steam scan; an expired snapshot returns a per-pair cache miss.

The catalog covers named items WOK has observed; it does not promise a current quote for every item or a complete past series. Read the history coverage rules before using sparse data in a chart.

Run an inventory read, catalog search and item quote

Set WOK_API_KEY on your server. The sample SteamID and item name show valid request syntax; visibility and saved price coverage can change.

Public inventory: all grouped rows
curl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/inventory" --data-urlencode "steam_id=76561198090744629" --data-urlencode "game=tf2" --data-urlencode "top=0"
Search saved catalog
curl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/items" --data-urlencode "game=tf2" --data-urlencode "q=Mann Co. Supply Crate Key" --data-urlencode "limit=50"
Quote one exact market name
curl --fail-with-body -H "Authorization: Bearer $WOK_API_KEY" --get "https://woksteamapi.com/v1/price" --data-urlencode "game=tf2" --data-urlencode "name=Mann Co. Supply Crate Key"

q is a substring search, so compare market_hash_name exactly and follow next_cursor. name in the quote route is exact and returns 404 if WOK has no saved quote. Both catalog endpoints read local observations; neither scans a player inventory or forces a live market fetch.

How to use a TF2 backpack estimate without hiding uncertainty

A public backpack read tells you which grouped items WOK observed. Saved price rows describe market names and sources, not every attribute of one unusual item.

Which key to use for WOK and backpack.tf

WOK requests use the WOK API key from your Account, sent from your server in Authorization: Bearer. You do not supply a separate backpack.tf API key to read a TF2 inventory or select a saved backpacktf quote through WOK.

A direct backpack.tf integration has its own credentials and access rules. WOK does not issue or validate those keys, and a WOK key cannot authenticate a request to backpack.tf. Never send your provider key to WOK. The backpacktf source name selects a saved WOK observation; it is not a credential or a live provider request. Moving from a direct integration? Compare both in the backpack.tf API alternative guide.

WOK's optional backpack.tf importer reads Unique quality 6, Tradable/Craftable price rows and converts metal or keys to USD using rates in the feed. It does not import Strange or Unusual quality prices from that feed, appraise effects or promise a quote for every item. Another accepted source may price a market name; inspect the returned source and timestamp.

Set top=0 for all grouped item rows. Show items_total, unpriced and total together so a partial quote cannot appear to be a complete backpack appraisal.

For each priced item, read pricesource and priceupdatedat. Auto mode prefers a valid backpack.tf observation when one exists; source coverage may differ for keys, crates, unusuals and other items.

Keep effects and instance attributes separate from the grouped market estimate. When a buyer needs a price for one exact item, use specialist appraisal or additional item metadata; do not present pricemedian as a guaranteed sale amount.

Request a saved backpack.tf quote without fallback

curl --fail-with-body --max-time 30 --get "https://woksteamapi.com/v1/price" \
  -H "Authorization: Bearer $WOK_API_KEY" \
  --data-urlencode "game=tf2" \
  --data-urlencode "name=Mann Co. Supply Crate Key" \
  --data-urlencode "price_source=backpacktf" \
  --data-urlencode "strict=1"

strict=1 prevents another source from replacing the selected quote. Accept a value only when price_status=available, source=backpacktf and its updated_at suits your use. A missing saved item returns HTTP 404; a saved item with no usable selected quote can return HTTP 200 with price_status=unavailable. Neither is a zero-value appraisal.

For a one-off TF2 inventory check, open the public inventory checker and choose TF2. It is a separate manual lookup, with its published free limit and Steam visibility requirements; it does not require you to obtain a backpack.tf provider key.

TF2 backpack response fieldsTry a public backpack manuallyMarket source meaningsRead a roster in batches

Read status and freshness before displaying a value

When available, auto valuation prefers an accepted backpack.tf observation, then other accepted saved sources. Check items[].pricesource and priceupdatedat; a missing backpack.tf quote can lead to another source or an unpriced item.

A native inventory may return HTTP 200 with status=private, notfound, limited or error. Do not display its total as a zero-value backpack. Authentication, quota and request validation have their own HTTP errors.

meta.cache_age describes the inventory snapshot. items[].priceupdatedat describes the selected saved price observation. These ages can differ because a cache hit can revalue the same item list locally.

The USD total includes only matched, counted items under WOK's value rules. Show unpriced and individual pricesource fields; market prices are estimates, not guaranteed sale proceeds.

TF2 inventory fields and status referenceSteam Market source guidePrice quote and batch referenceOpenAPI contractRequest quotas