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
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/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
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.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
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": 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
A team's matches, upcoming and finished.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| date_end | string | Same as to. |
| date_start | string | Same as from. |
| from | string | Start of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start. |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
| offset | integer | Rows to skip, for paging. |
| opponent | string | Only matches against this team (id or slug): the head-to-head history. Aliases opponentId, opponent_id. |
| opponentId | string | Filter by opponentId. |
| opponent_id | string | Filter by opponent_id. |
| order | string | Filter by order. |
| page | integer | Page number, starting at 1. |
| sort | string | asc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise. |
| status | string | Filter by status. |
| to | string | End of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end. |
| type | string | all (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
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-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
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. |
| order | string | Filter by order. |
| sort | string | asc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise. |
Example
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality/upcoming" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
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
| 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. |
| order | string | Filter by order. |
| sort | string | asc (oldest first) or desc (newest first). Default: asc for upcoming, desc otherwise. |
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-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
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-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
Aggregate team stats over a recent window.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| teamIdOrSlug (path)* | string | Team id (cs2-team-7020) or slug (spirit). |
| date_end | string | Same as to. |
| date_start | string | Same as from. |
| days | integer | Only matches from the last N days (e.g. 90). Without a window: the team's last 250 matches. |
| from | string | Start of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start. |
| to | string | End of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end. |
| window | string | Same as days, written as 90d, 12w, 3m or 1y. |
| windowDays | integer | Look-back window in days. |
| window_days | integer | Look-back window in days. |
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",
"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
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). |
| date_end | string | Same as to. |
| date_start | string | Same as from. |
| days | integer | Only matches from the last N days (e.g. 90). Without a window: the team's last 250 matches. |
| from | string | Start of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start. |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
| to | string | End of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end. |
| window | string | Same as days, written as 90d, 12w, 3m or 1y. |
| windowDays | integer | Look-back window in days. |
| window_days | integer | Look-back window in days. |
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-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
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": 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
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). |
| date_end | string | Same as to. |
| date_start | string | Same as from. |
| days | integer | Only matches from the last N days (e.g. 90). Without a window: the team's last 250 matches. |
| from | string | Start of the date range (YYYY-MM-DD or ISO 8601, UTC). Alias date_start. |
| limit | integer | Rows to return. Maximum 250; larger values are reduced to 250. |
| to | string | End of the date range (YYYY-MM-DD or ISO 8601, UTC); a date-only value includes that whole day. Alias date_end. |
| window | string | Same as days, written as 90d, 12w, 3m or 1y. |
| windowDays | integer | Look-back window in days. |
| window_days | 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": {
"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
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": 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
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": "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
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-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.
curl "https://api.citoapi.com/api/v1/cs2/teams/vitality" \
-H "x-api-key: YOUR_API_KEY"