August 14, 2026 · 8 min read
FlashScore Live Sports Scraper: 3 Practical Use Cases
By Crawlerbros Engineering Team · Updated September 19, 2026
To extract real-time sports data from FlashScore, you do not need complex browser automation, proxy pools, or cookie management. The Flashscore Scraper targets internal live-feed endpoints directly, using a single HTTP request to fetch live scores, match statuses, and league details across 14 sports. This approach bypasses heavy rendering overhead and runs efficiently on standard datacenter IPs.
In this guide, we explain how to configure and deploy this scraper for production workflows, detailing three practical use cases, input schemas, and data-quality controls.
Operational workflow
To build a reliable data pipeline around FlashScore, you must structure your collection process to handle the dynamic nature of live sports. The following workflow outlines how to initialize, execute, and process sports data systematically:
- Define the target sport and scope: Select one of the 14 supported sports from the input schema and decide whether you need only active matches or the entire day's schedule.
- Initialize the scraper: Run the Flashscore Scraper on the Apify platform with your JSON configuration.
- Execute the request: The scraper sends a direct HTTP request to the FlashScore internal endpoint, utilizing a hardcoded token and TLS impersonation to retrieve the raw feed.
- Parse and clean: The scraper filters out null values, omitting empty fields entirely to deliver a clean, non-null JSON dataset.
- Ingest and route: Your downstream application receives the JSON payload and routes the match records to your database, alerting system, or visualization widgets.
The role of the Actor
The primary component in this workflow is the Flashscore Scraper. This Actor acts as a lightweight extractor that handles the complex network negotiations, headers, and TLS fingerprinting required to communicate with FlashScore's internal feed. Instead of managing headless browsers, you interact with a clean API that returns structured JSON records containing match IDs, team names, scores, and match URLs.
Practical use cases
Use case 1: Sports betting signals
- Outcome: A real-time alerting database that flags sudden score changes, comebacks, or high-scoring matches to identify potential betting opportunities.
- Question to answer: Which live matches are currently experiencing rapid score changes or late-game shifts that deviate from pre-match expectations?
- Configure: Set
sportto "football",liveOnlyto true, andmaxItemsto 200. - Working method: Schedule the Flashscore Scraper to run every 60 seconds. Ingest the output into an in-memory database. Compare the current
homeScoreandawayScoreagainst the values from the previous run. If a score changes, calculate the time elapsed usingstartTimeandscrapedAtto determine if a late-game event has occurred, then push a notification to your trading channel. - Deliverable: A live JSON stream of score-change events containing
matchId,homeTeam,awayTeam,homeScore,awayScore, and the calculated score delta. - Stop condition: Terminate the monitoring loop when all targeted high-profile matches transition to a
statusof "finished".
Use case 2: Fantasy sports feeds
- Outcome: An automated daily ingestion pipeline that updates player and team performance metrics for fantasy sports platforms.
- Question to answer: What are the final scores and match statuses for all scheduled games today to calculate fantasy league standings?
- Configure: Set
sportto "basketball",liveOnlyto false, andmaxItemsto 500. - Working method: Run the scraper twice daily: once in the morning to capture the scheduled kick-off times (
startTime) and once at midnight to collect the final results. Your ingestion script reads thestatusfield; if the status is "finished", it updates the fantasy database with the finalhomeScoreandawayScorevalues. - Deliverable: A daily structured master file containing all scheduled, live, and completed basketball matches with their respective scores and league paths.
- Stop condition: Stop the daily ingestion run once the scraper returns 100% of the day's matches with a
statusof "finished".
Use case 3: Media sites
- Outcome: A lightweight, self-updating live score widget embedded on a sports news website.
- Question to answer: What are the current scores and active match statuses for ongoing tennis tournaments to display on a public homepage?
- Configure: Set
sportto "tennis",liveOnlyto true, andmaxItemsto 50. - Working method: Deploy the Flashscore Scraper to run every 2 minutes. Write the output directly to a public cloud storage bucket as a static JSON file. Configure your frontend widget to fetch this static JSON file directly from the bucket, minimizing database queries and avoiding backend load during high-traffic match windows.
- Deliverable: A publicly accessible, low-latency static JSON file containing active tennis matches, current set scores, and match URLs.
- Stop condition: Pause the automated scraper runs during hours when no live tennis matches are returned in the dataset.
Input schema and configuration controls
The scraper is controlled by three main input parameters that allow you to restrict the scope of your data collection:
- Sport (
sport): An enum string specifying the sport. Supported values includefootball,tennis,basketball,hockey,american-football,baseball,handball,rugby-union,rugby-league,futsal,volleyball,cricket,darts, andsnooker. - Live matches only (
liveOnly): A boolean flag. When set totrue, the scraper filters the feed to return only matches currently in progress. When set tofalse, it returns all scheduled, live, and finished matches for the current day. - Max Items (
maxItems): An integer between 1 and 1000 that limits the number of match records returned in a single run.
Output structure and data handling
The output data is returned as a clean JSON array. A key feature of this scraper is that empty or missing fields are completely omitted from the output rather than being returned as null values. This keeps the payload size small and simplifies downstream parsing.
Each match record contains core fields such as matchId, sport, homeTeam, awayTeam, status, statusCode, and scrapedAt. Optional fields like homeScore, awayScore, league, country, leaguePath, startTime, homeTeamShort, awayTeamShort, and url are included only when they contain active data.
Operational limitations
While the scraper is highly efficient, you should design your data pipeline with the following limitations in mind:
- No event timelines: The current version of the scraper does not extract per-match event timelines, such as individual goal scorers, yellow cards, or substitutions. It returns match headers and scores only.
- No historical archives: The scraper accesses the live-feed endpoint, which provides data for the current day only. You cannot query historical dates directly; instead, you must build your own archive by running the scraper daily with
liveOnlyset tofalseand saving the results. - Zero-match outputs: If there are no active or scheduled games for your selected sport at the time of the run, the scraper will return zero items with an exit code of 0. Your downstream code must handle empty arrays gracefully without treating them as system failures.
Frequently asked questions
Do I need a proxy or cookies?
No. The scraper does not require proxies or cookies. It connects directly to FlashScore's internal feed using standard HTTP requests, a hardcoded X-Fsign token, and Chrome 131 TLS fingerprint impersonation. It can run successfully from any standard datacenter IP address.
How fresh is the data?
The data is fetched in real time directly from the live feed at the moment of execution. Live scores generally update within seconds of the actual event occurring on the field.
What does liveOnly do?
When liveOnly is set to true, the scraper filters the response to include only matches that are currently in progress (e.g., live or half-time). When set to false, it returns all matches scheduled for the current calendar day, including those that have already finished or have not yet started.
Why do some sports return zero matches?
This occurs when there are no matches scheduled or playing for that sport on the current day. For example, selecting american-football during the off-season or cricket outside of active tournament windows will result in an empty dataset. This is normal behavior and not an error.
Are event timelines included?
No, individual event timelines (such as cards, substitutions, and goal scorers) are not included in the current release. The scraper provides match headers, current scores, and status details. Retrieving detailed timelines requires additional API calls that are not supported in this version.
Resources
- Apify Actor: Access the Flashscore Scraper on the Apify platform to configure and run your extraction tasks.
- FlashScore Portal: Visit the main FlashScore website to view the sports, leagues, and match structures supported by the feed.
● Featured actors
FlashScore Live Sports Scraper
Scrape live matches from FlashScore for football, basketball, tennis, hockey, baseball and 11 other sports. Returns match ID, teams, live score, status, league, start time and optional event timeline.
Run on Apify ↗