CS2 odds API: match and map prices, with history.
Prediction-market prices for pro Counter-Strike 2 matches: the series winner and every map as decimal odds per team, whether the market is open, suspended or closed, and every price change kept as history. Live markets refresh every minute, upcoming ones every 15 minutes.
- Series + per-map markets
- Open / suspended / closed status
- Odds on Pro and above
{ "success": true, "data": { "matchId": "cs2-match-2399708", "teams": { "team1Name": "MIBR", "team2Name": "Eternal Fire" }, "eventName": "Stake Ranked Episode 5", "odds": [ { "provider": "polymarket", "market": "h2h", "team1Odds": 1.41, "team2Odds": 3.45, "marketStatus": "open", "capturedAt": "2026-10-17T14:15:15.881Z" }, { "provider": "polymarket", "market": "map_h2h_1", "team1Odds": 1.98, "team2Odds": 2.02, "marketStatus": "open" } ... ] }}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 serverEverything a CS2 odds model reads
Current prices, how they moved, and the match they belong to, on the same match ids as results and stats.
Series and map markets
The series winner (h2h) and each map (map_h2h_1, map_h2h_2 ...) as decimal odds for both teams.
Market status
open while trading, suspended when the price is out of band, closed when the market is gone.
Odds history
Every captured price per market with its timestamp: the line's whole path, not just the close.
Fresh while live
Live matches are re-priced every minute, upcoming matches every 15 minutes; capturedAt says when.
Joined to results
The same match id opens maps, round timelines and player stats, so a price meets its outcome in one join.
team1-vs-team2 lookup
Ask for a match by its two team slugs when you do not have the match id yet.
The odds data in numbers
Read on production on 17 October 2026.
- The CS2 odds API stored 3,916 price snapshots across 47 pro CS2 matches in its first day of collection (16 to 17 October 2026).
- CS2 odds on the API come from Polymarket and are served as decimal odds per team for the series winner and for each map.
- Live CS2 matches are re-priced every minute and upcoming matches every 15 minutes; every price carries its capture time.
- CS2 odds are included on the Pro plan ($59 a month) and above.
Odds endpoints
| Endpoint | Returns |
|---|---|
| GET /cs2/matches/{matchId}/odds | Current price per market, both teams, market status, capture time |
| GET /cs2/matches/{matchId}/odds/history | Every captured price per market, oldest first |
| GET /cs2/matches/{team1}-vs-{team2}/odds | The same, found by the two team slugs |
What this is, and what it is not
These are prediction-market prices, collected and normalised so a model, a dashboard or a research notebook can read them next to the match data. They are not an official data feed and not a sportsbook trading feed.
If you build a wagering product on them, the licences and rules of your market are yours to meet; Cito's terms cover regulated use in detail.
Endpoints you can ship with
Odds sit on the match; results, maps and players are one call away.
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; Pro with the Live WebSockets add-on.
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.
Odds & models
Match and map winner prices with implied probability, liquidity and spread, every price change since the market opened, and the team form, map stats and head-to-head a model needs next to them.
- GET
/api/v1/cs2/matches/upcoming?include=oddsUpcoming matches with each one's current market prices attached.
- GET
/api/v1/cs2/matches/{matchId}/oddsMatch and map winner odds: decimal price, implied probability, liquidity, spread, status.
- GET
/api/v1/cs2/matches/{matchId}/odds/historyEvery captured price change for the match and each map, oldest first.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/formA team's recent results and win rate.
- GET
/api/v1/cs2/teams/{teamIdOrSlug}/map-statsWin rate and matches played on each map.
- GET
/api/v1/cs2/h2h/{teamIdOrSlug}/{opponentIdOrSlug}Head-to-head record and the meetings behind it.
Positions & heatmaps
Where every grenade went off, where each kill and death happened, and where the bomb was planted, in game coordinates and already placed on the map's radar, plus heatmaps per map or per player.
- GET
/api/v1/cs2/maps/{mapId}/utilityEvery smoke, flash, HE and molotov on a map: landing spot, thrower, round, duration.
- GET
/api/v1/cs2/maps/{mapId}/positionsGrenades, bomb plants and kills with attacker and victim spots and callouts, in order.
- GET
/api/v1/cs2/maps/{mapId}/heatmap?kind=smokeCounts per radar cell for smokes, flashes, molotovs, plants, kills or deaths.
- GET
/api/v1/cs2/players/{playerIdOrSlug}/utility?map=MirageWhere one player's grenades land across recent maps, with a heatmap.
- GET
/api/v1/cs2/map-radarsRadar calibration per map to draw any point on a radar image.
Player stats
K/D and rating per map played (ADR and KAST on over 95% of map lines), 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 per 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.
Is there a CS2 odds API?
Yes. GET /cs2/matches/{matchId}/odds returns the current prediction-market price for the series and for each map as decimal odds per team, and /odds/history returns every price captured for the match.
Where do the CS2 odds come from?
From Polymarket, a prediction market. The provider field on every price says so.
How often are CS2 odds updated?
As soon as the market price changes, for live matches and matches starting within 6 hours, through every map and between rounds; matches further out refresh every 15 minutes. With Live WebSockets every change is pushed as a cs2.odds.updated message. capturedAt on each price is when it was last confirmed.
Can I get historical CS2 odds?
Yes, from 16 October 2026 onwards: /cs2/matches/{matchId}/odds/history lists every captured price per market, so you can rebuild how a line moved.
Which plan includes CS2 odds?
Pro ($59 a month) and above. Free and Starter keys get a 403 that names the plan.
Are there odds webhooks?
No. Poll the odds endpoint; live markets change at most once a minute.
More for odds and model builders
- Polymarket CS2 dataPrediction-market prices mapped to CS2 matches, with the game data to trade against.
- CS2 historical data API22,408 completed matches since 2017 for models and backtests.
- CS2 WebSocket APILive matches pushed: SSE on every plan, WebSocket on Scale, webhooks on Pro.
- CS2 match results APIFinal series scores, map scores and box scores.
- CS2 API pricingFree, Starter, Pro and Scale: requests, live delay and history per plan.
Model CS2 match odds
Read your first CS2 price in a minute, then upgrade to Pro for the full odds feed.