Inventory

⚡ Batch Fetch Multiple Inventories with Doppler Phase Detection

Baseurl: https://www.steamwebapi.com/steam/api/inventory/batch?steam_ids=76561199146708568,76561198047543612&game=cs2&key=YOUR_API_KEY

Fetch inventories for up to 20 Steam IDs in a single request.

Returns an object keyed by Steam ID, each containing an array of items with prices and metadata.


Key features:

  • Up to 20 Steam IDs per request (comma-separated). Each ID = 1 credit, plus 1 with no_cache=1; trade_locked=1 or 3 adds 1 credit per ID, while trade_locked=4 adds 2.
  • First Steam page per ID — each inventory returns only its first Steam page, at most 2,000 assets. Use /steam/api/inventory with start_assetid for larger inventories.
  • Parallel processing for maximum speed.
  • Doppler phase detection — automatically detects the exact phase and replaces item image. Use with_phase_price=1 for phase-specific pricing.
  • Field selection — use select to reduce response size.
  • 11 currencies supported.
  • Private inventories return empty array or cached data.

Example:

GET /steam/api/inventory/batch?steam_ids=76561198100000000,76561198200000000&key=YOUR_KEY
get/steam/api/inventory/batch

Request

  • Base URL: https://www.steamwebapi.com
  • URL: https://www.steamwebapi.com/steam/api/inventory/batch
  • Auth: API key in query parameter key

Query parameters

keystring required
Example:your-api-key-here

Your API key from the dashboard. Required for authentication.

steam_idsstring required
Example:76561198100000000,76561198200000000

Comma-separated Steam IDs (max 20). Accepts steamid, steamid3, or steamid64 formats.

game'cs2' | 'dota2' | 'rust' | 'tf2' | 'steam'

Game short name.

selectstring
Example:markethashname,pricelatest,assetid

Comma-separated fields to include. Reduces response size.

currency'USD' | 'EUR' | 'GBP' | 'CNY' | 'JPY' | 'RUB' | 'BRL' | 'TRY' | 'PLN' | 'UAH' | 'KRW'

Currency for prices.

language'arabic' | 'bulgarian' | 'schinese' | 'tchinese' | 'czech' | 'danish' | 'dutch' | 'english' | 'finnish' | 'french' | 'german' | 'greek' | 'hungarian' | 'indonesian' | 'italian' | 'japanese' | 'koreana' | 'norwegian' | 'polish' | 'portuguese' | 'brazilian' | 'romanian' | 'russian' | 'spanish' | 'latam' | 'swedish' | 'thai' | 'turkish' | 'ukrainian' | 'vietnamese'

Language for item names.

no_cache'0' | '1'

Bypass the inventory cache. Costs +1 credit per ID.

trade_locked0 | 1 | 3 | 4

CS2 inventory contexts, independently per Steam ID: 0 = context 2 only (default); 1 = context 16 only; 3 = start both and return immediately when context 2 is usable, including context 16 only if already available and cancelling it otherwise; 4 = require both within the per-inventory request budget, retaining successful results and retrying missing contexts. Modes 1, 3, and 4 start with trading inventory. Modes 1 and 3 cost +1 credit per ID; mode 4 costs +2 per ID. Context 16 can expose recently received skins not yet visible in normal public inventory; reconstruction requires parse=1 on the first page (without start_assetid). This detection does not include newly received cases; normal context-2 cases remain included. Modes 1 and 4 never fall back to context-2-only public inventory. Mode 4 may use the last successful protected-item snapshot after live attempts fail, including with no_cache=1. Explicit nonzero modes require CS2 and state=active; historical database fallback modes are not supported because they cannot guarantee the requested contexts. The legacy try_first_seven_days_blocked_items option and own-inventory cookies are not supported by this batch endpoint.

with_no_tradable'0' | '1'

Include non-tradeable items.

with_phase_price'0' | '1'

CS2 Doppler items only. Replaces pricereal and pricerealmedian with phase-specific values from the selected markets, or all available third-party markets when markets is omitted. pricereal24h/7d/30d/90d remain null because these inventory horizon fields are not phase-scoped. Rollout-forward exact phase history is available through POST /steam/api/items/history; it does not populate the legacy inventory horizon fields. winloss/winlossprice become null because Steam has no phase-specific listing price. Only applies when a phase is detected and has a known price. Default: 0

sort'price_max' | 'price_min' | 'price_real_max' | 'price_real_min' | 'price_mix_max' | 'price_mix_min' | 'count' | 'name'

Sort items by criterion.

group'0' | '1'

Group identical items by market hash name.

marketsstring
Example:skinbaron,skinport,buff

Comma-separated markets for pricereal calculation.

production'0' | '1'

Set to 1 in production to remove info fields. Will be required in future.

format'json' | 'csv' | 'xml' | 'html' | 'gzip' | 'zip' | 'ndjson' | 'mysql' | 'mysql_with_table' | 'pgsql' | 'pgsql_with_table' | 'mongo'

Response format.

pretty'0' | '1'

Pretty-print JSON output.

Response

Batch inventories fetched successfully. Returns object keyed by Steam ID. Parsed CS2 items include tradeprotected and tradeprotectedmaxdays, using the same rounded-up observation-based upper bound from 0 to 7 days as the single-inventory endpoint.

unknown required

Changes

No recorded changes to this operation across all 1 revision of this API.