Public inventories · SteamID64 · CS2 & Rust

Steam Inventory API

Read any public Steam inventory for CS2 or Rust as clean JSON: every item identified, priced from Steam and 11 marketplaces, with float, paint seed and Doppler phase for CS2 — and a total for the whole inventory. One request, no inspect links, no Game Coordinator of your own. Grab a free key or read the endpoint docs.

36,831
items recognised
12
price sources
1
request per inventory
30+
currencies

Not the Steamworks Inventory Service

Searching for a Steam inventory API mostly turns up Valve’s Inventory Service — a Steamworks feature for developers granting and consuming items inside their own game. Useful if you ship a game; useless if you want to know what is in someone’s CS2 inventory and what it is worth.

The other thing people find is the raw steamcommunity.com/inventory/{id}/730/2 JSON: public, but rate-limited per IP, unpriced, paginated, and with none of the float or pattern data that decides a skin’s value. This API sits on top of that problem: it reads the inventory for you, resolves every item against the catalog, attaches prices from 12 sources and the CS2 inspect data, and returns one document.

What comes back per item

Field groupContents
IdentityMarket hash name, exterior, icon, rarity and type — matched to the catalog so every item links to its price history.
CS2 inspect dataFloat value, paint seed, paint index, Doppler phase, fade percentage, blue-gem tier — inline, already resolved.
PricesSteam lowest ask, cross-market best price and its source, per-market breakdown on request, all in your currency.
TotalstotalValue for the whole inventory at Steam prices and at real market prices.

Example: value a whole inventory

curl "https://steamdataapi.com/api/v1/inventory/76561198000000000?game=cs2&currency=EUR" \
  -H "Authorization: Bearer sdk_YOUR_KEY"
const res = await fetch(
  'https://steamdataapi.com/api/v1/inventory/76561198000000000?game=cs2',
  { headers: { Authorization: 'Bearer sdk_YOUR_KEY' } },
);
const { totalValue, items } = await res.json();
// totalValue: the inventory in cents; items[]: each skin with float, phase and prices

Private inventories, caching and freshness

Only public inventories can be read — the same rule Steam applies — and a private one answers with an explicit error code, never a silently empty list. Reads are cached for a short window so a page refresh does not turn into a Steam request; pass fresh=1 when you need to confirm that a trade has actually landed.

Rust inventories too

The same endpoint reads Rust inventories with ?game=rust: every skin, door, weapon and building part priced from Steam and the markets that carry Rust, with a portfolio total. See the Rust skin API for what is covered.

Build on it

Two walkthroughs start from this endpoint: how to build a CS2 inventory value calculator and reading float, pattern and Doppler phase straight from an inventory. Prices come from the Steam market API; the full field list is in the inventory reference.

Frequently asked questions

Is this Valve’s Steam inventory API?

No. Valve’s Steamworks Inventory Service (IInventoryService) is for game developers managing items inside their own game. This is an independent, read-only Steam inventory API for the other direction: reading any public CS2 or Rust inventory by SteamID64 and pricing what is in it.

Do I need the user to log in?

No. Public inventories are readable with just a 64-bit SteamID — no OAuth, no session, no API key from the user. Inventories set to private return an explicit error rather than an empty list.

Does it return floats and patterns?

For CS2, yes: float value, paint seed, paint index, Doppler phase, fade percentage and blue-gem tier come inline with each item — no inspect links to resolve and no Game Coordinator of your own to run.

Which games are supported?

Counter-Strike 2 and Rust. Pass ?game=cs2 or ?game=rust. Items are matched against a catalog of 31,393 CS2 and 5,438 Rust items, so even store-only and retired skins resolve.

How is the inventory valued?

Every item is priced two ways: the Steam Community Market ask, and the lowest ask across 11 third-party marketplaces. The response totals both, so you can show a Steam value and a real-world value side by side.

How fresh is the inventory read?

Reads are cached briefly so that refreshing a page does not hammer Steam. Pass fresh=1 to force a live re-read when you need to confirm a trade has landed.

Start building

Free key, no card. Create one, drop in a SteamID64 and get the inventory back priced. Inventory is its own endpoint group with its own quota — see pricing.