Every round counts. The esports data API for Counter-Strike 2
Results, maps, rounds and player stats for 27,000+ pro Counter-Strike matches since 2020, plus a market odds line. REST, Python and MCP.
Free sample of past matches, no card. Plans from $99 a month.
{ "won": true, "equipment_value": 10300, "enemy_equipment_value": 31150, "clutches": 1 }
More from the playoffs, in the free sample
CS2 match data, from the series to every player
One schema from the series down to each round, with IDs that stay stable.
- Match
The veto
- Dust2FUT ban
- InfernoSpirit ban
- CacheFUT pick
- AnubisSpirit pick
- AncientFUT pick
- NukeSpirit pick
- MirageDecider
Results and map vetoes
Fixtures, results and every ban and pick.
CS2 match data in JSON - Map
Ancient, 14–16
Team 1st 2nd OT Map FUT 6 6 2 14 Spirit 6 6 4 16 Map scores and overtime
Halves, sides and overtime, on 91% of matches.
CS2 overtime rates - Round
Ancient, round 6
FUT $4,250Spirit $27,750FUT won it. One square is $1,000.
Round-by-round data
Economy, end reason and clutches, on top-tier events.
Eco rounds in CS2, defined - Player
CS2 player stats
Every player, by map and by match.
CS2 player stats API guide
A CS2 API you can call in a minute
REST with Bearer auth, a WebSocket stream, a Python client and an MCP server.
- Get a free sandbox key
- Make your first call
- Choose a plan for current data
from esportsodds import Client client = Client() # reads ESPORTSODDS_API_KEY match = client.matches.get( "01a02b10-1fcc-7e63-a066-34f41169d1f2", include=["maps", "rounds"], ) for row in match["rounds"]: if row["map_number"] == 1 and row["clutches"]: print(row["round_number"], row["team_side"], row["end_reason"])
5 ct BombDefused 10 t TerroristsWin 20 t TerroristsWin 21 t TargetBombed
API=https://api.esportsodds.gg/v1/cs2 MATCH=01a02b10-1fcc-7e63-a066-34f41169d1f2 curl -s -H "Authorization: Bearer $ESPORTSODDS_API_KEY" \ "$API/matches/$MATCH?include=maps,rounds" \ | jq -r '.data.rounds[] | select(.map_number == 1 and .clutches > 0) | "\(.round_number) \(.team_side) \(.end_reason)"'
5 ct BombDefused 10 t TerroristsWin 20 t TerroristsWin 21 t TargetBombed
# Adds the MCP server to Claude Code (needs uv) claude mcp add --transport stdio \ --env ESPORTSODDS_API_KEY="$ESPORTSODDS_API_KEY" \ esportsodds -- uvx esportsodds mcp
In match 01a02b10-1fcc-7e63-a066-34f41169d1f2, which rounds on Cache had a clutch?
- GET
/v1/cs2/matches - Results, maps and rounds
- GET
/v1/cs2/players - Player profiles and per-match stats
- GET
/v1/cs2/teams - Rosters and records
- GET
/v1/cs2/tournaments - Events and brackets
- GET
/v1/cs2/odds - The market odds line
- POST
/v1/cs2/ws-token - A ticket for the WebSocket stream
CS2 data coverage since 2020
27,000+ pro matches, 20,000+ of them on CS2. One square is 100 matches.
- Players
- 5,600+
- Teams
- 1,800+
- Tournaments
- 1,100+
Results in about 7 minutes
Median from the end of a match, last 30 days.
Historical CS2 odds data
Every change is kept with its timestamp, so you can backtest against the line as it stood.
- Captured about once a minute
- Line history from July 2026
FUT, market-implied win probability
FUT 1–3 Spirit, the series above
Who uses the esports data API
Stats sites and bots
Pages and bots that update themselves, no scraper to babysit.
Build a CS2 score bot for DiscordMedia and data products
Stats your readers can trust. Pro adds a display licence.
Generate a CS2 match previewModellers and traders
Backtest against the market line, capture by capture.
Read the CS2 market odds lineFantasy games
Score lineups from per-map player stats.
Build CS2 fantasy projections
Explore the data
Free to read, no account.
Stats and tools
Browse by topic
Esports data API pricing
Every endpoint on every plan. Yearly is two months free.
Sandbox key
$0
Free, no card
A fixed sample of past matches
- 2,000 requests in total
- Match, map, round and market-line endpoints
Standard
$82.50 a month
Billed $990 a year, or $99 billed monthly
50,000 requests a month
- Every endpoint and the update stream
- Match and player-stat history back to 2020
Pro
$249.17 a month
Billed $2,990 a year, or $299 billed monthly
150,000 requests a month
- Unlimited bulk-export requests
- A public display licence
- Weekly bulk file, monthly coverage report
One square is 10,000 requests a month. The outlined square is the fixed sample.
14-day money-back guarantee on your first payment, monthly or yearly (fewer than 1,000 requests and no more than 20 bulk-export requests). Cancel anytime. Need to supply the data to others? Talk to us. Compare the plans
Esports data API FAQ
More in the docs.
What CS2 data is there besides odds?
Fixtures and results; per-map scores and vetoes; per-player match stats (kills, assists, deaths, ADR, KAST, clutches, multi-kills) on most matches; per-round team economy and duels on top-tier events; teams, players and tournaments with head-to-head and recent form; and team and player rankings. That is 27,000+ professional Counter-Strike matches (20,000+ of them on Counter-Strike 2), with history back to 2020. The coverage page says what is thin.
Where does the odds data come from?
We publish a single market odds line built from many sources, with our own model line coming soon, once it clears validation. See our methodology.
How fresh is the data?
We poll matches and the market line about once a minute, so freshness is bounded by that cadence. Every line row carries the age of its inputs (input_oldest_at), and a WebSocket stream pushes you a row when it changes in our feed. It is a polled feed, not a real-time one.
Which games are supported?
CS2 is available today; League of Legends, Dota 2 and Valorant are on the roadmap.
Can an AI assistant use it?
Yes. The official Python client includes an MCP server, so Claude, Cursor and other AI assistants can look up teams, matches and player stats with your API key. Set-up is on the AI assistants page.
Is there a free plan?
For current data, no: plans start at $99/mo for 50,000 requests, paid up front. To try it first, a free sandbox key reads a fixed sample of past matches, and the demo needs no signup.
Make your first call today
A sandbox key reads a fixed sample of past matches, no card. Plans from $99 a month.
pip install esportsodds