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
{ "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 serverHow 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.
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.
Live matches
Poll the live list for every match in progress, open one match for its round, timer, bomb and players, or keep an SSE stream open and get each update pushed.
- GET
/api/v1/cs2/liveMatches in progress: series score, map in play, map score, current round.
- GET
/api/v1/cs2/live/{matchId}/stateOne live match: score, round, round timer, bomb status and players.
- GET
/api/v1/cs2/live/{matchId}/scoreboardSeries score, current map and round, and each player's kills, deaths, money and equipment.
- GET
/api/v1/cs2/live/{matchId}/roundsRound-by-round results so far: winner, side and how each round ended.
- GET
/api/v1/cs2/live/streamServer-Sent Events push of every live update. Every plan; counts like polling.
- GET
/api/v1/cs2/live/wsWebSocket with a room per match. Scale and Enterprise.
Results
Finished matches with the series score and winner, every map and its score, and the player lines behind them.
- GET
/api/v1/cs2/matches/recentFinished matches with final series score and winner, newest first.
- GET
/api/v1/cs2/matches/{matchId}One match: event, teams, series score, and maps.
- GET
/api/v1/cs2/matches/{matchId}/mapsEach map: name, score, winner, and the team that picked it.
- GET
/api/v1/cs2/matches/{matchId}/player-statsPer-player stats for each map: kills, deaths, ADR, KAST and rating.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/resultsOne team's finished matches, newest first.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/resultsFinal placements and prize money of a tournament.
Schedule
What is on next: upcoming matches soonest first, today's slate, one team's fixtures, and the tournament calendar.
- GET
/api/v1/cs2/matches/upcomingScheduled matches, soonest first.
- GET
/api/v1/cs2/matches/todayMatches scheduled, live or finished today (UTC).
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/upcomingOne team's scheduled matches.
- GET
/api/v1/cs2/events/upcomingScheduled tournaments, soonest first.
- GET
/api/v1/cs2/events/calendarTournaments in a date range, with from and to.
- GET
/api/v1/cs2/matches/{matchId}/streamsBroadcast links for a match, when known.
Player stats
Rating, ADR, KAST and K/D for every map a player has played, rolled up into career, yearly and recent-form views.
- GET
/api/v1/cs2/players/{playerIdOrSlug}Nickname, real name, photo, country, team, role and headline stats.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/statsCareer totals plus a stat line for every map played.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/seasonsA player's stats by year.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/formThe most recent maps with kills, deaths, ADR, KAST and rating.
- GET
/api/v1/cs2/leaderboards/{metric}Top players by rating, ADR, KAST, K/D, kills or opening kills.
- GET
/api/v1/cs2/players/search?q={name}Find a player by nickname or real name.
Teams & rosters
Team profiles with the current roster, every past lineup, player moves between teams, and how each team plays each map.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}Name, logo, country, region, world ranking and current roster.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/roster-historyEvery player who has played for the team, with start and end dates.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/map-statsPer-map win rate, rounds and pick/ban tendencies.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}Record and past matches between two teams.
- GET
/api/v1/cs2/roster-changes/recentPlayers joining and leaving teams, newest first.
- GET
/api/v1/cs2/transfers/recentPlayer moves between teams, newest first.
Rankings
The world team ranking and the Valve Regional Standings, with points and movement, plus one table per region.
- GET
/api/v1/cs2/rankings/worldThe latest world team ranking.
- GET
/api/v1/cs2/rankings/vrsThe latest Valve Regional Standings (VRS).
- GET
/api/v1/cs2/rankings/region/{region}One region, with each team's world and regional rank.
- GET
/api/v1/cs2/rankingsOne row per team, with points and change since the previous ranking.
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.
- GET
/api/v1/cs2/skins?q={name}Search skins by name, weapon, rarity or price range.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/pricesThe current price on each marketplace, cheapest first, with offer counts.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/historyDaily cheapest price across marketplaces, years back on long-listed skins.
- GET
/api/v1/cs2/skins/{skinIdOrSlug}/order-bookSell listings per marketplace with counts, and the lowest ask.
- GET
/api/v1/cs2/skins/trendingBiggest 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.
Tournaments
Tournaments with dates, prize pool, tier and format, plus every match, the standings and the bracket.
- GET
/api/v1/cs2/events/liveTournaments being played now.
- GET
/api/v1/cs2/events/{eventIdOrSlug}Dates, location, prize pool, tier, teams and format.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/matchesEvery match of the tournament.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/standingsTeams with seed, final placement and prize.
- GET
/api/v1/cs2/events/{eventIdOrSlug}/bracketBracket, groups, play-in and Swiss, each slot with teams, scores and winner.
FAQs
Steam inventories, pricing, and request counts
Can't find what you're looking for? Contact our customer support team
More CS2 market data
Where the prices come from.
- CS2 skin prices APIPrices on every marketplace, daily history, and movers.
- CS2 skin market APISteam, Buff163, Skinport, YouPin and DMarket prices.
- CSFloat APICSFloat's price and listings for every item.
- CS2 APILive scores, results, player stats, rankings, and skin prices in one API.
- CS2 API docsEvery endpoint, its parameters, and a real response.
Build inventory checkers
Create a free key and price your own inventory with the script above.