CS2 API: live scores, player stats & skin prices.
The Counter-Strike 2 API for developers: live matches down to the round, results with every map, per-map player stats, rosters, rankings, and skin prices on 25+ marketplaces. Clean JSON from one key, SDKs for JavaScript and Python, and an MCP server for your agents.
- 15,009 matches
- 8,808 players
- 29,078 skins & items
{ "success": true, "data": { "entityType": "cs2_api_overview", "name": "Counter-Strike 2 API", "status": "available", "coverage": { "matches": 15009, "live": 8, "upcoming": 51, "teams": 4500, "players": 8808, "events": 1525, "rosterChanges": 150640 } }}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 serverOne API for the whole scene
Everything a CS2 app, bot, or dashboard reads, from the round in play to a skin's price on each marketplace, behind one key.
Live to the round
Series score, map in play, round score, round timer, bomb status, and each player's money and equipment.
Every map of every result
Finished matches with the series score and winner, and each map's score, winner, and pick.
Per-map player stats
Kills, deaths, ADR, KAST, and rating for every player on every map, rolled up by career and year.
Teams, rosters, transfers
Current rosters, every past lineup with dates, player moves between teams, and per-map win rates.
World ranking and VRS
The world team ranking and the Valve Regional Standings, with points, movement, and regional tables.
Skin prices
29,078 skins, knives, gloves, stickers, and cases, priced on 25+ marketplaces, with daily history and the week's biggest movers.
CS2 API quickstart: JavaScript, Python, or curl
Get a free API key, install the client for your language, and you are reading live Counter-Strike 2 scores in under a minute. Both clients are open source (MIT), have zero dependencies, and cover every endpoint below.
JavaScript / TypeScript
npm install cs2-apiimport { CS2Api } from "cs2-api";
const cs2 = new CS2Api(); // reads process.env.CITO_API_KEY
// every Counter-Strike 2 match being played right now
for (const m of await cs2.live()) {
console.log(`${m.team1Name} ${m.team1Score}-${m.team2Score} ${m.team2Name} · ${m.currentMap}`);
}
const top10 = await cs2.worldRanking({ limit: 10 });
const donk = await cs2.player("donk");
const redline = await cs2.skinPrices("ak-47-redline-field-tested-1ab1a2dc");Works as ESM or CommonJS, ships TypeScript types. cs2-api on npm
Python
pip install cs2-api-clientfrom cs2_api import CS2Api
cs2 = CS2Api() # reads CITO_API_KEY
for m in cs2.live():
print(f"{m['team1Name']} {m['team1Score']}-{m['team2Score']} {m['team2Name']} · {m['currentMap']}")
top10 = cs2.world_ranking(limit=10)
vitality = cs2.team("vitality")
redline = cs2.skin_prices("ak-47-redline-field-tested-1ab1a2dc")Standard library only, Python 3. cs2-api-client on PyPI
Any language: plain REST
Every route is a GET that returns JSON. Send your key in the x-api-key header from your server, never from browser code.
curl "https://api.citoapi.com/api/v1/cs2/live" \
-H "x-api-key: $CITO_API_KEY"Source, issues, and example bots and overlays: cs2-api on GitHub
What comes back
A real response from /cs2/live, trimmed to one match: the series score is maps won, currentMapScore is the map in play.
{
"success": true,
"data": [
{
"matchId": "cs2-match-2398731",
"status": "live",
"eventName": "ESL Pro League Season 24",
"bestOf": 3,
"team1Name": "Vitality",
"team2Name": "Natus Vincere",
"score": { "team1": 1, "team2": 1 },
"currentMap": "de_mirage",
"currentMapScore": { "team1": 5, "team2": 2 },
"currentRound": 8
}
]
}Endpoints you can ship with
Eight groups, 45 endpoints, one key. Pick what you are building; every route returns the same REST JSON.
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.
CS2 skin prices and item data
The same key that reads match data reads the CS2 skin market: every weapon skin, knife, glove, sticker, case and capsule, its current price on more than 25 marketplaces, and its daily price history back to 2020 on long-listed items.
- tradable CS2 items with a price
- 29,078
- tradable CS2 items with a price
- weapon skins and agents, every wear
- 15,203
- weapon skins and agents, every wear
- stickers
- 7,337
- stickers
- knives
- 4,080
- knives
- gloves
- 470
- gloves
- cases, capsules, graffiti and music kits
- 1,544
- cases, capsules, graffiti and music kits
Price on every marketplace
/skins/{slug}/prices returns one row per marketplace, cheapest first, with the offer count and a buy link: Steam Community Market, Buff.163, Buff.Market, CSFloat, Skinport, DMarket, CS.MONEY, YouPin898, UUSkins, Waxpeer, Market.CSGO, LIS-SKINS, White.Market, HaloSkins, Avan.Market, C5Game, Ecosteam, SkinFlow, PirateSwap, Skin.place, Mannco.Store and more. Each item carries its market hash name, weapon, rarity, exterior, StatTrak and Souvenir flags, and its image.
Price history and movers
/skins/{slug}/history returns the daily cheapest price with volume (the AK-47 | Redline series starts in March 2020), /skins/{slug}/order-book the sell listings per market, and /skins/trending the biggest gainers and losers from one day to one year.
What it is for
Inventory valuers, trade-up and arbitrage tools, price alerts, Discord bots, and portfolio trackers. It does not read or move Steam inventories: for a user's own inventory, use Steam's inventory endpoints with their consent.
CS2 skin prices API goes deeper on the market endpoints.
GET /api/v1/cs2/skins/ak-47-redline-field-tested-1ab1a2dc/prices
{
"skin": {
"marketHashName": "AK-47 | Redline (Field-Tested)",
"weapon": "AK-47", "rarity": "Classified", "exterior": "Field-Tested"
},
"prices": [
{ "providerName": "UUSkins", "price": 25.02, "offersCount": 10916 },
{ "providerName": "DMarket", "price": 25.12, "offersCount": 844 },
{ "providerName": "CSFloat", "price": 25.26, "offersCount": 3610 },
{ "providerName": "Buff.163", "price": 25.98, "offersCount": 8145 },
{ "providerName": "Steam", "price": 34.88, "offersCount": 1171 },
"… 22 more marketplaces"
]
}Which CS2 API do you need?
“CS2 API” means five different things depending on what you are building. Here is what each kind of Counter-Strike 2 data is, and where to get it.
| You need | What it is | Where to get it |
|---|---|---|
| Pro match and esports data | Live scores to the round, results with every map, player ratings (ADR, KAST, rating), rosters, transfers, tournaments, brackets, the world ranking and VRS. | Cito CS2 API. Valve publishes no esports data API, and HLTV has no public API. |
| Skin prices and market data | What an item is worth right now on each marketplace, its history, and which items are moving. | Cito CS2 API (25+ marketplaces in one call), or each marketplace's own API one at a time. |
| Static item catalog | Names, images, rarities and collections of every skin, sticker, case and agent, with no prices. | Open-source JSON dumps of the game files; Cito's /skins endpoints carry the same catalog fields alongside prices. |
| Steam accounts and inventories | A signed-in player's profile, owned items, or trade offers. | Valve's Steam Web API, with the player's own key or consent. |
| In-game state for overlays | Your own client's health, money, round phase and bomb state while you play or spectate. | Valve's Game State Integration (GSI), a local config file in the CS2 install. |
Is there an official CS2 API?
Valve offers the Steam Web API (accounts, inventories, the Steam market) and Game State Integration (your own game client), but no API for professional matches, player statistics, or prices across third-party marketplaces. That is the gap the Cito CS2 API fills: one REST API and one key for Counter-Strike 2 esports data and skin prices together.
Built for apps that ship
Live scores, results, stats and prices come back as the same clean JSON with stable IDs, so a Discord bot, a stream overlay, a fantasy game, a betting model or an AI agent can join a match to its players, a player to their team, and a team to its ranking without stitching sources together. The free CS2 API key is enough to prototype.
FAQs
Coverage, plans, live data, and the beta
Can't find what you're looking for? Contact our customer support team
Explore the CS2 API
Each page goes deep on one thing developers build with CS2 data.
- CS2 live APISeries, map, and round score while the match is on.
- CS2 skin prices APIPrices on every marketplace, daily history, and movers.
- CS2 player stats APIRating, ADR, and KAST for every map played.
- CS2 results APISeries and map scores for every finished match.
- CS2 schedule APIUpcoming matches and the tournament calendar.
- CS2 rankings APIThe world ranking and Valve Regional Standings.
- Free CS2 APIWhat a free key includes, with every limit stated.
- CS2 API docsEvery endpoint, its parameters, and a real response.
Build live scoreboards
Create a free key, call your first CS2 endpoint in a minute, and upgrade when the app is real.