Skip to content
API

Steam Community inventory

Steam Community inventory API for cards and more

Use AppID 753 for a public Steam Community inventory. Its context 6 includes cards, backgrounds and emoticons, not just cards. WOK returns grouped names and trade state but does not provide catalog prices or a card-only filter for this app.

GET /v1/inventory?game=753Bearer authentication

Updated

curlWOK API
curl --fail-with-body \
  -H "Authorization: Bearer $WOK_API_KEY" \
  "https://woksteamapi.com/v1/inventory?steam_id=76561198090744629&game=753&top=0"
AppID 753full Community inventory, context 6
Read-onlypublic inventory lookup
Item typescards, backgrounds and emoticons
Explicitmissing prices stay missing

Read cards from the full Steam Community inventory

game=753 selects Steam AppID 753 and context 6. That context contains trading cards alongside profile backgrounds, emoticons and other Community items. The quickstart uses top=0 so a client-side card filter sees every grouped row instead of only the first ten.

Check status before reading items: private means unavailable ownership, while empty means the public Community inventory returned no items.

For a card-only view, inspect each Steam-supplied items[].type and markethashname in your client. Type text can vary or be empty; confirm your filter against actual returned items. WOK does not expose a server-side card-only filter or determine completed sets.

This numeric AppID has no WOK price catalog. pricemedian=null, unpriced and total=0 describe missing valuation, not worthless cards. refresh_prices=1 is unavailable for game=753.

AppID and context explainedInventory status and cache rulesCommunity inventory response

Quickstart

Use WOK from a trusted server. Keep the API key outside browser bundles and public repositories.

curlWOK API
curl --fail-with-body \
  -H "Authorization: Bearer $WOK_API_KEY" \
  "https://woksteamapi.com/v1/inventory?steam_id=76561198090744629&game=753&top=0"
JavaScript (Node.js)WOK API
// Node.js: keep the API key on your server.
const url = new URL("https://woksteamapi.com/v1/inventory");
url.search = new URLSearchParams({
  steam_id: "76561198090744629",
  game: "753",
  top: "0"
});
const response = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.WOK_API_KEY}` }
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const inventory = await response.json();
PythonWOK API
import os
import requests

response = requests.get(
    "https://woksteamapi.com/v1/inventory",
    headers={"Authorization": f"Bearer {os.environ['WOK_API_KEY']}"},
    params={
        "steam_id": "76561198090744629",
        "game": "753",
        "top": 0,
    },
    timeout=30,
)
response.raise_for_status()
inventory = response.json()

Response example

The values below illustrate the response shape. Field names and types match the public contract. The example card name and type are illustrative; filter actual returned items using their Steam-supplied type.

JSON

application/json
{
  "steamid": "76561198090744629",
  "game": "app753",
  "status": "ok",
  "total": 0.0,
  "items_total": 2,
  "sellable": 2,
  "untradable": 0,
  "untradable_value": 0.0,
  "tradelocked": 0,
  "tradelocked_value": 0.0,
  "unpriced": 2,
  "items": [
    {
      "markethashname": "Example Community trading card",
      "count": 2,
      "game": "app753",
      "type": "Trading Card",
      "tradable": 1,
      "marketable": 1,
      "pricemedian": null,
      "pricesource": "",
      "priceupdatedat": null,
      "prices": {}
    }
  ],
  "meta": {
    "cached": true,
    "shared": false,
    "lane": "cache",
    "saved": false,
    "ms": 0,
    "bytes": 0,
    "paid_bytes": 0,
    "upstream_attempts": 0,
    "detail": "",
    "cache_age": 42,
    "cache_ttl": 1800,
    "price_source": "steam"
  }
}

Response schema

Stable fields for typed clients, storage and error handling.

Steam Community inventory API for cards and more response schema
FieldTypeMeaning
steamidstringCanonical 17-digit SteamID64.
gamestringDocumented key: cs2, rust, tf2, dota2, pubg, sandbox, unturned or payday2. Numeric Steam appids are also accepted and returned as app<appid> without catalog pricing.
statusstringok, empty, private, notfound, limited or error.
totalnumberPriced sellable inventory total in USD.
items_totalintegerNumber of item instances before top truncation.
sellableintegerTradable and marketable item instances, including unpriced ones; total sums matched values.
untradableintegerItem instances excluded from sellable value.
untradable_valuenumberValue of excluded untradable items in USD.
tradelockedintegerItem instances currently trade locked.
tradelocked_valuenumberValue of trade-locked items in USD.
unpricedintegerInstances without a usable price.
items[]arrayItems with market names, count, trade state, prices and optional inspect links.
items[].markethashnamestringCanonical price-catalog market hash name.
items[].marketnamestringSteam market display name when supplied.
items[].typestringSteam-supplied item type text; not a WOK-normalized category.
items[].countintegerGrouped item instance count.
items[].tradableintegerSteam tradability flag, 0 or 1.
items[].marketableintegerSteam marketability flag, 0 or 1.
items[].tradelockedbooleanWhether the grouped item is trade locked.
items[].tradelockuntilnumber|nullUnix expiry when a trade lock is known.
items[].pricemediannumber|nullSelected source median price in USD.
items[].pricesourcestringSelected catalog source; empty when the item is unpriced.
items[].priceupdatedatnumber|nullSelected source observation time, separate from inventory cache age.
items[].pricesobjectPer-source USD prices.
items[].inspect_linksarrayOptional CS2 inspect actions.
metaobjectCache age/TTL, cached/shared flags, timing, bytes, lane and upstream-attempt metadata.
meta.cachedbooleanWhether the inventory snapshot was reused.
meta.sharedbooleanWhether this request joined an in-flight singleflight fetch.
meta.cache_ageintegerSnapshot age in seconds.
meta.cache_ttlintegerApplied freshness window in seconds.

Limits and error behavior

Rules clients should handle explicitly in production.

AppID 753 is accepted as a numeric inventory-only target. WOK does not maintain card catalog prices or support refresh_prices=1 for this target; total is the sum of matched prices and remains 0 when all items are unpriced. Check unpriced and items[].pricemedian before interpreting that total as an inventory value.

The Steam inventory must be public and the profile must expose the Community inventory to the upstream endpoint.

Card sets, foil variants and marketability are represented by Steam's market names and flags; WOK does not infer collection completion or card-set value.

Cache and freshness semantics

How to tell whether data was reused, shared or refreshed.

Successful inventory snapshots use a 1,800-second default TTL. Negative defaults are 21,600 seconds for empty, 3,600 seconds for private and 600 seconds for not found.

For authenticated inventory responses that reach validation/result handling, read X-Wok-Cache-Age and X-Wok-Cache-TTL when present; authentication and quota errors may omit them.

Identical concurrent misses are coalesced. A waiter receives X-Wok-Singleflight: 1 and does not start another Steam inventory fetch.

This numeric AppID supports inventory reads, not WOK catalog repricing. A normal request may reuse a fresh cached inventory; no_cache=1 requests a new Steam scan subject to upstream limits.

Frequently asked questions

Direct answers about access, freshness and result semantics.

Which AppID is used for Steam trading cards?

Use game=753. WOK reads the entire Steam Community context 6 and returns game=app753; the result can also include backgrounds and emoticons.

Does a card inventory response always include a price?

No. AppID 753 is inventory-only coverage. Each unmatched item has pricemedian=null and contributes to unpriced. A total of 0 when all items are unpriced does not mean those cards have no market value.

Do I need a Steam login?

No. The profile and Community inventory must simply be public. WOK never asks for a Steam password or Guard code.