Flashscore API endpoint
Returns one page of an individual-sport player's finished and in-progress matches (tennis, darts, golf, snooker and similar), newest first, as structured events with start time, stage, both sides, score and competition. Competition blocks carry tournament_id and tournament_stage_id for the tournament endpoints. Football, basketball and hockey players have no event list and return an empty list, use flashscore-player-match-log for those. Request successive pages until event_count is 0.
/flashscore/player-resultsQuery parameters:
id (required): eight-character Flashscore player id. A team id and an unknown id return 404.page (optional, default 1): 1-based page from 1 to 300. Request successive pages until event_count is 0; a page past the end returns an empty list. A tennis player's pages held 40 to 43 events each.Response fields: player_id, player_name, section (results), page, event_count and events. Each event has id (usable with the flashscore/match-* endpoints), start_time and start_time_iso, stage (scheduled, live, finished or unknown) with stage_code, status_code, home and away (id, name, short_name, slug, logo_url), home_score and away_score (sets for tennis, legs for darts), and competition.
The competition block carries id (the competition id), tournament_id (the season-level tournament id, also given as the older field stage_id), tournament_stage_id (the stage id), name, full_name, country and path. Use tournament_stage_id with /api/v1/flashscore/tournament-archive-seasons and tournament_id with /api/v1/flashscore/tournament-outright-odds. Both ids are omitted for series Flashscore does not tie to a tournament (streamed darts series, for example).
Period scores are not decoded because their meaning differs per sport.
Example response (shortened):
{"code":200,"msg":"OK","data":{"source_url":"https://global.flashscore.ninja/2/x/feed/pr_2_77_M5Nr6FTR_0_1_en_1","player_id":"M5Nr6FTR","player_name":"Gea A.","section":"results","page":1,"event_count":43,"events":[{"id":"QZrKbQbf","start_time":1791346200,"start_time_iso":"2026-10-07T04:10:00Z","stage":"finished","stage_code":3,"status_code":3,"home":{"id":"M5Nr6FTR","name":"Gea A.","short_name":"GEA","slug":"gea-arthur","logo_url":"https://static.flashscore.com/res/image/data/pjlxdzU0-IaAVktFg.png"},"away":{"id":"ETojuYQP","name":"Faria J.","short_name":"FAR","slug":"faria-jaime","logo_url":"https://static.flashscore.com/res/image/data/OMdtieVH-vaQLo0O1.png"},"home_score":2,"away_score":1,"competition":{"id":"lSHMFchs","stage_id":"Em7yzdpK","tournament_id":"Em7yzdpK","tournament_stage_id":"xYdUMbBd","name":"Shanghai (China)","full_name":"ATP - SINGLES: Shanghai (China), hard","path":"/tennis/atp-singles/shanghai/"}}]}}
| Field | Filled in, of 43 checked | Values in the sample |
|---|---|---|
| id | 43 | |
| start_time | 43 | 2026-03-22 to 2026-10-13 |
| start_time_iso | 43 | 2026-03-22 to 2026-10-13 |
| stage | 43 | finished in all 43 |
| stage_code | 43 | |
| status_code | 43 | |
| home | 43 | |
| away | 43 | |
| home_score | 43 | 0 to 3, median 1 |
| away_score | 43 | 0 to 3, median 2 |
| competition | 43 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Eight-character Flashscore player id | M5Nr6FTR | |
| 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/player-results?id=M5Nr6FTR&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://global.flashscore.ninja/2/x/feed/pr_2_77_M5Nr6FTR_0_1_en_1",
"player_id": "M5Nr6FTR",
"player_name": "Gea A.",
"section": "results",
"page": 1,
"event_count": 43,
"events": [
{
"id": "QZrKbQbf",
"start_time": 1791346200,
"start_time_iso": "2026-10-07T04:10:00Z",
"stage": "finished",
"stage_code": 3,
"status_code": 3,
"home": {
"id": "M5Nr6FTR",
"name": "Gea A.",
"short_name": "GEA",
"slug": "gea-arthur",
"logo_url": "https://static.flashscore.com/res/image/data/pjlxdzU0-IaAVktFg.png"
},
"away": {
"id": "ETojuYQP",
"name": "Faria J.",
"short_name": "FAR",
"slug": "faria-jaime",
"logo_url": "https://static.flashscore.com/res/image/data/OMdtieVH-vaQLo0O1.png"
},
"home_score": 2,
"away_score": 1,
"competition": {
"id": "lSHMFchs",
"stage_id": "Em7yzdpK",
"tournament_id": "Em7yzdpK",
"tournament_stage_id": "xYdUMbBd",
"name": "Shanghai (China)",
"full_name": "ATP - SINGLES: Shanghai (China), hard",
"path": "/tennis/atp-singles/shanghai/"
}
}
]
}
}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.PlayerEventsResponse | No | ||||
| data.event_count | integer | No | ||||
| data.events | array | No | ||||
| data.events[].away | flashscore.EventSide | No | ||||
| data.events[].away.id | string | No | ||||
| data.events[].away.logo_url | string | No | ||||
| data.events[].away.name | string | No | ||||
| data.events[].away.short_name | string | No | ||||
| data.events[].away.slug | string | No | ||||
| data.events[].away_score | integer | No | ||||
| data.events[].competition | flashscore.EventCompetition | No | ||||
| data.events[].competition.country | string | No | ||||
| data.events[].competition.full_name | string | No | ||||
| data.events[].competition.id | string | No | ID is the tournament template (competition) id. | |||
| data.events[].competition.name | string | No | ||||
| data.events[].competition.path | string | No | ||||
| data.events[].competition.stage_id | string | No | StageID is the legacy name of TournamentID and carries the same value. | |||
| data.events[].competition.tournament_id | string | No | TournamentID is the season-level tournament id (feed key ZE), the input of flashscore-tournament-outright-odds. | |||
| data.events[].competition.tournament_stage_id | string | No | TournamentStageID is the tournament stage id (feed key ZC), the input of flashscore-tournament-archive-seasons. | |||
| data.events[].home | flashscore.EventSide | No | ||||
| data.events[].home.id | string | No | ||||
| data.events[].home.logo_url | string | No | ||||
| data.events[].home.name | string | No | ||||
| data.events[].home.short_name | string | No | ||||
| data.events[].home.slug | string | No | ||||
| data.events[].home_score | integer | No | ||||
| data.events[].id | string | No | ||||
| data.events[].stage | string | No | ||||
| data.events[].stage_code | integer | No | ||||
| data.events[].start_time | integer | No | ||||
| data.events[].start_time_iso | string | No | ||||
| data.events[].status_code | integer | No | ||||
| data.page | integer | No | ||||
| data.player_id | string | No | ||||
| data.player_name | string | No | ||||
| data.section | string | No | ||||
| data.source_url | 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/player-results?id=M5Nr6FTR&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"