CS2 Transfers API
Roster moves across the scene, filterable by player, team, status and date range.
3 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Live, Matches, Maps & rounds, Rankings, Teams, Players, Events, Stats & leaderboards, Skins, Search & reference.
Recent roster changes
GET/api/v1/cs2/roster-changes/recent
Players joining and leaving teams, newest first. Filter with `teamId` or `playerId`.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| playerId | string | Player id or slug. |
| teamId | string | Team id or slug. |
Example
bash
curl "https://api.citoapi.com/api/v1/cs2/roster-changes/recent" \
-H "x-api-key: YOUR_API_KEY"Response
json
{
"success": true,
"data": {
"entityType": "cs2_roster_changes",
"dataAvailable": true,
"changes": [
{
"changeId": "f4a51ba2-9a2a-4e0c-9fe7-9da6ef3b663c",
"changeType": "leave",
"teamId": "cs2-team-11838",
"fromTeamId": "cs2-team-11838",
"toTeamId": null,
"teamName": "Partizan",
"playerId": "cs2-player-25471",
"playerName": "rajkeza",
"roleBefore": null,
"roleAfter": null,
"effectiveAt": "2026-09-15T22:00:00.000Z",
"detectedAt": "2026-09-22T20:00:10.568Z",
"confidence": "medium"
},
{
"changeId": "fe45f322-e64c-4b1e-9f35-ef517f4a827f",
"changeType": "leave",
"teamId": "cs2-team-11838",
"fromTeamId": "cs2-team-11838",
"toTeamId": null,
"teamName": "Partizan",
"playerId": "cs2-player-4476",
"playerName": "BAXACHA",
"roleBefore": "coach",
"roleAfter": null,
"effectiveAt": "2026-09-21T22:00:00.000Z",
"detectedAt": "2026-09-22T20:00:07.032Z",
"confidence": "medium"
}
]
},
"meta": {
"count": 2,
"dataAvailable": true,
"limit": 2,
"total": 2,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Recent transfers
GET/api/v1/cs2/transfers/recent
Player moves between teams, newest first.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| 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. |
| sort | string | Sort order. |
| 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
bash
curl "https://api.citoapi.com/api/v1/cs2/transfers/recent" \
-H "x-api-key: YOUR_API_KEY"Response
json
{
"success": true,
"data": {
"entityType": "cs2_player_transfers",
"dataAvailable": true,
"transfers": [
{
"transferKey": "source-transfer:2026-09-21:4476:11838:none:left:6d47eb95dc",
"playerId": "cs2-player-4476",
"playerName": "BAXACHA",
"playerImageUrl": null,
"fromTeamId": "cs2-team-11838",
"fromTeamName": "Partizan",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/448e59bfe484b2c37a485c66408b9079.webp",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "no-team",
"toTeamName": "No team",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamAlternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamDarkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamIsNoTeam": true,
"status": "left",
"role": "coach",
"transferDate": "2026-09-21T22:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-09-21T22:00:00.000Z",
"detectedAt": "2026-09-22T20:00:06.346Z"
},
{
"transferKey": "source-transfer:2026-09-21:18545:13486:12878:unknown:eb757cb310",
"playerId": "cs2-player-18545",
"playerName": "asap",
"playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/de0f55ab3f608f1b241f21c0db647a08.webp",
"fromTeamId": "cs2-team-13486",
"fromTeamName": "THUNDER dOWNUNDER",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b4c915e53b28f03de6595dd0195a7745.webp",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "cs2-team-12878",
"toTeamName": "BC.Game",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/281b61f68eb0586d9f0b0e2635426924.webp",
"toTeamAlternateLogoUrl": null,
"toTeamDarkUiLogoUrl": null,
"toTeamIsNoTeam": false,
"status": "unknown",
"role": null,
"transferDate": "2026-09-21T22:00:00.000Z",
"joinDate": "2026-09-21T22:00:00.000Z",
"leaveDate": null,
"detectedAt": "2026-09-22T19:30:03.976Z"
}
]
},
"meta": {
"count": 2,
"total": 47086,
"page": 1,
"limit": 2,
"dataAvailable": true,
"totalPages": 23543,
"hasNext": true,
"hasPrev": false
}
}Transfers
GET/api/v1/cs2/transfers
Player transfers with filters for team, player and date range.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| 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
bash
curl "https://api.citoapi.com/api/v1/cs2/transfers" \
-H "x-api-key: YOUR_API_KEY"Response
json
{
"success": true,
"data": {
"entityType": "cs2_player_transfers",
"dataAvailable": true,
"transfers": [
{
"transferKey": "source-transfer:2026-09-21:4476:11838:none:left:6d47eb95dc",
"playerId": "cs2-player-4476",
"playerName": "BAXACHA",
"playerImageUrl": null,
"fromTeamId": "cs2-team-11838",
"fromTeamName": "Partizan",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/448e59bfe484b2c37a485c66408b9079.webp",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "no-team",
"toTeamName": "No team",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamAlternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamDarkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/noteam.png",
"toTeamIsNoTeam": true,
"status": "left",
"role": "coach",
"transferDate": "2026-09-21T22:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-09-21T22:00:00.000Z",
"detectedAt": "2026-09-22T20:00:06.346Z"
},
{
"transferKey": "source-transfer:2026-09-21:18545:13486:12878:unknown:eb757cb310",
"playerId": "cs2-player-18545",
"playerName": "asap",
"playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/de0f55ab3f608f1b241f21c0db647a08.webp",
"fromTeamId": "cs2-team-13486",
"fromTeamName": "THUNDER dOWNUNDER",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b4c915e53b28f03de6595dd0195a7745.webp",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "cs2-team-12878",
"toTeamName": "BC.Game",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/281b61f68eb0586d9f0b0e2635426924.webp",
"toTeamAlternateLogoUrl": null,
"toTeamDarkUiLogoUrl": null,
"toTeamIsNoTeam": false,
"status": "unknown",
"role": null,
"transferDate": "2026-09-21T22:00:00.000Z",
"joinDate": "2026-09-21T22:00:00.000Z",
"leaveDate": null,
"detectedAt": "2026-09-22T19:30:03.976Z"
}
]
},
"meta": {
"count": 2,
"total": 47086,
"page": 1,
"limit": 2,
"dataAvailable": true,
"totalPages": 23543,
"hasNext": true,
"hasPrev": false
}
}Try the CS2 Transfers 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/transfers/recent?limit=10" \
-H "x-api-key: YOUR_API_KEY"