Flashscore API endpoint
Returns the per-minute momentum series of a football match (values from -1 to 1, positive favouring the home side) with the half and stoppage-time marker of each minute, and the key events plotted on it (goals, own goals, penalties, red cards) with their team and player. Matches without momentum coverage and non-football matches return not found.
/flashscore/match-momentumQuery parameters:
id (required): eight-character football match id from a Flashscore match URL, for example j52jHsN8.
teams: id, code (three-letter abbreviation) and side (home or away).
momentum: one frame per minute, oldest first. value runs from -1 to 1 and describes which side was on top in that minute: positive values favour the home side and negative values the away side (the provider does not document the sign; it matched the home side's pressure in the matches checked, so treat the direction as observed rather than guaranteed). minute is the displayed label such as 31' or 45+1', elapsed_minute, elapsed_second and added_time give the clock, and period names the half: first_half or second_half (stage ids 12 and 13), plus extra_time, first_extra_time, second_extra_time for extra-time stage ids 6, 40 and 41, or unknown; stage_id is always included. Stoppage-time minutes stay in their half, and the second half restarts at 46'.
event_types: the key-event types the provider can plot: goal, own_goal, penalty_goal, red_card and yellow_red_card, with the provider's labels (a second yellow card is labelled Red card).
events: the plotted events with id, type (one of the values above), label, period, stage_id, minute, team_id, side, player_id and player_name. For an own goal the team and side are those of the player who scored it; the goal counts for the opponent.
Matches without momentum coverage (the provider returns an empty series, which is common outside the top competitions), other sports and unknown ids return 404.
Example response (shortened):
{"code":200,"msg":"OK","data":{"source_url":"https://2.ds.lsapp.eu/pq_graphql?_hash=mmts&eventId=j52jHsN8&providerId=7","match_id":"j52jHsN8","teams":[{"id":"2XrRecc3","code":"BHA","side":"home"},{"id":"hA1Zm19f","code":"ARS","side":"away"}],"event_types":[{"type":"goal","label":"Goal"}],"momentum":[{"period":"first_half","stage_id":12,"minute":"1'","elapsed_minute":0,"elapsed_second":59,"added_time":0,"value":0.0424},{"period":"first_half","stage_id":12,"minute":"45+1'","elapsed_minute":45,"elapsed_second":59,"added_time":1,"value":0.2913}],"events":[{"id":"jqIssqqn","type":"goal","label":"Goal","period":"first_half","stage_id":12,"minute":"31'","team_id":"2XrRecc3","side":"home","player_id":"trpxfbO3","player_name":"Gross Pascal"}]}}
| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| id | 3 | |
| type | 3 | “goal” |
| label | 3 | “Goal” |
| period | 3 | “first_half” and 1 other value |
| stage_id | 3 | |
| minute | 3 | “31'” and 2 other values |
| team_id | 3 | |
| side | 3 | “home” |
| player_id | 3 | |
| player_name | 3 | “Gross Pascal” and 2 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Eight-character Flashscore football match id | j52jHsN8 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/flashscore/match-momentum?id=j52jHsN8" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://2.ds.lsapp.eu/pq_graphql?_hash=mmts&eventId=j52jHsN8&providerId=7",
"match_id": "j52jHsN8",
"teams": [
{
"id": "2XrRecc3",
"code": "BHA",
"side": "home"
},
{
"id": "hA1Zm19f",
"code": "ARS",
"side": "away"
}
],
"event_types": [
{
"type": "goal",
"label": "Goal"
}
],
"momentum": [
{
"period": "first_half",
"stage_id": 12,
"minute": "1'",
"elapsed_minute": 0,
"elapsed_second": 59,
"added_time": 0,
"value": 0.0424
},
{
"period": "first_half",
"stage_id": 12,
"minute": "45+1'",
"elapsed_minute": 45,
"elapsed_second": 59,
"added_time": 1,
"value": 0.2913
}
],
"events": [
{
"id": "jqIssqqn",
"type": "goal",
"label": "Goal",
"period": "first_half",
"stage_id": 12,
"minute": "31'",
"team_id": "2XrRecc3",
"side": "home",
"player_id": "trpxfbO3",
"player_name": "Gross Pascal"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/flashscore.matchMomentumResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | flashscore.matchMomentumDataDoc | No | ||||
| data.event_types | array | No | ||||
| data.event_types[].label | string | No | Goal | |||
| data.event_types[].type | string | No | yellow_red_card, red_card, goal, own_goal, penalty_goal | goal | ||
| data.events | array | No | ||||
| data.events[].id | string | No | jqIssqqn | |||
| data.events[].label | string | No | Goal | |||
| data.events[].minute | string | No | 31' | |||
| data.events[].period | string | No | first_half, second_half, extra_time, first_extra_time, second_extra_time, unknown | first_half | ||
| data.events[].player_id | string | No | trpxfbO3 | |||
| data.events[].player_name | string | No | Gross Pascal | |||
| data.events[].side | string | No | home, away | home | ||
| data.events[].stage_id | integer | No | 12 | |||
| data.events[].team_id | string | No | 2XrRecc3 | |||
| data.events[].type | string | No | yellow_red_card, red_card, goal, own_goal, penalty_goal | goal | ||
| data.match_id | string | No | j52jHsN8 | |||
| data.momentum | array | No | ||||
| data.momentum[].added_time | integer | No | 1 | |||
| data.momentum[].elapsed_minute | integer | No | 45 | |||
| data.momentum[].elapsed_second | integer | No | 59 | |||
| data.momentum[].minute | string | No | 45+1' | |||
| data.momentum[].period | string | No | first_half, second_half, extra_time, first_extra_time, second_extra_time, unknown | first_half | ||
| data.momentum[].stage_id | integer | No | 12 | |||
| data.momentum[].value | number | No | 0.29 | |||
| data.source_url | string | No | https://2.ds.lsapp.eu/pq_graphql?_hash=mmts&eventId=j52jHsN8&providerId=7 | |||
| data.teams | array | No | ||||
| data.teams[].code | string | No | BHA | |||
| data.teams[].id | string | No | 2XrRecc3 | |||
| data.teams[].side | string | No | home, away | home | ||
| 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-momentum?id=j52jHsN8" \
-H "x-api-key: $CRAWLORA_API_KEY"