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.

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.

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.

Summary

The schedule, soonest first.

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/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/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

Free
500 requests a month, 30 days of in-depth history, live data 60 seconds behind.
Starter ($15/mo)
Pick CS2 as your game: 10,000 requests a month, 90 days of history, live data 60 seconds behind.
Pro and up
Every game, real-time live data, the full archive.
Live WebSockets
Included on Scale and Enterprise; on Pro with the Live WebSockets add-on.

Choose a plan or read rate limits and pricing.