Flashscore API endpoint
Returns one page (30 rows) of a team's transfer history, newest first: date, direction (in or out), type such as Loan or Transfer, fee text, the player and the clubs on each side. Filter by type to see arrivals or departures only. Request successive pages until transfer_count is 0.
/flashscore/team-transfersQuery parameters:
id (required): eight-character Flashscore team id (see /api/v1/flashscore/team).type (optional): direction filter, one of all, arrivals, departures. Defaults to all. Any other value returns an invalid-parameter error before any upstream request.page (optional): 1-based page from 1 to 300; defaults to 1. Pages hold 30 transfers, newest first.Notable response behavior: each transfer has date (YYYY-MM-DD), direction (in or out, relative to this team), type (the provider's label, such as Loan, Transfer, Return from loan, Free agent, or empty), fee text when the site shows one (for example €23.0m), the player, and the from and to clubs. from or to is null when the player had no club on that side, for example a free agent released at the end of a contract. History reaches back about twenty years for large clubs; request successive pages until transfer_count is 0. A team with no recorded transfers (national teams, for example) returns an empty list. An unknown team id returns not found.
| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| date | 30 | 2026-08-21 to 2026-09-02 |
| direction | 30 | out (22), in (8) |
| type | 30 | Loan (16), Transfer (14) |
| player | 30 | |
| from | 30 | |
| to | 30 | |
| fee | 16 | €100k (2), €145.0m (2), €70.0m (2) and 5 more |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Eight-character Flashscore team id | Wtn9Stg0 | |
| type | string | No | all | Transfer direction filter; defaults to all Allowed values: all, arrivals, departures. | all |
| page | integer | No | 1 | 1-based page from 1 to 300; defaults to 1 Minimum: 1. Maximum: 300. | 1 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/flashscore/team-transfers?id=Wtn9Stg0&type=all&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://global.flashscore.ninja/2/x/feed/tetr_Wtn9Stg0_1_1",
"team_id": "Wtn9Stg0",
"team_name": "Manchester City",
"type": "all",
"page": 1,
"transfer_count": 30,
"transfers": [
{
"date": "2026-09-02",
"direction": "out",
"type": "Loan",
"player": {
"id": "CKeKSetG",
"name": "Echeverri Claudio",
"slug": "echeverri-claudio",
"path": "/player/echeverri-claudio/CKeKSetG/",
"country": "Argentina"
},
"from": {
"id": "Wtn9Stg0",
"name": "Manchester City",
"slug": "manchester-city",
"path": "/team/manchester-city/Wtn9Stg0/"
},
"to": {
"id": "zBkyuyRI",
"name": "Benfica",
"slug": "benfica",
"path": "/team/benfica/zBkyuyRI/"
}
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | flashscore.TeamTransfersResponse | No | ||||
| data.page | integer | No | ||||
| data.source_url | string | No | ||||
| data.team_id | string | No | ||||
| data.team_name | string | No | ||||
| data.transfer_count | integer | No | ||||
| data.transfers | array | No | ||||
| data.transfers[].date | string | No | ||||
| data.transfers[].direction | string | No | ||||
| data.transfers[].fee | string | No | ||||
| data.transfers[].from | object | No | From and To are null when the player had no club on that side (for example a free agent released at the end of a contract). | |||
| data.transfers[].from.id | string | No | ||||
| data.transfers[].from.logo_url | string | No | ||||
| data.transfers[].from.name | string | No | ||||
| data.transfers[].from.path | string | No | ||||
| data.transfers[].from.slug | string | No | ||||
| data.transfers[].player | flashscore.TransferPlayer | No | ||||
| data.transfers[].player.country | string | No | ||||
| data.transfers[].player.id | string | No | ||||
| data.transfers[].player.name | string | No | ||||
| data.transfers[].player.path | string | No | ||||
| data.transfers[].player.slug | string | No | ||||
| data.transfers[].to | flashscore.TransferTeam | No | ||||
| data.transfers[].to.id | string | No | ||||
| data.transfers[].to.logo_url | string | No | ||||
| data.transfers[].to.name | string | No | ||||
| data.transfers[].to.path | string | No | ||||
| data.transfers[].to.slug | string | No | ||||
| data.transfers[].type | string | No | ||||
| data.type | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/flashscore/team-transfers?id=Wtn9Stg0&type=all&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"