BetaRead the CS2 API docs

Value a CS2 inventory in two steps.

Read a public Steam inventory, then price each item by its market name on the marketplace you choose. Cito returns prices; Steam returns what the player owns.

  • Lookup by market_hash_name
  • 27 marketplaces
  • Knives, stickers, cases
GET /cs2/skins/StatTrak%E2%84%A2%20AK-47%20%7C%20Redline%20(Field-Tested)/prices?provider=steam200 OK
$ curl "https://api.citoapi.com/api/v1/cs2/skins/StatTrak%E2%84%A2%20AK-47%20%7C%20Redline%20(Field-Tested)/prices?provider=steam" \ -H "x-api-key: $CITO_API_KEY"
{  "success": true,  "data": {    "skin": {      "marketHashName": "StatTrak™ AK-47 | Redline (Field-Tested)",      "stattrak": true    },    "prices": [      {        "provider": "steam",        "price": 72.97,        "currency": "USD"      }    ]  }}

Seamless Integration with our MCP Server

Give Claude, Cursor, and ChatGPT the CS2 data. One command writes the MCP config; agents call live scoreboard, team map stat, opening duel, and transfer tools instead of inventing match IDs, and your key stays on your machine.

MCPInstall the Cito MCP server
Claude
Cursor
OpenAI
Python
Cito API
Next.js
Discord
Slack
GitHub

How do you value a CS2 inventory with an API?

Steam tells you what a player owns and Cito tells you what each item is worth. Read the public inventory from Steam, then price each distinct item by its market name on the marketplace you choose.

  • Steam lists what a player owns: GET https://steamcommunity.com/inventory/{steamId64}/730/2 returns assets and descriptions, and each description has a market_hash_name. The inventory must be public, and Steam rate-limits this endpoint.
  • Cito prices each distinct item: GET /cs2/skins/{market_hash_name}/prices with the name URL-encoded. Add provider=steam (or buff163, csfloat, skinport …) for one market, or omit it for every market, cheapest first.
  • Multiply by quantity and add up. Cache prices for at least 30 minutes: valuable items are re-priced every 30 minutes and the full catalogue every 8 hours.

What does the code look like?

About 25 lines of Node 18+, no dependencies. Pass a public SteamID64 and set CITO_API_KEY.

inventory-value.mjs
const steamId = process.argv[2]; // a public SteamID64
const market = "steam";             // or buff163, csfloat, skinport, youpin, dmarket

const inv = await fetch(
  `https://steamcommunity.com/inventory/${steamId}/730/2?l=english&count=2000`
).then((r) => r.json());

// One count per marketable item name
const byKey = new Map(inv.descriptions.map((d) => [`${d.classid}_${d.instanceid}`, d]));
const counts = new Map();
for (const a of inv.assets) {
  const d = byKey.get(`${a.classid}_${a.instanceid}`);
  if (d?.marketable) counts.set(d.market_hash_name, (counts.get(d.market_hash_name) ?? 0) + 1);
}

let total = 0;
for (const [name, qty] of counts) {
  const res = await fetch(
    `https://api.citoapi.com/api/v1/cs2/skins/${encodeURIComponent(name)}/prices?provider=${market}`,
    { headers: { "x-api-key": process.env.CITO_API_KEY } }
  );
  if (!res.ok) continue;
  const price = (await res.json()).data.prices[0]?.price ?? 0;
  total += price * qty;
}
console.log(`${counts.size} distinct items, worth $${total.toFixed(2)} on ${market}`);

Each distinct item is one request. A free key (500 requests a month) values a few small inventories; a checker that serves other people needs a paid plan and a price cache.

Endpoints you can ship with

Start on skin prices: the catalogue, per-market prices and history.

Skin prices

The current price of a skin on each marketplace, its daily price history, sell listings across markets, and the week's biggest movers.

View docs
  • GET/api/v1/cs2/skins?q={name}

    Search skins by name, weapon, rarity or price range.

  • GET/api/v1/cs2/skins/{skinIdOrSlug}/prices

    The current price on each marketplace, cheapest first, with offer counts.

  • GET/api/v1/cs2/skins/{skinIdOrSlug}/history

    Daily cheapest price across marketplaces, years back on long-listed skins.

  • GET/api/v1/cs2/skins/{skinIdOrSlug}/order-book

    Sell listings per marketplace with counts, and the lowest ask.

  • GET/api/v1/cs2/skins/trending

    Biggest gainers and losers over 1 day to 1 year, with sparklines.

  • GET/api/v1/cs2/skins/{skinIdOrSlug}

    One skin: weapon, rarity, collection, image and price summary.

FAQs

Steam inventories, pricing, and request counts

Can't find what you're looking for? Contact our customer support team

Read the skin docs

Build inventory checkers

Create a free key and price your own inventory with the script above.