Docs/CS2 API/CS2 Teams API

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.

14 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Live, Player props, Odds, Matches, Maps & rounds, Rankings, Players, Events, Stats & leaderboards, Skins, Transfers, Search & reference.

Team transfers

GET/api/v1/cs2/teams/{teamIdOrSlug}/transfers

Players who joined or left a team.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
afterstringOnly rows after this time (ISO 8601).
beforestringOnly rows before this time (ISO 8601).
from_teamstringFilter by from_team.
include_computedstringFilter by include_computed.
include_undatedstringFilter by include_undated.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
pageintegerPage number, starting at 1.
playerstringPlayer id or slug.
player_idstringPlayer id or slug.
statusstringFilter by status.
teamstringTeam id or slug.
team_idstringTeam id or slug.
to_teamstringFilter by to_team.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/transfers" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_player_transfers",
    "dataAvailable": true,
    "transfers": [
      {
        "transferKey": "profile-history:2025-01-01:source-player-18221:source-team-9565:source-team-4494:joined",
        "playerId": "cs2-player-18221",
        "playerName": "Spinx",
        "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7d7cefdee564f870c5a9e9e34646883d.webp",
        "fromTeamId": "cs2-team-9565",
        "fromTeamName": "Vitality",
        "fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "fromTeamAlternateLogoUrl": null,
        "fromTeamDarkUiLogoUrl": null,
        "fromTeamIsNoTeam": false,
        "toTeamId": "cs2-team-4494",
        "toTeamName": "MOUZ",
        "toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0ad08abfc7542d74ca19505208967289.svg",
        "toTeamAlternateLogoUrl": null,
        "toTeamDarkUiLogoUrl": null,
        "toTeamIsNoTeam": false,
        "status": "joined",
        "role": null,
        "transferDate": "2025-01-01T12:00:00.000Z",
        "joinDate": "2025-01-01T12:00:00.000Z",
        "leaveDate": null,
        "detectedAt": "2026-07-10T00:54:23.160Z"
      },
      {
        "transferKey": "profile-history:2025-01-01:source-player-11816:source-team-6667:source-team-9565:joined",
        "playerId": "cs2-player-11816",
        "playerName": "ropz",
        "playerImageUrl": null,
        "fromTeamId": "cs2-team-6667",
        "fromTeamName": "FaZe",
        "fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b9b1714c98b7f5ba2f329d35548eba3f.webp",
        "fromTeamAlternateLogoUrl": null,
        "fromTeamDarkUiLogoUrl": null,
        "fromTeamIsNoTeam": false,
        "toTeamId": "cs2-team-9565",
        "toTeamName": "Vitality",
        "toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "toTeamAlternateLogoUrl": null,
        "toTeamDarkUiLogoUrl": null,
        "toTeamIsNoTeam": false,
        "status": "joined",
        "role": null,
        "transferDate": "2025-01-01T12:00:00.000Z",
        "joinDate": "2025-01-01T12:00:00.000Z",
        "leaveDate": null,
        "detectedAt": "2026-07-09T20:16:18.067Z"
      }
    ]
  },
  "meta": {
    "count": 2,
    "total": 33,
    "page": 1,
    "limit": 2,
    "dataAvailable": true,
    "totalPages": 17,
    "hasNext": true,
    "hasPrev": false
  }
}

Team roster

GET/api/v1/cs2/teams/{teamIdOrSlug}/roster

A team's current players and coach, with role, country and join date where known.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/roster" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "teamId": "cs2-team-9565",
      "teamName": "Vitality",
      "playerId": "cs2-player-11893",
      "playerNickname": "ZywOo",
      "playerName": "Mathieu Herbaut",
      "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
      "playerSlug": "zywoo",
      "countryName": "France",
      "countryCode": "FR",
      "age": 25,
      "rating": 1.25,
      "mapsPlayed": 167,
      "role": "AWPer",
      "fromAt": "2018-10-01T12:00:00.000Z",
      "toAt": null,
      "isActive": true,
      "tenureKnown": true,
      "tenureUnavailableReason": null,
      "lastSyncedAt": "2026-10-26T22:13:07.763Z"
    },
    {
      "teamId": "cs2-team-9565",
      "teamName": "Vitality",
      "playerId": "cs2-player-9086",
      "playerNickname": "XTQZZZ",
      "playerName": "Rémy Quoniam",
      "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp",
      "playerSlug": "xtqzzz",
      "countryName": "France",
      "countryCode": "FR",
      "age": 37,
      "rating": null,
      "mapsPlayed": null,
      "role": "coach",
      "fromAt": null,
      "toAt": null,
      "isActive": true,
      "tenureKnown": false,
      "tenureUnavailableReason": "source_join_date_unavailable",
      "lastSyncedAt": "2026-10-26T22:13:07.305Z"
    }
  ],
  "meta": {
    "count": 6,
    "rosterCheckedAt": "2026-10-26T22:13:08.218Z",
    "rosterStatus": "complete",
    "noActivePlayers": false,
    "unknownRosterSlots": 0,
    "partialRoster": false,
    "activePlayerCount": 5,
    "coachCount": 1,
    "rosterTenureKnown": false,
    "rosterTenureUnavailableReason": "source_join_date_unavailable",
    "activePlayers": 5,
    "coaches": 1,
    "lastKnownRoster": false,
    "limit": 6,
    "total": 6,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team roster history

GET/api/v1/cs2/teams/{teamIdOrSlug}/roster-history
GET/api/v1/cs2/teams/{teamIdOrSlug}/players/history

Every player who has played for a team, with start and end dates. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
changesLimitstringFilter by changesLimit.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/roster-history" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_roster_history",
    "teamId": "cs2-team-9565",
    "teamName": "Vitality",
    "dataAvailable": true,
    "rosterStatus": "partial",
    "noActivePlayers": false,
    "unknownRosterSlots": 3,
    "partialRoster": true,
    "activePlayerCount": 2,
    "coachCount": 0,
    "rosterTenureKnown": true,
    "rosterTenureUnavailableReason": null,
    "currentRoster": [
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-11816",
        "playerNickname": "ropz",
        "playerName": "Robin Kool",
        "playerImageUrl": null,
        "playerSlug": "ropz",
        "countryName": "Estonia",
        "countryCode": "EE",
        "age": 26,
        "rating": 1.12,
        "mapsPlayed": 170,
        "role": "rifler",
        "fromAt": "2025-01-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-10-26T22:13:08.218Z"
      },
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-18462",
        "playerNickname": "mezii",
        "playerName": "William Merriman",
        "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8e03966f6fdc8d8ad9479e45918277c3.webp",
        "playerSlug": "mezii",
        "countryName": "United Kingdom",
        "countryCode": "GB",
        "age": 27,
        "rating": 1.05,
        "mapsPlayed": 119,
        "role": "rifler",
        "fromAt": "2023-11-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-10-26T22:13:08.066Z"
      }
    ],
    "activePlayers": [
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-11816",
        "playerNickname": "ropz",
        "playerName": "Robin Kool",
        "playerImageUrl": null,
        "playerSlug": "ropz",
        "countryName": "Estonia",
        "countryCode": "EE",
        "age": 26,
        "rating": 1.12,
        "mapsPlayed": 170,
        "role": "rifler",
        "fromAt": "2025-01-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-10-26T22:13:08.218Z"
      },
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-18462",
        "playerNickname": "mezii",
        "playerName": "William Merriman",
        "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8e03966f6fdc8d8ad9479e45918277c3.webp",
        "playerSlug": "mezii",
        "countryName": "United Kingdom",
        "countryCode": "GB",
        "age": 27,
        "rating": 1.05,
        "mapsPlayed": 119,
        "role": "rifler",
        "fromAt": "2023-11-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-10-26T22:13:08.066Z"
      }
    ],
    "coach": null,
    "coaches": [],
    "historicalMemberships": [
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-11816",
        "playerNickname": "ropz",
        "playerName": "Robin Kool",
        "playerImageUrl": null,
        "playerSlug": 
…

Team matches

GET/api/v1/cs2/teams/{teamIdOrSlug}/matches

A team's matches, upcoming and finished.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
date_endstringSame as to.
date_startstringSame as from.
fromstringStart of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
offsetintegerRows to skip, for paging.
opponentstringOnly matches against this team (id or slug): the head-to-head history. Aliases opponentId, opponent_id.
opponentIdstringFilter by opponentId.
opponent_idstringFilter by opponent_id.
orderstringFilter by order.
pageintegerPage number, starting at 1.
sortstringasc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise.
statusstringFilter by status.
tostringEnd of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end.
typestringall (default), upcoming or completed (recent, results, past are aliases). Every row carries teamPerspective {teamScore, opponentScore, result W/L/upcoming/live} for the team in the path.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/matches" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399852",
      "eventId": "cs2-event-8251",
      "eventName": "BLAST Rivals 2026 Season 2",
      "eventSlug": "blast-rivals-2026-season-2",
      "stageName": null,
      "startsAt": "2026-11-11T05:30:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-11283",
      "team1Name": "Vitality",
      "team2Name": "Falcons",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "vetoOrder": [],
      "lastSyncedAt": "2026-10-26T22:44:00.250Z",
      "lastVerified": "2026-10-26T22:44:00.250Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8251",
        "name": "BLAST Rivals 2026 Season 2",
        "slug": "blast-rivals-2026-season-2",
        "imageUrl": null,
        "prizePool": 1000000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "upcoming",
        "region": "Europe",
        "startsAt": "2026-11-11T00:00:00.000Z",
        "endsAt": "2026-11-15T23:59:59.000Z",
        "eventId": "cs2-event-8251",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a11314f2b67c8ef270530053d054d49.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 2,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "vrsRanking": 1
      },
      "team2": {
        "id": "cs2-team-11283",
        "name": "Falcons",
        "slug": "falcons",
        "teamTag": "FALCONS",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/4c8ec6825eb47a8cdd03650e31e74831.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 6,
        "vrsRanking": 7
      },
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399747",
      "eventId": "cs2-event-8050",
      "eventName": "PGL Masters Bucharest 2026",
      "eventSlug": "pgl-masters-bucharest-2026",
      "stageName": null,
      "startsAt": "2026-10-27T17:00:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-4608",
      "team1Name": "Vitality",
      "team2Name": "Natus Vincere",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "vetoOrder": [],
      "lastSyncedAt": "2026-10-26T22:47:08.097Z",
      "lastVerified": "2026-10-26T22:47:08.097Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8050",
        "name": "PGL Masters Bucharest 2026",
        "slug": "pgl-masters-bucharest-2026",
        "imageUrl": null,
        "prizePool": 1250000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "live",
        "region": "Europe",
        "startsAt": "2026-10-24T00:00:00.000Z",
        "endsAt": "2026-10-31T23:5
…

Team upcoming matches

GET/api/v1/cs2/teams/{teamIdOrSlug}/upcoming
GET/api/v1/cs2/teams/{teamIdOrSlug}/upcoming-matches

A team's scheduled matches. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
limitintegerRows to return. Maximum 50; larger values are reduced to 50.
orderstringFilter by order.
sortstringasc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/upcoming" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399747",
      "eventId": "cs2-event-8050",
      "eventName": "PGL Masters Bucharest 2026",
      "eventSlug": "pgl-masters-bucharest-2026",
      "stageName": null,
      "startsAt": "2026-10-27T17:00:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-4608",
      "team1Name": "Vitality",
      "team2Name": "Natus Vincere",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "vetoOrder": [],
      "lastSyncedAt": "2026-10-26T22:47:08.097Z",
      "lastVerified": "2026-10-26T22:47:08.097Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8050",
        "name": "PGL Masters Bucharest 2026",
        "slug": "pgl-masters-bucharest-2026",
        "imageUrl": null,
        "prizePool": 1250000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "live",
        "region": "Europe",
        "startsAt": "2026-10-24T00:00:00.000Z",
        "endsAt": "2026-10-31T23:59:59.000Z",
        "eventId": "cs2-event-8050",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/856742d130d33845a6bc550723b76ede.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 2,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "vrsRanking": 1
      },
      "team2": {
        "id": "cs2-team-4608",
        "name": "Natus Vincere",
        "slug": "natus-vincere",
        "teamTag": "NV",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/33aea6490b84e8284318ac8d52d9b8f3.svg",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 11,
        "vrsRanking": 15
      },
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399852",
      "eventId": "cs2-event-8251",
      "eventName": "BLAST Rivals 2026 Season 2",
      "eventSlug": "blast-rivals-2026-season-2",
      "stageName": null,
      "startsAt": "2026-11-11T05:30:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-11283",
      "team1Name": "Vitality",
      "team2Name": "Falcons",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "vetoOrder": [],
      "lastSyncedAt": "2026-10-26T22:44:00.250Z",
      "lastVerified": "2026-10-26T22:44:00.250Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8251",
        "name": "BLAST Rivals 2026 Season 2",
        "slug": "blast-rivals-2026-season-2",
        "imageUrl": null,
        "prizePool": 1000000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "upcoming",
        "region": "Europe",
        "startsAt": "2026-11-11T00:00:00.000Z",
        "endsAt": "2026-11-
…

Team results

GET/api/v1/cs2/teams/{teamIdOrSlug}/results
GET/api/v1/cs2/teams/{teamIdOrSlug}/recent

A team's finished matches, newest first. Each finished match carries resultType (played, forfeit = nothing played and the series awarded, partial_forfeit = some maps played and the rest conceded), isForfeit and forfeitedMaps. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
orderstringFilter by order.
sortstringasc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/results" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399737",
      "eventId": "cs2-event-8050",
      "eventName": "PGL Masters Bucharest 2026",
      "eventSlug": "pgl-masters-bucharest-2026",
      "stageName": null,
      "startsAt": "2026-10-26T10:20:00.000Z",
      "endsAt": "2026-10-26T13:20:51.002Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-13286",
      "team1Name": "Vitality",
      "team2Name": "FUT",
      "team1Score": 1,
      "team2Score": 2,
      "winnerTeamId": "cs2-team-13286",
      "vetoOrder": [
        {
          "map": "inferno",
          "raw": "FUT removed inferno",
          "order": 1,
          "action": "ban",
          "teamId": "cs2-team-13286",
          "teamName": "FUT",
          "mapName": "inferno",
          "mapNumber": null
        },
        {
          "map": "ancient",
          "raw": "Vitality removed ancient",
          "order": 2,
          "action": "ban",
          "teamId": "cs2-team-9565",
          "teamName": "Vitality",
          "mapName": "ancient",
          "mapNumber": null
        }
      ],
      "lastSyncedAt": "2026-10-26T22:46:33.928Z",
      "lastVerified": "2026-10-26T22:46:33.928Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8050",
        "name": "PGL Masters Bucharest 2026",
        "slug": "pgl-masters-bucharest-2026",
        "imageUrl": null,
        "prizePool": 1250000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "live",
        "region": "Europe",
        "startsAt": "2026-10-24T00:00:00.000Z",
        "endsAt": "2026-10-31T23:59:59.000Z",
        "eventId": "cs2-event-8050",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/856742d130d33845a6bc550723b76ede.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 2,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "vrsRanking": 1
      },
      "team2": {
        "id": "cs2-team-13286",
        "name": "FUT",
        "slug": "fut",
        "teamTag": "FUT",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/a6016f8ded98a136c27e2df8ceb3a2e6.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 7,
        "vrsRanking": 8
      },
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399729",
      "eventId": "cs2-event-8050",
      "eventName": "PGL Masters Bucharest 2026",
      "eventSlug": "pgl-masters-bucharest-2026",
      "stageName": null,
      "startsAt": "2026-10-25T09:40:00.000Z",
      "endsAt": "2026-10-25T13:47:01.422Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-6248",
      "team1Name": "Vitality",
      "team2Name": "The MongolZ",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId"
…

Team trends

GET/api/v1/cs2/teams/{teamIdOrSlug}/trends

A team's form over time: win rate and rating by period.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/trends" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_performance_trends",
    "teamId": "cs2-team-9565",
    "teamName": "Vitality",
    "dataAvailable": true,
    "trends": [
      {
        "trendKey": "career:source-team-9565",
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "windowType": "career",
        "periodStart": null,
        "periodEnd": "2026-10-26T04:41:15.174Z",
        "matches": 280,
        "matchWins": 219,
        "matchLosses": 58,
        "maps": 923,
        "mapWins": 466,
        "mapLosses": 174,
        "mapsDecided": 640,
        "mapsUnresolved": 283,
        "winRate": 0.7906,
        "mapWinPercent": 0.7281,
        "mapWinPercentBasis": "decided_maps",
        "roundsFor": 8185,
        "roundsAgainst": 6231,
        "opponentDifficulty": null,
        "recentForm": {
          "sourceEndpoint": "/api/v1/cs2/teams/{teamId}/form"
        },
        "mapStats": {
          "sourceEndpoint": "/api/v1/cs2/teams/{teamId}/map-stats"
        },
        "source": "computed_from_matches",
        "computedAt": "2026-10-26T04:41:15.174Z"
      },
      {
        "trendKey": "last_30_days:source-team-9565",
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "windowType": "last_30_days",
        "periodStart": "2026-09-26T04:41:15.174Z",
        "periodEnd": "2026-10-26T04:41:15.174Z",
        "matches": 10,
        "matchWins": 8,
        "matchLosses": 0,
        "maps": 32,
        "mapWins": 17,
        "mapLosses": 3,
        "mapsDecided": 20,
        "mapsUnresolved": 12,
        "winRate": 1,
        "mapWinPercent": 0.85,
        "mapWinPercentBasis": "decided_maps",
        "roundsFor": 245,
        "roundsAgainst": 149,
        "opponentDifficulty": null,
        "recentForm": {
          "sourceEndpoint": "/api/v1/cs2/teams/{teamId}/form"
        },
        "mapStats": {
          "sourceEndpoint": "/api/v1/cs2/teams/{teamId}/map-stats"
        },
        "source": "computed_from_matches",
        "computedAt": "2026-10-26T04:41:15.174Z"
      }
    ]
  },
  "meta": {
    "count": 2,
    "dataAvailable": true,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team stats

GET/api/v1/cs2/teams/{teamIdOrSlug}/stats

Aggregate team stats over a recent window.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
date_endstringSame as to.
date_startstringSame as from.
daysintegerOnly matches from the last N days (e.g. 90). Without a window: the team's last 250 matches.
fromstringStart of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start.
tostringEnd of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end.
windowstringSame as days, written as 90d, 12w, 3m or 1y.
windowDaysintegerLook-back window in days.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_stats",
    "teamId": "cs2-team-9565",
    "window": {
      "from": null,
      "to": null,
      "days": null,
      "defaultLastMatches": 250
    },
    "matches": 246,
    "wins": 194,
    "losses": 52,
    "winRate": 0.7886178861788617,
    "maps": 577,
    "mapWinRates": [
      {
        "mapName": "Mirage",
        "played": 112,
        "wins": 80,
        "losses": 32,
        "winRate": 0.7142857142857143,
        "isUnknownMap": false,
        "unavailableReason": null,
        "mapNameCanonical": "Mirage",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png",
        "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png",
        "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png"
      },
      {
        "mapName": "Inferno",
        "played": 110,
        "wins": 83,
        "losses": 27,
        "winRate": 0.7545454545454545,
        "isUnknownMap": false,
        "unavailableReason": null,
        "mapNameCanonical": "Inferno",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png",
        "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png",
        "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png"
      }
    ],
    "unknownMapCount": 0,
    "averageRating": 1.1015878494994806,
    "recentForm": [
      {
        "matchId": "cs2-match-2399737",
        "opponentId": "cs2-team-13286",
        "opponentName": "FUT",
        "result": "L",
        "startsAt": "2026-10-26T10:20:00.000Z",
        "score": {
          "team1": 1,
          "team2": 2
        }
      },
      {
        "matchId": "cs2-match-2399729",
        "opponentId": "cs2-team-6248",
        "opponentName": "The MongolZ",
        "result": "W",
        "startsAt": "2026-10-25T09:40:00.000Z",
        "score": {
          "team1": 2,
          "team2": 0
        }
      }
    ],
    "ctT": {
      "ctRounds": 967,
      "ctWins": 624,
      "ctWinPercent": 64.5,
      "tRounds": 938,
      "tWins": 481,
      "tWinPercent": 51.3
    },
    "economy": {
      "pistolRounds": 176,
      "pistolWins": 102,
      "pistolWinPercent": 58,
      "ecoRounds": 139,
      "ecoWins": 29,
      "ecoWinPercent": 20.9,
      "forceRounds": 235,
      "forceWins": 88,
      "forceWinPercent": 37.4,
      "fullBuyRounds": 1355,
      "fullBuyWins": 886,
      "fullBuyWinPercent": 65.4
    },
    "dataAvailable": true,
    "unavailableReason": null
  },
  "meta": {}
}

Team maps

GET/api/v1/cs2/teams/{teamIdOrSlug}/maps
GET/api/v1/cs2/teams/{teamIdOrSlug}/map-pool

Maps from a team's matches, one row per map (played or scheduled) with score, halves and winner. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
date_endstringSame as to.
date_startstringSame as from.
daysintegerOnly matches from the last N days (e.g. 90). Without a window: the team's last 250 matches.
fromstringStart of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start.
limitintegerRows to return. Maximum 100; larger values are reduced to 100.
tostringEnd of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end.
windowstringSame as days, written as 90d, 12w, 3m or 1y.
windowDaysintegerLook-back window in days.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/maps" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2399852-map-1",
      "matchId": "cs2-match-2399852",
      "mapNumber": 1,
      "mapName": "TBA",
      "status": "upcoming",
      "team1Score": null,
      "team2Score": null,
      "team1Halves": null,
      "team2Halves": null,
      "winnerTeamId": null,
      "durationRounds": null,
      "lastSyncedAt": "2026-10-26T19:47:54.344Z",
      "mapImageUrl": null,
      "pickTeamId": null,
      "objectiveStats": {
        "dataAvailable": false,
        "unavailableReason": "not_yet_indexed",
        "confidence": {
          "plants": "high",
          "defuses": "high",
          "explosions": "high",
          "clutchDefuse": "medium"
        },
        "teamStats": [],
        "roundEvents": []
      },
      "availableSubresources": [],
      "unavailableSubresources": [
        "player_stats",
        "objective_stats"
      ],
      "unavailableFields": {},
      "dataQuality": "partial",
      "confidence": "medium",
      "confidenceScore": 0.7,
      "lastVerified": "2026-10-26T19:47:54.344Z",
      "mapNameCanonical": null,
      "…": "8 more fields"
    },
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2399852-map-2",
      "matchId": "cs2-match-2399852",
      "mapNumber": 2,
      "mapName": "TBA",
      "status": "upcoming",
      "team1Score": null,
      "team2Score": null,
      "team1Halves": null,
      "team2Halves": null,
      "winnerTeamId": null,
      "durationRounds": null,
      "lastSyncedAt": "2026-10-26T19:47:54.372Z",
      "mapImageUrl": null,
      "pickTeamId": null,
      "objectiveStats": {
        "dataAvailable": false,
        "unavailableReason": "not_yet_indexed",
        "confidence": {
          "plants": "high",
          "defuses": "high",
          "explosions": "high",
          "clutchDefuse": "medium"
        },
        "teamStats": [],
        "roundEvents": []
      },
      "availableSubresources": [],
      "unavailableSubresources": [
        "player_stats",
        "objective_stats"
      ],
      "unavailableFields": {},
      "dataQuality": "partial",
      "confidence": "medium",
      "confidenceScore": 0.7,
      "lastVerified": "2026-10-26T19:47:54.372Z",
      "mapNameCanonical": null,
      "…": "8 more fields"
    }
  ],
  "meta": {
    "count": 2,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team form

GET/api/v1/cs2/teams/{teamIdOrSlug}/form

A team's last results as a W/L sequence with scores.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
limitintegerRows to return. Maximum 50; larger values are reduced to 50.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/form" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_form",
    "teamId": "cs2-team-9565",
    "teamName": "Vitality",
    "window": 2,
    "record": {
      "wins": 1,
      "losses": 1,
      "unknown": 0,
      "winPercent": 50
    },
    "matches": [
      {
        "matchId": "cs2-match-2399737",
        "status": "completed",
        "startsAt": "2026-10-26T10:20:00.000Z",
        "eventName": "PGL Masters Bucharest 2026",
        "bestOf": 3,
        "opponentId": "cs2-team-13286",
        "opponentName": "FUT",
        "teamScore": 1,
        "opponentScore": 2,
        "score": "1-2",
        "result": "L",
        "maps": [
          {
            "mapId": "cs2-match-2399737-map-1",
            "mapNumber": 1,
            "mapName": "Mirage",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 9,
            "score": "13-9",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 9
          },
          {
            "mapId": "cs2-match-2399737-map-2",
            "mapNumber": 2,
            "mapName": "Dust2",
            "status": "completed",
            "teamScore": 9,
            "opponentScore": 13,
            "score": "9-13",
            "result": "L",
            "winnerTeamId": "cs2-team-13286",
            "roundsFor": 9,
            "roundsAgainst": 13
          }
        ]
      },
      {
        "matchId": "cs2-match-2399729",
        "status": "completed",
        "startsAt": "2026-10-25T09:40:00.000Z",
        "eventName": "PGL Masters Bucharest 2026",
        "bestOf": 3,
        "opponentId": "cs2-team-6248",
        "opponentName": "The MongolZ",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2399729-map-1",
            "mapNumber": 1,
            "mapName": "Inferno",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 6,
            "score": "13-6",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 6
          },
          {
            "mapId": "cs2-match-2399729-map-2",
            "mapNumber": 2,
            "mapName": "Cache",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 3,
            "score": "13-3",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 3
          }
        ]
      }
    ],
    "dataAvailable": true
  },
  "meta": {
    "count": 2,
    "dataAvailable": true,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team map stats

GET/api/v1/cs2/teams/{teamIdOrSlug}/map-stats

Per-map win rate, rounds and pick/ban tendencies.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
date_endstringSame as to.
date_startstringSame as from.
daysintegerOnly matches from the last N days (e.g. 90). Without a window: the team's last 250 matches.
fromstringStart of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
tostringEnd of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end.
windowstringSame as days, written as 90d, 12w, 3m or 1y.
windowDaysintegerLook-back window in days.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/map-stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "dataAvailable": false,
    "unavailableReason": "not_yet_indexed",
    "dataQuality": "unavailable",
    "message": "No map history has been indexed for this CS2 team yet."
  },
  "meta": {
    "count": 0,
    "dataAvailable": false,
    "limit": 0,
    "total": 0,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team head-to-head

GET/api/v1/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}
GET/api/v1/cs2/teams/{teamIdOrSlug}/h2h/{opponentIdOrSlug}

Record and past matches between two teams. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
opponentIdOrSlug (path)*stringOpponent team id or slug.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/vs/natus-vincere" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_h2h",
    "team": {
      "id": "cs2-team-9565",
      "name": "Vitality"
    },
    "opponent": {
      "id": "cs2-team-7020",
      "name": "Spirit"
    },
    "totalMatches": 2,
    "matchRecord": {
      "teamWins": 2,
      "opponentWins": 0,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapRecord": {
      "teamWins": 5,
      "opponentWins": 0,
      "totalDecidedMaps": 5,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapBreakdown": [
      {
        "mapName": "Mirage",
        "played": 2,
        "teamWins": 2,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 35,
        "roundsAgainst": 30,
        "roundDifferential": 5
      },
      {
        "mapName": "Dust2",
        "played": 2,
        "teamWins": 2,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 26,
        "roundsAgainst": 13,
        "roundDifferential": 13
      }
    ],
    "recent5Matches": [
      {
        "matchId": "cs2-match-2393245",
        "status": "completed",
        "startsAt": "2026-04-19T17:00:00.000Z",
        "eventName": "IEM Rio 2026",
        "bestOf": 5,
        "opponentId": "cs2-team-7020",
        "opponentName": "Spirit",
        "teamScore": 3,
        "opponentScore": 0,
        "score": "3-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2393245-map-1",
            "mapNumber": 1,
            "mapName": "Mirage",
            "status": "completed",
            "teamScore": 16,
            "opponentScore": 13,
            "score": "16-13",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 16,
            "roundsAgainst": 13
          },
          {
            "mapId": "cs2-match-2393245-map-2",
            "mapNumber": 2,
            "mapName": "Nuke",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 10,
            "score": "13-10",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 10
          }
        ]
      },
      {
        "matchId": "cs2-match-2388128",
        "status": "completed",
        "startsAt": "2025-12-13T16:00:00.000Z",
        "eventName": "StarLadder Budapest Major 2025",
        "bestOf": 3,
        "opponentId": "cs2-team-7020",
        "opponentName": "Spirit",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2388128-map-1",
            "mapNumber": 1,
            "mapName": "Mirage",
            "status": "completed",
            "teamScore": 19,
            "opponentScore": 17,
            "score": "19-17",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 19,
            "roundsAgainst": 17
          },
          {
            "mapId": "cs2-match-2388128-map-2",
            "mapNumber": 2,
            "mapName": "Dust2",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 8,
            "score": "13-8",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 8
          }
        ]
      }
    ],
 
…

Team details

GET/api/v1/cs2/teams/{teamIdOrSlug}

One team: name, logo, country, region, world ranking and current roster.

Query parameters

ParameterTypeDescription
teamIdOrSlug (path)*stringTeam id (cs2-team-7020) or slug (spirit).
recentLimitstringFilter by recentLimit.
recent_limitstringFilter by recent_limit.
upcomingLimitstringFilter by upcomingLimit.
upcoming_limitstringFilter by upcoming_limit.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team",
    "id": "cs2-team-9565",
    "name": "Vitality",
    "slug": "vitality",
    "teamTag": "VITALITY",
    "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
    "countryName": "Europe",
    "countryCode": null,
    "region": "Europe",
    "worldRanking": 2,
    "lastSyncedAt": "2026-10-26T22:47:07.809Z",
    "lastVerified": "2026-10-26T22:47:07.809Z",
    "confidence": "high",
    "roster": [
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-11893",
        "playerNickname": "ZywOo",
        "playerName": "Mathieu Herbaut",
        "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
        "playerSlug": "zywoo",
        "countryName": "France",
        "countryCode": "FR",
        "age": 25,
        "rating": 1.25,
        "mapsPlayed": 167,
        "role": "AWPer",
        "fromAt": "2018-10-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-10-26T22:13:07.763Z"
      },
      {
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-9086",
        "playerNickname": "XTQZZZ",
        "playerName": "Rémy Quoniam",
        "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp",
        "playerSlug": "xtqzzz",
        "countryName": "France",
        "countryCode": "FR",
        "age": 37,
        "rating": null,
        "mapsPlayed": null,
        "role": "coach",
        "fromAt": null,
        "toAt": null,
        "isActive": true,
        "tenureKnown": false,
        "tenureUnavailableReason": "source_join_date_unavailable",
        "lastSyncedAt": "2026-10-26T22:13:07.305Z"
      }
    ],
    "recentResults": [
      {
        "entityType": "cs2_match",
        "id": "cs2-match-2399737",
        "eventId": "cs2-event-8050",
        "eventName": "PGL Masters Bucharest 2026",
        "eventSlug": "pgl-masters-bucharest-2026",
        "stageName": null,
        "startsAt": "2026-10-26T10:20:00.000Z",
        "endsAt": "2026-10-26T13:20:51.002Z",
        "bestOf": 3,
        "status": "completed",
        "team1Id": "cs2-team-9565",
        "team2Id": "cs2-team-13286",
        "team1Name": "Vitality",
        "team2Name": "FUT",
        "team1Score": 1,
        "team2Score": 2,
        "winnerTeamId": "cs2-team-13286",
        "vetoOrder": [
          {
            "map": "inferno",
            "raw": "FUT removed inferno",
            "order": 1,
            "action": "ban",
            "teamId": "cs2-team-13286",
            "teamName": "FUT",
            "mapName": "inferno",
            "mapNumber": null
          },
          {
            "map": "ancient",
            "raw": "Vitality removed ancient",
            "order": 2,
            "action": "ban",
            "teamId": "cs2-team-9565",
            "teamName": "Vitality",
            "mapName": "ancient",
            "mapNumber": null
          }
        ],
        "lastSyncedAt": "2026-10-26T22:46:33.928Z",
        "lastVerified": "2026-10-26T22:46:33.928Z",
        "confidence": "high",
        "event": {
          "id": "cs2-event-8050",
          "name": "PGL Masters Bucharest 2026",
          "slug": "pgl-masters-buchares
…

List teams

GET/api/v1/cs2/teams

Teams ordered by world ranking, with logo, country and roster. `compact=true` returns lighter rows.

Query parameters

ParameterTypeDescription
fieldsstringComma-separated list of fields to return.
limitintegerRows to return. Maximum 100; larger values are reduced to 100.
offsetintegerRows to skip, for paging.
pageintegerPage number, starting at 1.
qstringSearch text.
searchstringSearch text.
summarybooleantrue returns a summary instead of full rows.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/teams" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_team",
      "id": "cs2-team-7020",
      "name": "Spirit",
      "slug": "spirit",
      "teamTag": "SPIRIT",
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp",
      "countryName": "Russia",
      "countryCode": "RU",
      "region": "Europe",
      "worldRanking": 1,
      "lastSyncedAt": "2026-10-26T22:47:00.752Z",
      "lastVerified": "2026-10-26T22:47:00.752Z",
      "confidence": "high",
      "roster": [
        {
          "teamId": "cs2-team-7020",
          "teamName": "Spirit",
          "playerId": "cs2-player-16920",
          "playerNickname": "sh1ro",
          "playerName": "Dmitry Sokolov",
          "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7f8014979bb54f2cd974d1a369c24939.webp",
          "playerSlug": "sh1ro",
          "countryName": "Russia",
          "countryCode": "RU",
          "age": 24,
          "rating": 1.19,
          "mapsPlayed": 136,
          "role": "AWPer",
          "fromAt": "2023-12-01T12:00:00.000Z",
          "toAt": null,
          "isActive": true,
          "tenureKnown": true,
          "tenureUnavailableReason": null,
          "lastSyncedAt": "2026-10-26T22:13:03.269Z"
        },
        {
          "teamId": "cs2-team-7020",
          "teamName": "Spirit",
          "playerId": "cs2-player-2154",
          "playerNickname": "hally",
          "playerName": "Sergey Shavaev",
          "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/445dd6783047f7e0191ccedacc007ac8.png",
          "playerSlug": "hally",
          "countryName": "Russia",
          "countryCode": "RU",
          "age": 33,
          "rating": null,
          "mapsPlayed": null,
          "role": "coach",
          "fromAt": null,
          "toAt": null,
          "isActive": true,
          "tenureKnown": false,
          "tenureUnavailableReason": "source_join_date_unavailable",
          "lastSyncedAt": "2026-10-26T22:13:01.531Z"
        }
      ],
      "rankingHistoryCount": 180,
      "rankingDevelopmentCount": 180,
      "trophiesCount": 12,
      "achievementsCount": 12,
      "newsLinksCount": 10,
      "heavyFieldsOmitted": [
        "rankingHistory",
        "rankingDevelopment"
      ],
      "heavyFieldsAvailableAt": "/api/v1/cs2/teams/spirit",
      "rosterStatus": "complete",
      "noActivePlayers": false,
      "unknownRosterSlots": 0,
      "…": "16 more fields"
    },
    {
      "entityType": "cs2_team",
      "id": "cs2-team-9565",
      "name": "Vitality",
      "slug": "vitality",
      "teamTag": "VITALITY",
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
      "countryName": "Europe",
      "countryCode": null,
      "region": "Europe",
      "worldRanking": 2,
      "lastSyncedAt": "2026-10-26T22:47:07.809Z",
      "lastVerified": "2026-10-26T22:47:07.809Z",
      "confidence": "high",
      "roster": [
        {
          "teamId": "cs2-team-9565",
          "teamName": "Vitality",
          "playerId": "cs2-player-11893",
          "playerNickname": "ZywOo",
          "playerName": "Mathieu Herbaut",
          "playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
          "playerSlug": "zywoo",
          "countryName": "France",
          "countryCode": "FR",
          "age": 25,
          
…

Try the CS2 Teams API

Run a real request with your key, then wire the same call into your app. The free plan includes 500 requests a month.

bash
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality" \
  -H "x-api-key: YOUR_API_KEY"