Docs/CS2 API

Counter-Strike 2 API

Beta

Live matches down to the round, results with every map score, per-map player stats, teams, players, events, and the world and VRS rankings. This is the endpoint reference; the CS2 API overview covers plans, coverage and skin prices.

CS2 is in beta. The data is live and checked continuously, but if something looks wrong (a score, a stat line, a roster, a missing match), email support@citoapi.com with the endpoint you called and the match, team or player id. Reports go straight to the people fixing it.

BASEhttps://api.citoapi.com/api/v1
CS2 API RootAppend any endpoint path below.

Quick start

Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/recent?limit=5" \
  -H "x-api-key: YOUR_API_KEY"

Every response is { success, data, meta }. Ids look like cs2-match-2398421, cs2-team-9565 and cs2-player-11893; teams and players also accept their slug (vitality, zywoo). Times are ISO 8601 in UTC.

Full endpoint reference

Every CS2 endpoint, with parameters, a curl example and a real response, grouped by area.

CS2 Live Scores API
Everything about matches in progress: the live list, per-match state and scoreboard, rounds, kill events, live player stats, and the push stream so you do not have to poll. It follows the public scoreboard, which tournaments run behind a broadcast delay: built for live scoreboards, bots, overlays and models, not for betting on the next round.
CS2 Player Props API
Pick'em player prop lines for Counter-Strike 2 from Underdog Fantasy and Sleeper, refreshed every 5 minutes: kills and headshots on maps 1-2. Each line is linked to the match and player ids used everywhere else in the API, shows every app side by side with the spread between them, and is graded against the player's last 5 and 10 series from our own map stats. Underdog prices both sides as odds; Sleeper pays a multiplier per pick, returned as a multiplier. Player props are included on Pro and above.
CS2 Odds API
Prediction-market prices for Counter-Strike 2 matches as decimal odds: the series winner and every map, refreshed every minute while a match is live and every 15 minutes before it, plus the full line movement. Each quote says whether its market is open, suspended (a decided map) or closed. A market is attached to a match only when both teams match and it starts within 6 hours of the market's start time, and every link is re-checked against the current match every 15 minutes, so a rescheduled or re-paired match never keeps another match's odds. Odds are included on Pro and above.
CS2 Matches API
Schedules, results and everything recorded about a single series: maps played, player stats per map, lineup form, head-to-head history, streams and demo links.
CS2 Maps and Rounds API
Map-level data: the active duty pool, the map catalog, and for each map played in a series its player stats, round history and events.
CS2 Rankings API
Team rankings: the world ranking, Valve Regional Standings, and regional boards. The VRS ranks rosters, not organisations, so an organisation whose new and previous lineups are both ranked appears twice: the lower entry carries alsoRankedAt.
CS2 Teams API
Team profiles by id or slug ("vitality", "natus-vincere"): roster and roster history, results, upcoming matches, form, map stats and head-to-head.
CS2 Player Stats API
Player profiles by id or slug ("donk", "zywoo"): headline stats, career and seasons, map and weapon splits, clutches and flash assists, form and team history.
CS2 Tournaments API
Tournaments and events (the two route families are equivalent): calendar, participants, matches, standings, brackets, results and event-level stats.
CS2 Stats and Leaderboards API
Aggregated leaders and scene-wide stats: leaderboards by metric, and deep dives into duels, clutches, utility and economy.
CS2 Skin Prices API
The skin market: search and filter skins, compare prices across marketplaces, read order books and price history, and track movers.
CS2 Transfers API
Roster moves across the scene, filterable by player, team, status and date range.
CS2 Search and Reference API
Search across teams, players, events and matches, the reference catalogs, webhook event types and freshness endpoints.

Endpoints

GET/api/v1/cs2/live
Live MatchesMatches in progress: series score, map in play, map score and round.

Summary

Matches in progress: series score, map in play, map score and round.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/live" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/live/{matchId}/state
StateOne live match: round, round score, sides, players, bomb.

Summary

One live match: round, round score, sides, players, bomb.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/live/{matchId}/state" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/live/stream
StreamServer-Sent Events push of live updates. Every plan; billed like polling (see below).

Summary

Server-Sent Events push of live updates. Every plan; billed like polling (see below).

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/live/stream" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/matches/upcoming
Upcoming ScheduleThe schedule, soonest first. Add ?include=odds for each match's bookmaker odds in the same call.

Summary

The schedule, soonest first. Add ?include=odds for each match's bookmaker odds in the same call.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/upcoming" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/matches/recent
Recent MatchesLatest results with every map and its score.

Summary

Latest results with every map and its score.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/recent" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/matches/{matchId}
MatchIdOne match: maps, veto, event, streams.

Summary

One match: maps, veto, event, streams.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/{matchId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/matches/{matchId}/player-stats
Player StatsPer-map player lines: kills, deaths, assists, ADR, KAST, rating.

Summary

Per-map player lines: kills, deaths, assists, ADR, KAST, rating.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/{matchId}/player-stats" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/props?market=kills_maps_1_2
PropsPick'em player props (Underdog, Sleeper): kills and headshots on maps 1-2, graded L5/L10. Pro and above.

Summary

Pick'em player props (Underdog, Sleeper): kills and headshots on maps 1-2, graded L5/L10. Pro and above.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/props?market=kills_maps_1_2" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/matches/{matchId}/props
PropsOne match's prop lines, every app side by side with the spread between them.

Summary

One match's prop lines, every app side by side with the spread between them.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/matches/{matchId}/props" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/teams/{teamIdOrSlug}
TeamIdOrSlugTeam profile, current roster (players and coach) and recent results.

Summary

Team profile, current roster (players and coach) and recent results.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/teams/{teamIdOrSlug}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/players/{playerIdOrSlug}
PlayerIdOrSlugPlayer profile and current team.

Summary

Player profile and current team.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/players/{playerIdOrSlug}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/players/{playerIdOrSlug}/stats
PlayerIdOrSlug StatsCareer totals and per-map stat lines.

Summary

Career totals and per-map stat lines.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/players/{playerIdOrSlug}/stats" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/rankings
RankingsWorld ranking. Add ?source=vrs for Valve's VRS ranking.

Summary

World ranking. Add ?source=vrs for Valve's VRS ranking.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/rankings" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/rankings/vrs?before=2025-06-02
VrsVRS as it stood before a date, back to August 2024 (pre-match rankings for models).

Summary

VRS as it stood before a date, back to August 2024 (pre-match rankings for models).

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/rankings/vrs?before=2025-06-02" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/events/upcoming
Upcoming ScheduleTournaments starting soon. Also /events/live and /events/recent.

Summary

Tournaments starting soon. Also /events/live and /events/recent.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/events/upcoming" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/cs2/search?q=vitality
SearchTeams, players, events and matches by name.

Summary

Teams, players, events and matches by name.

REST
Bash
curl "https://api.citoapi.com/api/v1/cs2/search?q=vitality" \
  -H "x-api-key: YOUR_API_KEY"

These are the main ones. Every CS2 route, with its parameters and a real example response, is in the OpenAPI document (tag CS2).

Live data

Poll GET /cs2/live for everything in progress, then GET /cs2/live/{matchId}/state for one match. In the live list, score is the series (maps won) and currentMapScore is the map being played.

Push instead of polling. GET /cs2/live/stream sends every update as it happens (Server-Sent Events, add ?matchId= to follow one match). An open stream counts toward your monthly quota like polling: one request when it connects, then one for every 15 seconds it stays open. When the quota runs out it sends an error event and closes.

Bash
curl -N "https://api.citoapi.com/api/v1/cs2/live/stream" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Accept: text/event-stream"

Live data comes from the in-game feed. If that feed goes quiet for a match, a backup feed takes over within about a minute and the state says source: "live_backup": series score and the map in play, without rounds or players, until the main feed returns.

Plans

Choose a plan or read rate limits and pricing.