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
Players who joined or left a team.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| after | string | Only rows after this time (ISO 8601). |
| before | string | Only rows before this time (ISO 8601). |
| from_team | string | Filter by from_team. |
| include_computed | string | Filter by include_computed. |
| include_undated | string | Filter by include_undated. |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| page | integer | Page number, starting at 1. |
| player | string | Player id or slug. |
| player_id | string | Player id or slug. |
| status | string | Filter by status. |
| team | string | Team id or slug. |
| team_id | string | Team id or slug. |
| to_team | string | Filter by to_team. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/transfers" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
A team's current players and coach, with role, country and join date where known.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/roster" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Every player who has played for a team, with start and end dates. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| changesLimit | string | Filter by changesLimit. |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/roster-history" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
A team's matches, upcoming and finished.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
| offset | integer | Rows to skip, for paging. |
| page | integer | Page number, starting at 1. |
| status | string | Filter by status. |
| type | string | Filter by type. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/matches" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
A team's scheduled matches. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 50; larger values are reduced to 50. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/upcoming" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [],
"meta": {
"count": 0,
"type": "upcoming",
"limit": 0,
"total": 0,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Team results
A team's finished matches, newest first. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/results" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
A team's form over time: win rate and rating by period.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/trends" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Aggregate team stats over a recent window.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/stats" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
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
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/maps" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
A team's last results as a W/L sequence with scores.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 50; larger values are reduced to 50. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/form" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Per-map win rate, rounds and pick/ban tendencies.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
| windowDays | integer | Look-back window in days. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/map-stats" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Record and past matches between two teams. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| opponentIdOrSlug (path)* | string | Opponent team id or slug. |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/vs/natus-vincere" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
One team: name, logo, country, region, world ranking and current roster.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| recentLimit | string | Filter by recentLimit. |
| recent_limit | string | Filter by recent_limit. |
| upcomingLimit | string | Filter by upcomingLimit. |
| upcoming_limit | string | Filter by upcoming_limit. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Teams ordered by world ranking, with logo, country and roster. `compact=true` returns lighter rows.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| fields | string | Comma-separated list of fields to return. |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
| offset | integer | Rows to skip, for paging. |
| page | integer | Page number, starting at 1. |
| q | string | Search text. |
| search | string | Search text. |
| summary | boolean | true returns a summary instead of full rows. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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.
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality" \
-H "x-api-key: YOUR_API_KEY"