Flashscore Live Matches — Football Scores, Stats & Lineups avatar

Flashscore Live Matches — Football Scores, Stats & Lineups

Pricing

from $0.001 / result

Go to Apify Store
Flashscore Live Matches — Football Scores, Stats & Lineups

Flashscore Live Matches — Football Scores, Stats & Lineups

Extract live football match data from Flashscore — scores, events, statistics, lineups, and odds in real time. No proxy required.

Pricing

from $0.001 / result

Rating

0.0

(0)

Developer

Extractify Labs

Extractify Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Flashscore Live Matches scrapes every currently live football match from Flashscore and returns fully structured data — scores, match minute, goal/card/substitution timeline, statistics (xG, possession, shots, corners, and 30+ stat types per period), starting lineups, and live 1×2 odds — in a single on-demand run. No proxy required. Designed to run on a 1–5 minute Apify schedule as a real-time football data feed.

What data does this actor extract?

Each run returns one dataset item per live match. Every item contains 29 structured fields covering match identity, score, timeline, venue, and optional deep data.

Core match fields

FieldTypeExample
match_idstring"lhiFkQyH"
match_urlstring"https://www.flashscore.com/match/football/..."
statusstring"LIVE"
match_minuteinteger or null63
match_periodstring or null"2nd Half"
kickoff_timestring (ISO 8601 UTC)"2026-04-18T14:00:00+00:00"
home_teamstring"Wellington Phoenix"
away_teamstring"Western Sydney Wanderers"
home_team_idstring or null"vJj5pktK"
away_team_idstring or null"A1syuT3s"
home_scoreinteger2
away_scoreinteger1
home_score_halftimeinteger or null1 — null until the first half ends
away_score_halftimeinteger or null0 — null until the first half ends
roundstring or null"2" or "Round of 16"
has_live_streambooleanfalse
leaguestring"AUSTRALIA: A-League"
league_idstring"EcZwBi3N"
league_urlstring"/football/australia/a-league/"
refereestring or null"Abraham B."
venuestring or null"Sky Stadium"
venue_citystring or null"Wellington"
venue_capacityinteger or null34500
lineups_confirmedbooleantrue
scraped_atstring (ISO 8601 UTC)"2026-04-18T15:32:07+00:00"

Events array

events is always present (may be an empty list early in a match). Each entry covers one match event:

FieldTypeExample
event_idstring"xK3mQ9A1"
sidestring"home" or "away"
minutestring"16'" or "90+3'"
typestring"goal", "yellow_card", "red_card", "sub_in", "sub_out", "assist"
type_labelstring"Goal"
player_namestring or null"Eze I."
player_idstring or null"rwVQyUb6"
extra_infostring or null"misses next match"
home_score_afterinteger or null1 — running score after a goal
away_score_afterinteger or null0

Statistics array

statistics is populated when includeStatistics is true (the default). Each entry is one stat row for one period:

FieldTypeExample
periodstring"Match", "1st Half", "2nd Half"
categorystring"Top stats", "Shots", "Passes", "Defense"
stat_idinteger432
stat_namestring"Expected goals (xG)"
home_valuestring"1.73"
away_valuestring"0.94"

Lineups object

lineups is populated when includeLineups is true (the default):

{
"home_formation": "1-4-4-2",
"away_formation": "1-4-3-3",
"confirmed": true,
"home": [ { "player_id": "rwVQyUb6", "name": "Eze I.", "shirt_number": 10, "position": "Midfielder", "is_starter": true, "rating": "7.2", "nationality": "Nigeria", ... } ],
"away": [ ... ]
}

Each player object includes: player_id, name, surname, shirt_number, position, position_badge, nationality, rating, is_starter, in_match_event.

Odds object

odds is populated when includeOdds is true. Availability depends on your geographic region — in some regions no bookmakers serve data and the field will be null even when the option is enabled.

{
"bookmaker_id": "8",
"home": { "current": "2.1", "opening": "2.0", "change": "UP", "previous": "2.0" },
"draw": { "current": "3.4", "opening": "3.5", "change": null, "previous": null },
"away": { "current": "3.8", "opening": "4.0", "change": "DOWN", "previous": "4.2" }
}

change is "UP", "DOWN", or null (no movement since opening).

Sample output

One complete item from a real run (China FA Cup, live at 13 minutes):

{
"match_id": "E1O1JiXo",
"match_url": "https://www.flashscore.com/match/football/xiamen-chengyi-2RZ1iwrR/shenzhen-2028-nRHE5gqe/?mid=E1O1JiXo",
"status": "LIVE",
"match_minute": 13,
"match_period": "2nd Half",
"kickoff_time": "2026-04-20T07:00:00+00:00",
"home_team": "Xiamen Chengyi",
"away_team": "Shenzhen",
"home_team_id": "SltLcBJc",
"away_team_id": "E5vTeklA",
"home_score": 1,
"away_score": 0,
"home_score_halftime": 1,
"away_score_halftime": 0,
"round": "2",
"has_live_stream": false,
"league": "CHINA: FA Cup",
"league_id": "hQWz6gLn",
"league_url": "/football/china/fa-cup/",
"referee": null,
"venue": null,
"venue_city": null,
"venue_capacity": null,
"lineups_confirmed": true,
"events": [
{
"event_id": "d2UAI37M",
"side": "home",
"minute": "45'",
"type": "goal",
"type_label": "Goal",
"player_name": "Lin Y.",
"player_id": "kQ9mRpXv",
"extra_info": null,
"home_score_after": 1,
"away_score_after": 0
}
],
"statistics": [
{ "period": "Match", "category": "Top stats", "stat_id": 432, "stat_name": "Expected goals (xG)", "home_value": "1.73", "away_value": "0.94" },
{ "period": "Match", "category": "Top stats", "stat_id": 12, "stat_name": "Ball Possession", "home_value": "53%", "away_value": "47%" }
],
"lineups": {
"home_formation": "1-4-4-2",
"away_formation": "1-4-3-3",
"confirmed": true,
"home": [],
"away": []
},
"odds": null,
"scraped_at": "2026-04-20T07:15:32+00:00"
}

Quick start

  1. Open the actor on the Apify Store.
  2. Leave all parameters at their defaults to get every live match with statistics and lineups included.
  3. (Optional) Set includeOdds to true to add live 1×2 odds per match.
  4. (Optional) Set maxItems to a small number (e.g. 2) for a test run.
  5. Click Start. The actor completes in seconds and returns one dataset item per live match.
  6. Download results as JSON, CSV, Excel, or XML from the Dataset tab.

Sample input (test run with all data):

{
"includeStatistics": true,
"includeLineups": true,
"includeOdds": true,
"maxItems": 3
}

Input parameters

All parameters are optional. Leave everything at the defaults to return all currently live matches with statistics and lineups.

ParameterTypeDefaultDescription
includeStatisticsbooleantrueFetch full match statistics per period: xG, possession, shots, corners, fouls, and 30+ stat categories. Adds one API call per live match. Set to false for score-only runs.
includeLineupsbooleantrueFetch starting XI for both teams: formations, shirt numbers, positions, ratings, and nationalities. Adds one API call per live match. Set to false for score-only runs.
includeOddsbooleanfalseFetch live 1×2 odds with current value, opening value, and movement direction. Adds one API call per live match. Availability depends on geographic region — the odds field may be null even when this is enabled if no bookmakers are available in your region.
maxItemsintegerunlimitedMaximum number of live matches to return. Leave unset to return all currently live matches. Minimum: 1. Useful for test runs.
proxyConfigurationobject{"useApifyProxy": false}Apify proxy configuration. Not needed for normal use — Flashscore APIs do not block direct requests. Enable only if your network restricts outbound connections.

Scheduling for real-time monitoring

This actor is designed to be run on a recurring schedule to keep your data continuously up to date.

Recommended cadence: every 1–5 minutes during live match windows. A full run with all options enabled at 31 live matches makes approximately 158 HTTP requests and typically completes in under 30 seconds.

To set up a schedule:

  1. Open Apify Scheduler in the Apify Console.
  2. Create a new schedule pointing to this actor.
  3. Set the interval to every 1–5 minutes using a cron expression (e.g. */2 * * * * for every 2 minutes).
  4. Each run replaces the previous dataset — or use the Apify Dataset API to append results to your own storage.

How often should I run this actor?

For live scores and events, every 1–2 minutes is sufficient. For statistics and lineups (which update less frequently), every 3–5 minutes is appropriate. Odds change more frequently during the match — run every 1 minute if you need near-real-time odds.

Use cases

Live scores dashboard: Schedule the actor every 2 minutes to power a football dashboard showing all in-progress matches worldwide. Each item includes the current score, match minute, period, and goal timeline — everything needed to render a live scorecard.

In-play betting and odds tracking: Enable includeOdds and run every minute to feed your in-play betting model with live 1×2 odds alongside xG, possession, and shot data per half. One dataset item per match keeps your data pipeline simple.

Real-time sports analytics: Monitor expected goals (xG), ball possession, shots on target, and 30+ stat categories per period across all live matches simultaneously. Schedule at 3-minute intervals to capture tactical shifts throughout each match.

Goal and event notification system: After each run, scan the events array for new goals, red cards, or substitutions since your last poll. Each event includes minute, type, player_name, and the running score after the event — everything needed to trigger an automated notification.

Fantasy sports and trading platforms: Combine lineups (starting XI with shirt numbers, positions, and ratings) with live match stats to power real-time fantasy scoring or trading signals during match windows.

Academic and commercial football research: Capture per-match statistics for every league worldwide — not just top-5 leagues. The actor covers all competitions Flashscore indexes. Over a full match day, this can represent hundreds of matches with 30+ stat types each.

Notes and limitations

  • Football only. This actor extracts football (soccer) matches exclusively. Multi-sport support is planned for a future version.
  • Live matches only. The actor returns only currently in-progress matches (status: "LIVE"). For historical results, upcoming fixtures, or a wider date window, use the sibling Flashscore Extractor actor.
  • Odds are geo-dependent. Live 1×2 odds depend on your geographic region. In some regions no bookmakers serve data, so the odds field will be null even when includeOdds is true. This is a Flashscore data availability constraint, not an actor bug.
  • Halftime scores are null before half-time ends. home_score_halftime and away_score_halftime are null until the first half is complete and the half-time score is confirmed.
  • One item per match, not a single JSON blob. Each live match is its own dataset record, enabling Apify's native per-record webhooks, dataset filtering, and pagination — unlike actors that wrap all matches in a single output object.
  • Point-in-time snapshot. Each run captures the current state of all live matches at that moment. The actor does not push updates in real time. Schedule it for polling-based monitoring.

Frequently asked questions

Does this actor work without a proxy?

Yes. The actor fetches directly from Flashscore's internal feed APIs — no residential or datacenter proxy is required. You pay only for Apify compute, not proxy bandwidth. Enable the proxyConfiguration option only if your network restricts outbound connections.

How often can I run this actor?

As often as every 1 minute. A full run with statistics, lineups, and odds enabled for 31 live matches makes approximately 158 requests and typically completes in well under 30 seconds. This is well within normal Apify scheduling limits and Flashscore's tolerance for direct requests.

Why are odds sometimes empty (null)?

Odds availability depends on the geographic region where the actor runs. Flashscore serves bookmaker data based on the region of the requesting IP. In some regions no bookmakers are configured, so odds is null even when includeOdds: true. This is a Flashscore data availability constraint. If odds are important to your use case, confirm that live odds display when you browse Flashscore directly from your network.

What sports does this actor support?

Football (soccer) only in the current version. The actor is intentionally football-specific — it uses Flashscore's football live feed directly with no multi-sport selector. Support for additional sports is planned for a future release.

How is this different from the Flashscore Extractor actor?

The Flashscore Extractor covers historical results, today's matches, and upcoming fixtures across a 14-day window for football and basketball — but it returns only basic match listing data (teams, score, status, tournament). It does not extract events, statistics, lineups, or odds.

This actor specialises in the live snapshot: it captures every currently in-progress match with the full data depth (events, 30+ stat types per period, starting XI, live odds). Use the Flashscore Extractor for scheduling and historical data; use this actor for real-time live match depth.

How do I get xG or possession statistics?

Enable includeStatistics (the default is true). The statistics array in each match item contains all available stat types for the current match, broken down by period (Match, 1st Half, 2nd Half). Expected goals (xG) has stat_id: 432, ball possession has stat_id: 12. Each stat row includes home_value and away_value as raw strings (which may be percentages like "53%" or compound strings like "82% (233/285)").

How do I export results to CSV or Excel?

When the actor run completes, open the Dataset tab in the Apify Console and click Export. Apify natively supports JSON, CSV, XLSX, XML, and HTML exports. For automated pipelines, use the Apify Dataset API to pull results programmatically after each run.

  • Flashscore Extractor — Extract football and basketball match listings, results, and fixtures from Flashscore across a 14-day window. Use this for historical and scheduled data; use the live matches actor for real-time in-progress match depth.