← Back to API docs

GET/api/v1/players/transfers/detail

Get a player's transfers
World Cup packageactivebetacoreAvailable

Description

Returns the transfers for the given player id (suggested rate: up to 60 requests/min)

Access

Request
GET https://api.sports.csap.ai/api/v1/players/transfers/detail
Auth
Header X-API-Key: <your key> (Authorization: Bearer <key> also works; ?key= is still accepted but discouraged, because the key ends up in URLs and logs)
External keys
AvailableAny valid API key can call this endpoint.
Rate limits
3000 per minute · 200000 per day · Set per key (rate_per_min and quota_daily returned by /api/v1/account are authoritative; the numbers above are a trial key's). Beyond them the answer is 429. In addition, heavy requests such as whole-table snapshots and statistics lists without a match id are processed 2 at a time for the whole platform; a request that cannot get a slot receives 429 with Retry-After. Responses do not carry X-RateLimit-* headers for now. See the general guide

Request parameters 1

ParameterTyperequiredExampleDescription
idsstringrequiredSeveral ids, comma separated, 200 at most

Example request

curl "https://api.sports.csap.ai/api/v1/players/transfers/detail" \
  -H "X-API-Key: YOUR_API_KEY"

Try it

Example response

Real response with an external key at 09/11/2026, 14:29 UTC: HTTP 200, 1000 rows, 420 ms (data cut to 2 rows)

{
  "code": 0,
  "data": [
    {
      "fee_desc": "contract",
      "fee_eur": 85000,
      "from_team": "Al-Jazira",
      "from_team_id": null,
      "from_team_name": "Al-Jazira",
      "id": 1,
      "player_id": "1022363",
      "player_name": "Ahmed Mahmoud",
      "source": "S4",
      "to_team": "Khorfakkan",
      "to_team_id": null,
      "to_team_name": "Khorfakkan",
      "transfer": null,
      "transfer_date": "2026-09-29T07:32:59Z",
      "transfer_desc": "contract",
      "transfer_fee": 85000,
      "transfer_time": "2026-09-29T07:32:59Z",
      "transfer_type": 1,
      "type": 1,
      "updated_at": 1793707041523
    },
    {
      "fee_desc": "contract",
      "fee_eur": null,
      "from_team": "San Jose",
      "from_team_id": null,
      "from_team_name": "San Jose",
      "id": 2,
      "player_id": "1037535",
      "player_name": "Hernán López",
      "source": "S4",
      "to_team": "Argentinos Juniors",
      "to_team_id": null,
      "to_team_name": "Argentinos Juniors",
      "transfer": null,
      "transfer_date": "2026-10-21T11:33:14Z",
      "transfer_desc": "contract",
      "transfer_fee": null,
      "transfer_time": "2026-10-21T11:33:14Z",
      "transfer_type": 1,
      "type": 1,
      "updated_at": 1793707041543
    }
  ],
  "message": "success",
  "success": true
}

Response fields 20

fee_descstringTransfer fee noteExample: "contract"
fee_eurintegernullableTransfer fee (EUR)Example: 85000
from_teamstringTeam transferred fromExample: "Al-Jazira"
from_team_idnullnullableId of the team transferred from
from_team_namestringName of the team transferred fromExample: "Al-Jazira"
idintegerRecord id; paging cursor (the id parameter returns records >= this value). In match endpoints it is the platform match id (gmid)Example: 1
player_idstringPlayer idExample: "1022363"
player_namestringPlayer nameExample: "Ahmed Mahmoud"
sourcestringSource code (S1, S2…)Example: "S4"
to_teamstringTeam transferred toExample: "Khorfakkan"
to_team_idnullnullableId of the team transferred to
to_team_namestringName of the team transferred toExample: "Khorfakkan"
transfernullnullablePlayer transfer list
transfer_datestringTransfer dateExample: "2026-09-29T07:32:59Z"
transfer_descstringTransfer description (with unit)Example: "contract"
transfer_feeintegernullableTransfer feeExample: 85000
transfer_timestringTransfer timeExample: "2026-09-29T07:32:59Z"
transfer_typeintegerTransfer type: 1 loan, 2 end of loan, 3 transfer, 4 retired, 5 draft, 6 released, 7 signed, 8 unknownExample: 1
typeintegerTypeExample: 1
updated_atintegerLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)Example: 1793707041523

Errors

HTTPmessageWhen
401missing API key / unauthorizedNo X-API-Key, or the key is invalid or disabled
400bad param …Malformed parameter (e.g. id is neither a number nor u<uid>)
301match merged into <gmid>Queried by an old match id that has been merged into a new gmid: Location points to the new address and the body carries moved_to
404not foundThe match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage)
429rate limit exceeded / daily quota exceededThe key's per-minute rate or daily quota is exceeded
429server busy, retry laterThe server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds
500query errorThe query failed on the server; you may retry