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, 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/252b36c5681479de69062d9a8b90736e.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/2c2c7af6d0a6aad17cd9e46ce44fd133.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.31,
      "mapsPlayed": 167,
      "role": "AWPer",
      "fromAt": "2018-10-01T12:00:00.000Z",
      "toAt": null,
      "isActive": true,
      "tenureKnown": true,
      "tenureUnavailableReason": null,
      "lastSyncedAt": "2026-09-23T00:11:42.818Z"
    },
    {
      "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": 0,
      "mapsPlayed": null,
      "role": "coach",
      "fromAt": null,
      "toAt": null,
      "isActive": true,
      "tenureKnown": false,
      "tenureUnavailableReason": "source_join_date_unavailable",
      "lastSyncedAt": "2026-09-23T00:11:42.387Z"
    }
  ],
  "meta": {
    "count": 6,
    "rosterCheckedAt": "2026-09-23T00:11:43.764Z",
    "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": 4,
    "partialRoster": true,
    "activePlayerCount": 1,
    "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.05,
        "mapsPlayed": 170,
        "role": "rifler",
        "fromAt": "2018-10-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-09-23T00:11:43.764Z"
      }
    ],
    "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.05,
        "mapsPlayed": 170,
        "role": "rifler",
        "fromAt": "2018-10-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-09-23T00:11:43.764Z"
      }
    ],
    "coach": null,
    "coaches": [],
    "historicalMemberships": [
      {
        "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.05,
        "mapsPlayed": 170,
        "role": "rifler",
        "fromAt": "2018-10-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-09-23T00:11:43.764Z"
      }
    ],
    "rosterChanges": [
      {
        "changeId": "abded9f6-37f9-499a-a1b4-47cb0ae1b789",
        "changeType": "join",
        "teamId": "cs2-team-9565",
        "fromTeamId": null,
        "toTeamId": "cs2-team-9565",
        "teamName": "Vitality",
        "playerId": "cs2-player-9086",
        "playerName": "XTQZZZ",
        "roleBefore": null,
        "roleAfter": "coach",
        "effectiveAt": "2026-07-24T14:11:58.925Z",
        "detectedAt": "2026-07-24T14:11:58.926Z",
        "confidence": "medium"
      },
      {
        "changeId": "915264bd-9a63-4803-a347-bc2858460ab0",
        "changeType": "leave",
        "teamId": "cs2-team-6073",
        "fromTeamId": "cs2-team-6073",
        "toTeamId": "cs2-team-9565",
        "teamName": "melty",
        "playerId": "cs2-player-9086",
        "playerName": "XTQZZZ",
        "roleBefore": "rifler",
        "roleAfter": null,
        "effectiveAt": "2026-07-24T14:11:58.775Z",
        "detectedAt": "2026-07-24T14:11:58.777Z",
        "confidence": "medium"
      }
    ]
  },
  "meta": {
    "memberships":
…

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).
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
offsetintegerRows to skip, for paging.
pageintegerPage number, starting at 1.
statusstringFilter by status.
typestringFilter by type.

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-2398108",
      "eventId": "cs2-event-8057",
      "eventName": "StarLadder StarSeries Fall 2026",
      "eventSlug": "starladder-starseries-fall-2026",
      "stageName": null,
      "startsAt": "2026-09-20T18:49:47.000Z",
      "endsAt": null,
      "bestOf": 5,
      "status": "completed",
      "team1Id": "cs2-team-11861",
      "team2Id": "cs2-team-9565",
      "team1Name": "Aurora",
      "team2Name": "Vitality",
      "team1Score": 1,
      "team2Score": 3,
      "winnerTeamId": "cs2-team-9565",
      "lastSyncedAt": "2026-09-23T03:07:06.893Z",
      "lastVerified": "2026-09-23T03:07:06.893Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8057",
        "name": "StarLadder StarSeries Fall 2026",
        "slug": "starladder-starseries-fall-2026",
        "imageUrl": null,
        "prizePool": 5000008,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 75,
        "status": "completed",
        "region": null,
        "startsAt": "2026-09-17T10:00:00.000Z",
        "endsAt": "2026-09-20T23:59:59.000Z",
        "eventId": "cs2-event-8057",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-11861",
        "name": "Aurora",
        "slug": "aurora",
        "teamTag": "AURORA",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp",
        "countryName": "Türkiye",
        "countryCode": "TR",
        "worldRanking": 9
      },
      "team2": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "France",
        "countryCode": "FR",
        "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"
      },
      "maps": [
        {
          "id": "cs2-match-2398108-map-1",
          "matchId": "cs2-match-2398108",
          "mapNumber": 1,
          "mapName": "Anubis",
          "status": "completed",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": [
            3,
            1
          ],
          "team2Halves": [
            9,
            4
          ],
          "winnerTeamId": "cs2-team-9565",
          "durationRounds": 17,
          "lastSyncedAt": "2026-09-22T19:46:26.632Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": null,
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          },
          "scoreP
…

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.

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": [],
  "meta": {
    "count": 0,
    "type": "upcoming",
    "limit": 0,
    "total": 0,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Team results

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

A team's finished matches, newest first. 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.

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-2398108",
      "eventId": "cs2-event-8057",
      "eventName": "StarLadder StarSeries Fall 2026",
      "eventSlug": "starladder-starseries-fall-2026",
      "stageName": null,
      "startsAt": "2026-09-20T18:49:47.000Z",
      "endsAt": null,
      "bestOf": 5,
      "status": "completed",
      "team1Id": "cs2-team-11861",
      "team2Id": "cs2-team-9565",
      "team1Name": "Aurora",
      "team2Name": "Vitality",
      "team1Score": 1,
      "team2Score": 3,
      "winnerTeamId": "cs2-team-9565",
      "lastSyncedAt": "2026-09-23T03:07:06.893Z",
      "lastVerified": "2026-09-23T03:07:06.893Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8057",
        "name": "StarLadder StarSeries Fall 2026",
        "slug": "starladder-starseries-fall-2026",
        "imageUrl": null,
        "prizePool": 5000008,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 75,
        "status": "completed",
        "region": null,
        "startsAt": "2026-09-17T10:00:00.000Z",
        "endsAt": "2026-09-20T23:59:59.000Z",
        "eventId": "cs2-event-8057",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-11861",
        "name": "Aurora",
        "slug": "aurora",
        "teamTag": "AURORA",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp",
        "countryName": "Türkiye",
        "countryCode": "TR",
        "worldRanking": 9
      },
      "team2": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "France",
        "countryCode": "FR",
        "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"
      },
      "maps": [
        {
          "id": "cs2-match-2398108-map-1",
          "matchId": "cs2-match-2398108",
          "mapNumber": 1,
          "mapName": "Anubis",
          "status": "completed",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": [
            3,
            1
          ],
          "team2Halves": [
            9,
            4
          ],
          "winnerTeamId": "cs2-team-9565",
          "durationRounds": 17,
          "lastSyncedAt": "2026-09-22T19:46:26.632Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": null,
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          },
          "scoreP
…

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-07-10T01:57:53.312Z",
        "matches": 30,
        "matchWins": 25,
        "matchLosses": 5,
        "maps": 109,
        "mapWins": 59,
        "mapLosses": 15,
        "mapsDecided": 74,
        "mapsUnresolved": 35,
        "winRate": 0.8333,
        "mapWinPercent": 0.7973,
        "mapWinPercentBasis": "decided_maps",
        "roundsFor": 940,
        "roundsAgainst": 677,
        "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-07-10T01:57:53.312Z"
      },
      {
        "trendKey": "last_30_days:source-team-9565",
        "teamId": "cs2-team-9565",
        "teamName": "Vitality",
        "windowType": "last_30_days",
        "periodStart": "2026-06-10T01:57:53.312Z",
        "periodEnd": "2026-07-10T01:57:53.312Z",
        "matches": 5,
        "matchWins": 3,
        "matchLosses": 2,
        "maps": 19,
        "mapWins": 8,
        "mapLosses": 6,
        "mapsDecided": 14,
        "mapsUnresolved": 5,
        "winRate": 0.6,
        "mapWinPercent": 0.5714,
        "mapWinPercentBasis": "decided_maps",
        "roundsFor": 158,
        "roundsAgainst": 135,
        "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-07-10T01:57:53.312Z"
      }
    ]
  },
  "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).

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",
    "matches": 249,
    "wins": 196,
    "losses": 53,
    "winRate": 0.7871485943775101,
    "maps": 825,
    "mapWinRates": [
      {
        "mapName": "Mirage",
        "played": 140,
        "wins": 76,
        "winRate": 0.5428571428571428,
        "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": 134,
        "wins": 81,
        "winRate": 0.6044776119402985,
        "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": 93,
    "averageRating": 1.1472251655629138,
    "recentForm": [
      {
        "matchId": "cs2-match-2398108",
        "opponentId": "cs2-team-11861",
        "opponentName": "Aurora",
        "result": "W",
        "startsAt": "2026-09-20T18:49:47.000Z",
        "score": {
          "team1": 1,
          "team2": 3
        }
      },
      {
        "matchId": "cs2-match-2398107",
        "opponentId": "cs2-team-8297",
        "opponentName": "FURIA",
        "result": "W",
        "startsAt": "2026-09-20T12:00:00.000Z",
        "score": {
          "team1": 2,
          "team2": 0
        }
      }
    ],
    "ctT": {
      "ctRounds": null,
      "ctWins": null,
      "ctWinPercent": null,
      "tRounds": null,
      "tWins": null,
      "tWinPercent": null,
      "source": null
    },
    "economy": {
      "pistolRounds": null,
      "pistolWins": null,
      "pistolWinPercent": null,
      "ecoRounds": null,
      "ecoWins": null,
      "ecoWinPercent": null,
      "forceRounds": null,
      "forceWins": null,
      "forceWinPercent": null,
      "fullBuyRounds": null,
      "fullBuyWins": null,
      "fullBuyWinPercent": null,
      "source": null
    },
    "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).
limitintegerRows to return. Maximum 100; larger values are reduced to 100.

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-2387547-map-4",
      "matchId": "cs2-match-2387547",
      "mapNumber": 4,
      "mapName": null,
      "status": "completed",
      "team1Score": null,
      "team2Score": null,
      "team1Halves": null,
      "team2Halves": null,
      "winnerTeamId": null,
      "durationRounds": null,
      "lastSyncedAt": "2026-09-23T03:07:48.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-09-23T03:07:48.344Z",
      "mapNameCanonical": null,
      "…": "8 more fields"
    },
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2387547-map-3",
      "matchId": "cs2-match-2387547",
      "mapNumber": 3,
      "mapName": "Mirage",
      "status": "completed",
      "team1Score": 13,
      "team2Score": 16,
      "team1Halves": [
        5,
        7
      ],
      "team2Halves": [
        7,
        5
      ],
      "winnerTeamId": "cs2-team-9565",
      "durationRounds": 29,
      "lastSyncedAt": "2026-09-23T03:07:48.072Z",
      "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png",
      "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-09-23T03:07:48.072Z",
      "mapNameCanonical": "Mirage",
      "…": "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": 2,
      "losses": 0,
      "unknown": 0,
      "winPercent": 100
    },
    "matches": [
      {
        "matchId": "cs2-match-2398108",
        "status": "completed",
        "startsAt": "2026-09-20T18:49:47.000Z",
        "eventName": "StarLadder StarSeries Fall 2026",
        "bestOf": null,
        "opponentId": "cs2-team-11861",
        "opponentName": "Aurora",
        "teamScore": 3,
        "opponentScore": 1,
        "score": "3-1",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2398108-map-1",
            "mapNumber": 1,
            "mapName": "Anubis",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 4,
            "score": "13-4",
            "result": "W",
            "winnerTeamId": "cs2-team-9565",
            "roundsFor": 13,
            "roundsAgainst": 4
          },
          {
            "mapId": "cs2-match-2398108-map-2",
            "mapNumber": 2,
            "mapName": "Inferno",
            "status": "completed",
            "teamScore": 11,
            "opponentScore": 13,
            "score": "11-13",
            "result": "L",
            "winnerTeamId": "cs2-team-11861",
            "roundsFor": 11,
            "roundsAgainst": 13
          }
        ]
      },
      {
        "matchId": "cs2-match-2398107",
        "status": "completed",
        "startsAt": "2026-09-20T12:00:00.000Z",
        "eventName": "StarLadder StarSeries Fall 2026",
        "bestOf": null,
        "opponentId": "cs2-team-8297",
        "opponentName": "FURIA",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2398107-map-1",
            "mapNumber": 1,
            "mapName": "Cache",
            "status": "completed",
            "teamScore": null,
            "opponentScore": null,
            "score": null,
            "result": "unknown",
            "winnerTeamId": null,
            "roundsFor": null,
            "roundsAgainst": null
          },
          {
            "mapId": "cs2-match-2398107-map-2",
            "mapNumber": 2,
            "mapName": "Anubis",
            "status": "completed",
            "teamScore": null,
            "opponentScore": null,
            "score": null,
            "result": "unknown",
            "winnerTeamId": null,
            "roundsFor": null,
            "roundsAgainst": null
          }
        ]
      }
    ],
    "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).
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
windowDaysintegerLook-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": {
    "entityType": "cs2_team_map_stats",
    "teamId": "cs2-team-9565",
    "teamName": "Vitality",
    "matchWindow": 2,
    "windowDays": null,
    "totalMaps": 8,
    "totalMapWins": 3,
    "mapWinPercent": 37.5,
    "sideEconomy": {
      "dataAvailable": false,
      "unavailableReason": "being_recomputed",
      "message": "Side and buy-type round win rates are being recomputed and are not available yet.",
      "ctRounds": null,
      "ctWins": null,
      "ctWinPercent": null,
      "tRounds": null,
      "tWins": null,
      "tWinPercent": null,
      "pistolRounds": null,
      "pistolWins": null,
      "pistolWinPercent": null,
      "ecoRounds": null,
      "ecoWins": null,
      "ecoWinPercent": null,
      "forceRounds": null,
      "forceWins": null,
      "forceWinPercent": null,
      "fullBuyRounds": null,
      "fullBuyWins": null,
      "fullBuyWinPercent": null,
      "source": null
    },
    "maps": [
      {
        "mapName": "Anubis",
        "played": 2,
        "wins": 1,
        "losses": 0,
        "ties": 1,
        "roundsFor": 13,
        "roundsAgainst": 4,
        "latestPlayedAt": "2026-09-20T18:49:47.000Z",
        "isUnknownMap": false,
        "unavailableReason": null,
        "mapNameCanonical": "Anubis",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
        "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
        "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
        "pickPercent": 25,
        "winPercent": 50,
        "lossPercent": 0,
        "roundDifferential": 9,
        "avgRoundsFor": 6.5,
        "avgRoundsAgainst": 2
      },
      {
        "mapName": "Cache",
        "played": 2,
        "wins": 1,
        "losses": 0,
        "ties": 1,
        "roundsFor": 13,
        "roundsAgainst": 7,
        "latestPlayedAt": "2026-09-20T18:49:47.000Z",
        "isUnknownMap": false,
        "unavailableReason": null,
        "mapNameCanonical": "Cache",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png",
        "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png",
        "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png",
        "pickPercent": 25,
        "winPercent": 50,
        "lossPercent": 0,
        "roundDifferential": 6,
        "avgRoundsFor": 6.5,
        "avgRoundsAgainst": 3.5
      }
    ],
    "dataAvailable": true
  },
  "meta": {
    "count": 5,
    "dataAvailable": true,
    "limit": 5,
    "total": 5,
    "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": 3,
        "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": null,
        "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": "France",
    "countryCode": "FR",
    "region": "Europe",
    "worldRanking": 2,
    "lastSyncedAt": "2026-09-23T03:08:44.625Z",
    "lastVerified": "2026-09-23T03:08:44.625Z",
    "confidence": "high",
    "roster": [
      {
        "teamId": "cs2-team-9565",
        "teamName": null,
        "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.31,
        "mapsPlayed": 167,
        "role": "AWPer",
        "fromAt": "2018-10-01T12:00:00.000Z",
        "toAt": null,
        "isActive": true,
        "tenureKnown": true,
        "tenureUnavailableReason": null,
        "lastSyncedAt": "2026-09-23T00:11:42.818Z"
      },
      {
        "teamId": "cs2-team-9565",
        "teamName": null,
        "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": 0,
        "mapsPlayed": null,
        "role": "coach",
        "fromAt": null,
        "toAt": null,
        "isActive": true,
        "tenureKnown": false,
        "tenureUnavailableReason": "source_join_date_unavailable",
        "lastSyncedAt": "2026-09-23T00:11:42.387Z"
      }
    ],
    "recentResults": [
      {
        "entityType": "cs2_match",
        "id": "cs2-match-2398108",
        "eventId": "cs2-event-8057",
        "eventName": "StarLadder StarSeries Fall 2026",
        "eventSlug": "starladder-starseries-fall-2026",
        "stageName": null,
        "startsAt": "2026-09-20T18:49:47.000Z",
        "endsAt": null,
        "bestOf": 5,
        "status": "completed",
        "team1Id": "cs2-team-11861",
        "team2Id": "cs2-team-9565",
        "team1Name": "Aurora",
        "team2Name": "Vitality",
        "team1Score": 1,
        "team2Score": 3,
        "winnerTeamId": "cs2-team-9565",
        "lastSyncedAt": "2026-09-23T03:07:06.893Z",
        "lastVerified": "2026-09-23T03:07:06.893Z",
        "confidence": "high",
        "event": {
          "id": "cs2-event-8057",
          "name": "StarLadder StarSeries Fall 2026",
          "slug": "starladder-starseries-fall-2026",
          "imageUrl": null,
          "prizePool": 5000008,
          "currency": "USD",
          "tier": "A",
          "prestigeScore": 75,
          "status": "completed",
          "region": null,
          "startsAt": "2026-09-17T10:00:00.000Z",
          "endsAt": "2026-09-20T23:59:59.000Z",
          "eventId": "cs2-event-8057",
          "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp",
          "bannerImageUrl": null
        },
        "team1": {
          "id": "cs2-team-11861",
          "name": "Aurora",
          "slug": "aurora",
         
…

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-09-23T03:11:27.600Z",
      "lastVerified": "2026-09-23T03:11:27.600Z",
      "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/7f5bf023e498d2d07c3a9a59335da3c4.webp",
          "playerSlug": "sh1ro",
          "countryName": "Russia",
          "countryCode": "RU",
          "age": 24,
          "rating": 1.17,
          "mapsPlayed": 136,
          "role": "AWPer",
          "fromAt": "2023-12-01T12:00:00.000Z",
          "toAt": null,
          "isActive": true,
          "tenureKnown": true,
          "tenureUnavailableReason": null,
          "lastSyncedAt": "2026-09-23T00:11:32.540Z"
        },
        {
          "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": 0,
          "mapsPlayed": null,
          "role": "coach",
          "fromAt": null,
          "toAt": null,
          "isActive": true,
          "tenureKnown": false,
          "tenureUnavailableReason": "source_join_date_unavailable",
          "lastSyncedAt": "2026-09-23T00:11:30.998Z"
        }
      ],
      "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,
      "…": "15 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": "France",
      "countryCode": "FR",
      "region": "Europe",
      "worldRanking": 2,
      "lastSyncedAt": "2026-09-23T03:08:44.625Z",
      "lastVerified": "2026-09-23T03:08:44.625Z",
      "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,
          "ra
…

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"