Score CS2 fantasy from real lines.
Every pro's kills, deaths, assists, ADR, KAST, headshots, opening kills and rating for each map, 723,564 lines across 8,532 players, with the schedule to lock rosters and results to settle them. Building pick'em? Prop lines with L5/L10 hit rates are on the same key.
- 723,564 player-map lines
- Pick'em lines with hit rates
- 500 free requests / month
{ "data": [ ... { "playerName": "ZywOo", "kills": 18, "deaths": 17, "assists": 6, "adr": 95.92, "firstKills": 4, "rating": 1.2, "map": { "mapName": "Inferno" } } ]}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 fantasy game runs on
Lock, score, settle, rank.
Player lines
Kills, deaths, assists, ADR, rating per map.
Opening kills
First kills and first deaths for bonus scoring.
Schedule
Lock lineups before matches start.
Results
Settle when series finish.
Leaderboards
Player pools ranked by form.
Pick'em lines
Kills and headshot prop lines with L5/L10 hit rates (Pro).
How much player data is there?
Counted on the production database on 9 November 2026.
- 723,564 per-map player stat lines across 67,149 maps and 8,532 players.
- ADR and KAST on 99.4% of lines, rating on 97.9%, opening kills and headshots on about 94%.
- Dense from 2023, when CS2 launched: about 21,000 maps with player lines in each of 2025 and 2026.
- Pick'em prop lines (kills and headshots) for 598 players across 173 matches since 26 October 2026, every line change kept.
Which fields can I score?
Every field below is on each player's line for each map, from GET /cs2/matches/{matchId}/player-stats.
| Field | Use in fantasy |
|---|---|
| kills, deaths, assists | The base of most scoring systems |
| headshots | Headshot bonuses, and headshot pick'em props |
| firstKills, firstDeaths | Opening-duel bonuses and penalties |
| adr, kast | Impact and consistency bonuses |
| rating | A single all-round score per map |
| ctKills, tKills and side ratings | Side-specific scoring, where recorded |
A scoring function
An example, not a standard: tune the weights to your game. Uses the Python helper from the Python guide.
def fantasy_points(line):
"""Example scoring: 2 per kill, -1 per death, 1 per assist,
3 per opening kill, 1 per 10 ADR."""
return (2 * line["kills"] - line["deaths"] + line["assists"]
+ 3 * line["firstKills"] + round(line["adr"] / 10))
for row in get("/cs2/players/zywoo/form", limit=5)["data"]:
print(row["map"]["mapName"], row["rating"], fantasy_points(row))Building pick'em or DFS instead?
GET /cs2/props returns CS2 kills and headshot lines from Underdog and Sleeper (maps 1, 1-2 and 1-3), each graded against the player's last 5 and 10 series. Add include_history=true for every line change since the line was posted. PrizePicks lines are not included, but the player stats they settle on are.
Props and odds are on Pro and above; new accounts get them free for their first 3 days.
Endpoints you can ship with
Player stats and schedule, the two halves of fantasy.
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.
Frequently asked questions
Scoring, timing and settlement
Something missing? Email support@citoapi.com.
Is there a CS2 fantasy API?
Yes. This CS2 API has the per-map player lines fantasy games score, 723,564 of them: kills, deaths, assists, ADR, KAST, headshots, opening kills and rating, plus schedules to lock rosters and results to settle.
Does it have pick'em or DFS lines?
Yes, on Pro: CS2 kills and headshot lines from Underdog and Sleeper with L5/L10 hit rates and full line history. PrizePicks lines are not included.
How soon after a map are stats available?
Map stats are indexed after the map finishes; check a map's dataAvailability to know when player stats are in.
How do I lock rosters?
Use /cs2/matches/upcoming and each match's startsAt to lock picks before the first map.
Can I run pick'em on brackets?
Yes. /cs2/events/{eventIdOrSlug}/bracket has each slot's teams, scores and winner.
Can I run a paid fantasy game on the free plan?
No. Free is for building. A live fantasy product needs a paid plan with commercial use.
Fantasy building blocks
- CS2 player stats APIRating, ADR, KAST and K/D per map, career and form.
- CS2 leaderboards APITop players by rating, ADR, KAST, K/D and opening kills.
- CS2 schedule APIUpcoming matches, today's slate and the tournament calendar.
- CS2 tournament APIBrackets, standings, prize pools and every match.
- CS2 match results APIFinal series scores, map scores and box scores.
- CS2 API in PythonLive scores, results and player stats with requests.
Run CS2 fantasy leagues
Prototype on a free key. Go live on a paid plan.