Flashscore API endpoint
Returns the per-player box score of a basketball, hockey or baseball match: one table per team (hockey adds a goalkeeper table and baseball a pitcher table) with the statistic columns the provider defines for that sport, and each player's value per column, or null where Flashscore shows a dash. Other sports and matches without box-score coverage return not found.
/flashscore/match-box-scoreQuery parameters:
id (required): eight-character match id from a Flashscore match URL, for example KzoOQu6j.Returns the per-player box score of a basketball, hockey or baseball match. teams holds the home and away side (side is home or away; the home team is listed first), each with one or more tables. A table has a type, a player_label (the provider's heading for the name column: Player, Goalkeeper, Pitcher or Batter), the columns the provider defines for that sport and table, and the players rows.
type is player for every sport, plus goalkeeper for hockey goalkeepers and pitcher for baseball pitchers. Basketball has one player table per team, hockey a goalkeeper and a player table, baseball a pitcher and a player table.key (the provider's short code, for example PTS, REB, SV%), label and format. format is num (a plain number), time (minutes and seconds such as 26:01) or fg (a made-attempted pair such as 24-29). The columns are response-defined, not a fixed list, so read them from each table.name, player_id, slug, country and stats. stats maps each column key to the value Flashscore displays, as a string. A dash on the page is returned as null (the provider uses it for zero and for values that do not apply). status appears only when the provider flags a player.Flashscore publishes this feed for basketball, hockey and baseball only. Football, American football, handball, cricket and esports return the empty feed, which is reported as 404, as is any match without box-score coverage or an unknown match id. Use /api/v1/flashscore/match-lineups for football lineups.
Example response (shortened):
{"code":200,"msg":"OK","data":{"source_url":"https://global.flashscore.ninja/2/x/feed/df_psn_1_KzoOQu6j","match_id":"KzoOQu6j","teams":[{"side":"home","name":"Hapoel Holon","tables":[{"type":"player","player_label":"Player","columns":[{"key":"PTS","label":"Points","format":"num"},{"key":"REB","label":"Total Rebounds","format":"num"},{"key":"AST","label":"Assists","format":"num"},{"key":"MIN","label":"Minutes Played","format":"time"}],"players":[{"name":"Soares R.","player_id":"lGyAxL74","slug":"soares-rivaldo","country":"USA","stats":{"PTS":"4","REB":"2","AST":null,"MIN":"26:01"}}]}]},{"side":"away","name":"Cholet","tables":[]}]}}
| Field | Filled in, of 2 checked | Values in the sample |
|---|---|---|
| side | 2 | “home” and 1 other value |
| name | 2 | “Carolina Hurricanes” and 1 other value |
| tables | 2 | median 2 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Eight-character Flashscore match id | KzoOQu6j | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/flashscore/match-box-score?id=KzoOQu6j" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://global.flashscore.ninja/2/x/feed/df_psn_1_KzoOQu6j",
"match_id": "KzoOQu6j",
"teams": [
{
"side": "home",
"name": "Hapoel Holon",
"tables": [
{
"type": "player",
"player_label": "Player",
"columns": [
{
"key": "PTS",
"label": "Points",
"format": "num"
},
{
"key": "REB",
"label": "Total Rebounds",
"format": "num"
},
{
"key": "AST",
"label": "Assists",
"format": "num"
},
{
"key": "MIN",
"label": "Minutes Played",
"format": "time"
}
],
"players": [
{
"name": "Soares R.",
"player_id": "lGyAxL74",
"slug": "soares-rivaldo",
"country": "USA",
"stats": {
"PTS": "4",
"REB": "2",
"AST": null,
"MIN": "26:01"
}
}
]
}
]
},
{
"side": "away",
"name": "Cholet",
"tables": []
}
]
}
}Request schema
No body schema
Response schema
#/definitions/flashscore.matchBoxScoreResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | flashscore.matchBoxScoreDataDoc | No | ||||
| data.match_id | string | No | KzoOQu6j | |||
| data.source_url | string | No | https://global.flashscore.ninja/2/x/feed/df_psn_1_KzoOQu6j | |||
| data.teams | array | No | ||||
| data.teams[].name | string | No | Hapoel Holon | |||
| data.teams[].side | string | No | home, away | home | ||
| data.teams[].tables | array | No | ||||
| data.teams[].tables[].columns | array | No | ||||
| data.teams[].tables[].columns[].format | string | No | num, time, fg | num | ||
| data.teams[].tables[].columns[].key | string | No | PTS | |||
| data.teams[].tables[].columns[].label | string | No | Points | |||
| data.teams[].tables[].player_label | string | No | Player | |||
| data.teams[].tables[].players | array | No | ||||
| data.teams[].tables[].players[].country | string | No | USA | |||
| data.teams[].tables[].players[].name | string | No | Soares R. | |||
| data.teams[].tables[].players[].player_id | string | No | lGyAxL74 | |||
| data.teams[].tables[].players[].slug | string | No | soares-rivaldo | |||
| data.teams[].tables[].players[].stats | object | No | Stats maps each column key to the displayed value; a dash from the provider is null. | |||
| data.teams[].tables[].players[].status | string | No | ||||
| data.teams[].tables[].type | string | No | player, goalkeeper, pitcher | player | ||
| msg | string | No | OK |
| 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/match-box-score?id=KzoOQu6j" \
-H "x-api-key: $CRAWLORA_API_KEY"