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, Player props, Odds, 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": "aa4fbd5f-7b77-4138-9cbb-58ed98cea40d",
"changeType": "leave",
"teamId": "cs2-team-13590",
"fromTeamId": "cs2-team-13590",
"toTeamId": null,
"teamName": "EGOISTO",
"playerId": "cs2-player-25668",
"playerName": "Sorr1k",
"roleBefore": "rifler",
"roleAfter": null,
"effectiveAt": "2026-10-26T22:57:44.411Z",
"detectedAt": "2026-10-26T22:57:44.413Z",
"confidence": "medium"
},
{
"changeId": "d03b1682-5d63-41b1-bc0e-8286d1ca4a79",
"changeType": "leave",
"teamId": "cs2-team-13590",
"fromTeamId": "cs2-team-13590",
"toTeamId": null,
"teamName": "EGOISTO",
"playerId": "cs2-player-24355",
"playerName": "botirshoT",
"roleBefore": "rifler",
"roleAfter": null,
"effectiveAt": "2026-10-26T22:57:44.232Z",
"detectedAt": "2026-10-26T22:57:44.234Z",
"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": "profile-history:2026-10-31:source-player-25799:source-team-13814:none:left",
"playerId": "cs2-player-25799",
"playerName": "iqlity",
"playerImageUrl": null,
"fromTeamId": "cs2-team-13814",
"fromTeamName": "INOX Division",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d7c999cc4404a84dec727b71d2f9884a.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": null,
"transferDate": "2026-10-31T12:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-10-31T12:00:00.000Z",
"detectedAt": "2026-10-25T11:05:51.574Z"
},
{
"transferKey": "profile-history:2026-10-31:source-player-26034:source-team-13924:none:left",
"playerId": "cs2-player-26034",
"playerName": "s0ft",
"playerImageUrl": null,
"fromTeamId": "cs2-team-13924",
"fromTeamName": "Black Phoenix",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f3f2106dff0485d9592549612446e98e.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": null,
"transferDate": "2026-10-31T12:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-10-31T12:00:00.000Z",
"detectedAt": "2026-10-15T19:05:15.739Z"
}
]
},
"meta": {
"count": 2,
"total": 48601,
"page": 1,
"limit": 2,
"dataAvailable": true,
"totalPages": 24301,
"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": "profile-history:2026-10-31:source-player-25799:source-team-13814:none:left",
"playerId": "cs2-player-25799",
"playerName": "iqlity",
"playerImageUrl": null,
"fromTeamId": "cs2-team-13814",
"fromTeamName": "INOX Division",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d7c999cc4404a84dec727b71d2f9884a.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": null,
"transferDate": "2026-10-31T12:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-10-31T12:00:00.000Z",
"detectedAt": "2026-10-25T11:05:51.574Z"
},
{
"transferKey": "profile-history:2026-10-31:source-player-26034:source-team-13924:none:left",
"playerId": "cs2-player-26034",
"playerName": "s0ft",
"playerImageUrl": null,
"fromTeamId": "cs2-team-13924",
"fromTeamName": "Black Phoenix",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f3f2106dff0485d9592549612446e98e.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": null,
"transferDate": "2026-10-31T12:00:00.000Z",
"joinDate": null,
"leaveDate": "2026-10-31T12:00:00.000Z",
"detectedAt": "2026-10-15T19:05:15.739Z"
}
]
},
"meta": {
"count": 2,
"total": 48601,
"page": 1,
"limit": 2,
"dataAvailable": true,
"totalPages": 24301,
"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"