Flashscore Scraper avatar

Flashscore Scraper

Pricing

from $3.00 / 1,000 match records

Go to Apify Store
Flashscore Scraper

Flashscore Scraper

Scrape Flashscore live scores, results, fixtures, standings, H2H and match stats across football, tennis, basketball and 30+ sports. HTTP-only, MCP-ready.

Pricing

from $3.00 / 1,000 match records

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

10 days ago

Last modified

Share

Flashscore Scraper is an Apify Actor for sports data from Flashscore. It accepts either a sport plus day selection for list mode, or Flashscore match URLs or raw match IDs for detail mode. Each execution produces one record per match in the dataset: a list row for live scores, results, fixtures, or standings, or a richer match-detail record with summary data and the requested sections. Key fields include match ID, sport, league, teams, score, status, start time, and match URL, with optional statistics, incidents, lineups, standings, and head-to-head history in detail mode. The Actor is HTTP-only, usable through Apify MCP, and designed for structured JSON output.

Best fit and connected workflows

Use this Actor when your workflow starts with Flashscore match discovery and ends with machine-readable sports records.

Common routing patterns:

  • Sport and day inputs for daily pulls of live scores, results, or fixtures
  • Exact date input for a single calendar day within the feed window
  • Match URL or match ID input for full match detail
  • enrichListWithDetails when you want list rows plus nested detail in the same dataset
  • detailSections when you need only some sections such as statistics, incidents, lineups, standings, or head-to-head

The output works well for dashboards, alerts, research pipelines, and AI agent workflows that need a clean sports-data tool call and a dataset readback.

Practical scenario

A sports analyst named Maya starts with today's football fixtures in Spain. She sets sport to football, keeps dayOffsets at [0], and limits the run with maxResults. The dataset returns records with homeTeam, awayTeam, startTime, status, and matchUrl. From that, Maya can decide which matches are scheduled, which are live, and which she should open next with matchUrls to collect statistics and incidents for a deeper review.

Input

FieldTypePurpose
sportstringSport to scrape in list mode. Defaults to football.
dayOffsetsarrayRelative days to scrape, such as [-1, 0, 1].
datestringExact list-mode day in YYYY-MM-DD format. Overrides dayOffsets.
matchUrlsarrayFlashscore match URLs or raw 8-char match IDs for detail mode.
detailSectionsarrayDetail sections to include: summary, stats, incidents, lineups, standings, h2h.
enrichListWithDetailsbooleanAdds nested match detail to each list record.
maxResultsintegerHard cap on billable records for the run.
languagestringFeed language code for labels, such as en or es.
sportIdintegerAdvanced numeric Flashscore sport ID for sports outside the dropdown.
proxyConfigurationobjectProxy settings, defaulting to Apify Proxy.

Focused JSON example

{
"sport": "football",
"dayOffsets": [0, 1],
"detailSections": ["summary", "stats", "incidents", "lineups"],
"enrichListWithDetails": false,
"maxResults": 50,
"language": "en"
}

Output

The dataset can contain list rows and match-detail records. recordType identifies the shape of each record.

FieldTypePurpose
recordTypestringmatch for a list row, matchDetail for an enriched match.
matchIdstring or nullFlashscore 8-char match ID.
sportstring or nullSport name.
sportIdinteger or nullFlashscore sport ID.
dayOffsetinteger or nullRelative day used in list mode.
countrystring or nullCompetition country or region.
leaguestring or nullLeague or tournament name.
homeTeamstring or nullHome team or first competitor.
awayTeamstring or nullAway team or second competitor.
homeScoreinteger or nullHome score.
awayScoreinteger or nullAway score.
statusstring or nullMatch status such as scheduled, live, finished, or postponed.
startTimestring or nullKick-off time in ISO 8601 UTC.
matchUrlstring or nullFlashscore match URL.
availableTabsarray or nullDetail tabs available for the match.
statisticsarray or nullMatch statistics by period.
incidentsarray or nullGoals, cards, and substitutions.
lineupsobject or nullFormations and players.
standingsarray or nullLeague table rows.
headToHeadarray or nullPrior meetings.
detailobject or nullNested detail when list enrichment is enabled.

Illustrative JSON record

{
"recordType": "matchDetail",
"matchId": "2L651Hgn",
"sport": "football",
"sportId": 1,
"country": "Argentina",
"league": "Primera Nacional",
"homeTeam": "Nueva Chicago",
"awayTeam": "Atl. Rafaela",
"homeScore": 0,
"awayScore": 0,
"status": "finished",
"startTime": "2026-06-23T21:30:00.000Z",
"matchUrl": "https://www.flashscore.com/match/2L651Hgn/"
}

How it works

The Actor reads Flashscore data through an HTTP-based feed and converts it into structured dataset records. List mode uses a sport plus one or more day offsets, or an exact date. Detail mode uses match URLs or raw match IDs and can return selected sections such as summary, statistics, incidents, lineups, standings, and head-to-head history. The implementation is built for Apify MCP usage and uses Apify Proxy by default.

Pricing

Flashscore Scraper uses Pay per event, plus standard Apify platform usage. You can review the live Pricing tab for the current rates and billing details.

The billable events are:

  • Actor start
  • Match record
  • Match detail

Example in words: if a execution produces one hundred match records and no match-detail records, the billable event count is one actor start event plus one hundred match record events. If list enrichment is enabled, each nested match detail adds a match-detail event as well.

Use with AI agents (MCP)

This Actor is available through Apify MCP as the Apify Actor khadinakbar/flashscore-scraper.

Tool description: retrieve Flashscore sports records from a sport and day range, or fetch detailed match data from Flashscore match URLs or match IDs. The output is structured JSON that an agent can read, summarize, compare, or pass into downstream workflow steps.

Pull today's football fixtures for Spain, then fetch match detail for the two live matches. Return the teams, start times, current status, and any available statistics and incidents.

Output interpretation:

  • match records are list rows for live scores, results, fixtures, or standings rows
  • matchDetail records add the selected detail sections
  • matchId is the primary record key for linking list rows and detail rows
  • matchUrl preserves the source reference
  • availableTabs can help an agent decide which sections are present before deeper analysis

Provenance and scope:

  • Data comes from Flashscore's public feed
  • Scope is limited to the selected sport, date range, or match IDs
  • Language changes labels only; it does not change which matches are returned

Pagination and cost guidance:

  • Use maxResults to cap dataset size and billable records
  • Use list mode first for discovery, then detail mode only for the matches that matter
  • enrichListWithDetails is useful when a single dataset should include both list rows and nested match detail

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/flashscore-scraper').call({
sport: 'football',
dayOffsets: [0],
maxResults: 10,
language: 'en',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Use sport for the common sports in the dropdown, and use sportId only when you need a sport outside that list. Use date for a single day and dayOffsets for a short range. In detail mode, pass Flashscore match URLs or raw match IDs, and choose only the sections you need with detailSections. Set maxResults early when you want a predictable record count. If you need league context, add standings; if you need matchup context, add h2h.

Continue the workflow

  • Then use IMDb Scraper for Titles, Cast, Ratings and Reviews to extend Flashscore Scraper with a neighboring entertainment data research source when the brief calls for Imdb data.
  • Then use Fandom Scraper to extend Flashscore Scraper with a neighboring entertainment data research source when the brief calls for Fandom data.

Design note

I found that the dataset contract uses a single recordType field to separate list rows from enriched match-detail records, which makes downstream parsing straightforward.

FAQ

Can I scrape live scores and finished results with the same setup?
Yes. List mode returns the selected day range for the chosen sport, and the records include the status field for each match.

How do I get full match detail for one game?
Pass a Flashscore match URL or a raw 8-char match ID in matchUrls. The Actor switches to detail mode and returns the selected detail sections.

How do I include league table context?
Add standings to detailSections. The output can then include league table rows for the match.

How do I request head-to-head history?
Add h2h to detailSections in detail mode, or when list enrichment is enabled.

Can I use this Actor with an AI agent?
Yes. It is Apify MCP-ready and exposes structured input and output that work well in tool-based agent workflows.

Responsible use

Use this Actor for lawful data collection and internal analysis workflows that fit your rights and obligations. Review Flashscore's terms and your local data-protection requirements before distributing or republishing scraped data.