Developer API

Steam Inventory API

Pull any Steam user's inventory through a single REST endpoint — without the rate-limit drama. Batch support for up to 100 inventories per request.

Endpoints

All endpoints return JSON, accept the same auth header, and degrade with a normalised error envelope.

GET /steam/api/inventory
GET /steam/api/inventory/batch

Steam Inventory API — quickstart

Same auth header as every other endpoint we ship. Get an API key from the dashboard and you're querying inside two minutes.

  • Single auth header, JSON response.
  • Rate limits scale with your plan tier.
  • Full schema in the API reference.
API Request
# curl with API key
curl "https://www.steamwebapi.com/steam/api/inventory?key=$KEY"
# PHP
$res = file_get_contents('https://www.steamwebapi.com/steam/api/inventory?key=' . $KEY);
$data = json_decode($res, true);
# Node.js
const r = await fetch(`https://www.steamwebapi.com/steam/api/inventory?key=${KEY}`);
const data = await r.json();

About this API

Fetching Steam inventories the naive way ends in 429s within minutes. The Steam Inventory API does the heavy lifting — request buffering, smart caching, retries, response normalisation — you just call /steam/api/inventory with a SteamID and a game ID and get back a parsed inventory in JSON.

For bulk operations there's /steam/api/inventory/batch, which takes up to 100 SteamIDs in one request and returns them in parallel.

FAQ

Which games does the Inventory API support?

Every Steam community game with public inventories — CS2, Dota 2, Rust, TF2, Steam itself, and more. Pass the game's appId.

How do I batch-fetch?

POST a list of SteamIDs to /steam/api/inventory/batch (max 100 per call). The response is keyed by SteamID.

Do I need to handle Steam's rate limits?

No. We handle the rate limits server-side. Your code just sees a clean JSON response.

Start building with the Steam Inventory API

One key, every Steam endpoint.