Endpoint Playground
Returns BO3.gg's esports player and coach transfer feed, newest first by default, with paging and filters: `team_id` (moves into or out of one team), `player_id`, `action` (`join`, `change`, `leave`) and `role` (`player`, `coach`). The feed cannot be filtered by game upstream, so every row carries its `game` instead; narrow it with a team or player id.
29 Oct 2026: 40 transfers; 10 fields had a value in every checked item and 1 varied between items.
Sample value profiles: date: 2026-07-20 to 2026-07-27; game: valorant (17), cs2 (17), dota2 (6); source_url: x.com and 2 other hosts.
curl 'https://api.crawlora.net/api/v1/bo3/transfers?action=join&role=player&sort=newest' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| team_id | integer | No | BO3 team id; transfers into or out of this team | |
| player_id | integer | No | BO3 player id; this person's transfers | |
| action | string | No | join | Transfer action; one of join, change, leave |
| role | string | No | player | Role; one of player, coach |
| sort | string | No | newest | Order by date; one of newest, oldest; defaults to newest |
| offset | integer | No | Zero-based offset; defaults to 0 | |
| limit | integer | No | Page size, 1 to 100; defaults to 20 |
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.bo3.gg/api/v1/transfers",
"fetched_at": "2026-10-28T10:00:00Z",
"total": 136070,
"offset": 0,
"limit": 20,
"count": 1,
"has_more": true,
"transfers": [
{
"id": 252309,
"date": "2026-07-27",
"action": "leave",
"action_code": 3,
"game": "valorant",
"player_id": 42611,
"player_slug": "blackwiz",
"nickname": "BlackWiz",
"is_coach": false,
"from": {
"id": 6805,
"slug": "reignite",
"name": "REIGNITE FOXX"
},
"source_url": "https://x.com/ReigniteJP/status/0"
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.