Flashscore Scraper — Live Scores, Results, Odds & Stats avatar

Flashscore Scraper — Live Scores, Results, Odds & Stats

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Flashscore Scraper — Live Scores, Results, Odds & Stats

Flashscore Scraper — Live Scores, Results, Odds & Stats

Scrape Flashscore results, fixtures and live scores for football, tennis, basketball, hockey and 25+ sports. Full season history, odds by bookmaker, match stats, lineups, events and tennis point-by-point. No login or API key. Export JSON, CSV, Excel.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share

Flashscore Scraper — Live Scores, Results, Fixtures, Odds & Match Statistics

Flashscore Scraper collects football (soccer), tennis, basketball, hockey and 24 more sports from Flashscore.com — live scores, finished results, upcoming fixtures, full season history, betting odds by bookmaker, match statistics (xG, possession, aces, break points…), lineups, goals and cards, and tennis point-by-point. It is a fast Flashscore API alternative: no login, no API key, no browser, no proxy needed. Export to JSON, CSV, Excel, Google Sheets or straight into your database, model or AI agent.

Use it as a Flashscore results scraper for whole leagues and seasons (Premier League, LaLiga, Bundesliga, Serie A, Ligue 1, NBA, NHL…), as a tennis data scraper for every ATP, WTA, Challenger and ITF match, or as a live score and odds feed you schedule every few minutes. One run returns tens of thousands of matches — measured on the Apify platform: 16,456 matches from 50 league seasons in 10 seconds and 39,204 ITF tennis matches in about two minutes.

Independent tool — not affiliated with, endorsed by or sponsored by Flashscore or Livesport s.r.o. All trademarks belong to their owners. The Actor reads the same public data your browser shows on flashscore.com.


What you get

What is in each row (one row = one match)
MatchFlashscore match ID and URL, sport, start time (UTC), status (scheduled / live / finished / postponed / cancelled / walkover / retired …) and the exact Flashscore status text ("After Penalties", "Set 2", "Half Time"…)
CompetitionCountry or tennis category (ATP - Singles, ITF Women - Singles…), tournament / league name, season, round, tennis surface, tournament URL and IDs
Teams / playersHome and away name, Flashscore participant ID and profile URL, logo / photo URL, 3-letter code; for tennis the players' countries and doubles partners
ScoreFinal score, regular-time score, extra-time score, penalty shoot-out, half-time score, every period (halves, quarters, periods, sets, innings), tennis tie-breaks, winner, a readable scoreSummary ("7-6 (7-1), 6-7 (3-7), 3-6"), red cards
Live (tennis)Points in the current game and who is serving
Summary (optional)Venue, city, attendance, stadium capacity, referee / umpire and nationality, match and set durations
Statistics (optional)Every stat Flashscore shows, for the whole match and per period — football: xG, xGOT, possession, shots, big chances, corners, passes, fouls, saves…; tennis: aces, double faults, 1st/2nd serve %, break points saved/converted, winners, unforced errors, total points…
Events (optional)Goals with scorer, assist and score after the goal, yellow/red cards with reason, substitutions (in/out), missed penalties, VAR — with minute and team
Lineups (optional)Formation, starting XI, substitutes, coach — with shirt number, nationality, captain/goalkeeper flags and player IDs
Point-by-point (optional, tennis)Every game of every set: server, game winner, breaks of serve and the full point sequence with break points (BP), set points (SP) and match points (MP); every tie-break point
Odds (optional)Pre-match 1X2 or home/away odds per bookmaker — closing and opening — plus averages, best prices and averaged over/under lines (goals, games or sets); also for upcoming matches

28 duel sports are supported: football, tennis, basketball, hockey, American football, baseball, handball, volleyball, rugby union, rugby league, cricket, darts, snooker, table tennis, badminton, esports, futsal, floorball, bandy, beach volleyball, Aussie rules, water polo, field hockey, beach soccer, boxing, MMA, netball and pesäpallo.


Three ways to use it

1. Daily scores & fixtures (by sport and day)

Every match of the chosen sports for up to 7 days back and 7 days ahead — results, live scores and fixtures in one dataset. Perfect for a scheduled job that keeps your database or betting model up to date.

{
"mode": "daily",
"sports": ["football", "tennis", "basketball", "hockey"],
"daysBack": 1,
"daysAhead": 2,
"matchStatus": "all",
"maxItems": 10000
}

2. League / tournament history (whole seasons)

Complete results — and optionally the remaining fixtures — of entire seasons, as many seasons back as Flashscore's archive goes (the Premier League archive reaches the 1990s). Paste a league URL, a single-season URL, a tennis category (every tournament in it) or a country (every competition in it):

{
"mode": "leagues",
"leagueUrls": [
"https://www.flashscore.com/football/england/premier-league/",
"https://www.flashscore.com/football/spain/laliga/",
"https://www.flashscore.com/basketball/usa/nba/"
],
"seasons": 10,
"includeFixtures": true
}

All ATP and WTA singles tournaments of the 2025 season, with statistics and point-by-point:

{
"mode": "leagues",
"leagueUrls": [
"https://www.flashscore.com/tennis/atp-singles/",
"https://www.flashscore.com/tennis/wta-singles/"
],
"seasonNames": ["2025"],
"details": ["statistics", "pointByPoint"]
}

You can also type names — "leagueNames": ["Premier League", "NBA", "Wimbledon", "Bundesliga"] — and the Actor finds them with Flashscore's own search.

3. Specific matches

{
"mode": "matches",
"matchUrls": [
"https://www.flashscore.com/match/football/arsenal-hA1Zm19f/everton-KluSTr9s/?mid=jXP8f29S",
"KOht3l94"
],
"details": ["summary", "statistics", "events", "lineups", "odds"]
}

Extra details (any mode)

Add "details": [...] with any of summary, statistics, events, lineups, pointByPoint, odds. Each one is fetched only for the matches that are actually saved. oddsCountry (default GB) decides which bookmakers you see — e.g. DE, FR, ES, IT, PL, BR.


Input reference

FieldTypeDefaultMeaning
modedaily / leagues / matchesdailyWhat to scrape. Filling league URLs or match URLs switches mode automatically.
sportslistfootball, tennis, basketball, hockeySports for daily mode (URL slugs: football, tennis, american-football, table-tennis…).
daysBack / daysAhead0–71 / 0Day window for daily mode.
leagueUrlslist of URLs–Leagues, seasons, tennis categories or countries. Short paths like football/spain/laliga work too.
leagueNameslist of text–League names resolved with Flashscore search.
seasonsnumber1How many latest seasons per league.
seasonNameslist–Exact seasons, e.g. 2023/2024, 2019/2020, 2025.
includeFixturesbooleanfalseAlso the unplayed matches of the current season.
matchUrlslist–Match URLs or 8-character match IDs.
matchStatusall / finished / scheduled / liveallKeep only results, only fixtures or only live matches.
detailslistnonesummary, statistics, events, lineups, pointByPoint, odds.
oddsCountry2 lettersGBBookmaker set for odds.
maxItemsnumber10,000Stop after this many matches (0 = no limit).
concurrency1–5016Parallel requests.
proxyConfigurationproxynoneNot needed; the Actor switches to Apify Proxy by itself if Flashscore ever refuses the direct connection.

Output example

A WTA match from a daily run with all tennis details (shortened — real run, 13 Oct 2026):

{
"matchId": "27tGDU8l",
"matchUrl": "https://www.flashscore.com/match/27tGDU8l/",
"sport": "Tennis",
"category": "WTA - Singles",
"tournament": "Wuhan (China)",
"tournamentFullName": "WTA - SINGLES: Wuhan (China), hard",
"surface": "hard",
"startTime": "2026-10-13T03:10:00.000Z",
"status": "finished",
"statusDetail": "Finished",
"homeName": "Birrell K.",
"awayName": "Volynets K.",
"homeScore": 1,
"awayScore": 2,
"winner": "away",
"winnerName": "Volynets K.",
"scoreSummary": "1-2: 7-6 (7-1), 6-7 (3-7), 3-6",
"periods": [{ "home": 7, "away": 6 }, { "home": 6, "away": 7 }, { "home": 3, "away": 6 }],
"tiebreaks": ["7-1", "3-7", null, null, null],
"homeCountry": "Australia",
"awayCountry": "USA",
"homeUrl": "https://www.flashscore.com/player/birrell-kimberly/S4ljFw3g/",
"referee": "Svarova N.",
"matchDuration": "3:01",
"periodDurations": ["1:07", "1:11", "0:43"],
"statistics": {
"Match": {
"Aces": { "home": 5, "away": 1 },
"Double Faults": { "home": 8, "away": 4 },
"1st serve percentage": { "home": "64%", "away": "70%" },
"Break Points Saved": { "home": "14/22", "away": "3/9" }
},
"Set 1": { "…": "…" }
},
"pointByPoint": [
{ "set": 1, "kind": "game", "homeScore": 0, "awayScore": 1, "server": "home", "winner": "away", "serviceLost": true,
"points": "15:0, 15:15, 30:15, 30:30, 30:40 BP, 40:40, 40:A BP, 40:40, 40:A BP, 40:40, 40:A BP" }
],
"odds": {
"market": "Home/Away",
"bookmakerCount": 20,
"homeAverage": 2.5,
"awayAverage": 1.5,
"homeOpeningAverage": 2.32,
"awayOpeningAverage": 1.56,
"bookmakers": [{ "bookmaker": "bet365", "home": 2.5, "away": 1.53, "homeOpening": 2.38, "awayOpening": 1.57 }],
"overUnder": [{ "line": 22.5, "unit": "games", "over": 1.86, "under": 1.84, "bookmakers": 16 }]
}
}

A Premier League match with summary, statistics, events, lineups and odds (shortened — EPL 2024/2025 run):

{
"matchId": "4Q2eCnZ0",
"sport": "Football",
"country": "England",
"tournament": "Premier League",
"season": "2024/2025",
"round": "Round 38",
"startTime": "2025-05-25T15:00:00.000Z",
"homeName": "Newcastle",
"awayName": "Everton",
"homeScore": 0,
"awayScore": 1,
"halfTimeHome": 0,
"halfTimeAway": 0,
"scoreSummary": "0-1 (HT 0-0)",
"winner": "away",
"homeRedCards": 0,
"awayRedCards": 0,
"venue": "St. James' Park",
"city": "Newcastle",
"attendance": 52221,
"venueCapacity": 52305,
"referee": "Harrington T.",
"statistics": { "Match": { "Expected goals (xG)": { "home": 1.27, "away": 0.9 }, "Ball possession": { "home": "66%", "away": "34%" }, "Total shots": { "home": 17, "away": 14 }, "Corner kicks": { "home": 12, "away": 3 } } },
"events": [{ "period": "1st Half", "minute": "24'", "team": "away", "type": "Yellow Card", "player": "Gueye I.", "detail": "Roughing" }],
"lineups": { "home": { "formation": "1-3-4-3", "coach": "Howe E.", "starting": [{ "name": "Barnes H.", "number": 11, "nationality": "England" }] } },
"odds": { "market": "1X2", "bookmakerCount": 16, "homeAverage": 1.25, "drawAverage": 6.19, "awayAverage": 10.91, "homeOpeningAverage": 1.37 }
}

Data dictionary

Identity & competition

FieldDescription
matchIdFlashscore's 8-character match ID — stable, use it to de-duplicate and to join runs.
matchUrlLink to the match on flashscore.com.
sport, sportIdSport name and Flashscore's numeric sport ID (1 football, 2 tennis, 3 basketball, 4 hockey…).
countryCountry of the competition for team sports (England, Spain, World, Europe…).
categoryFlashscore's category: the country for team sports, the tour for tennis (ATP - Singles, Challenger Women - Singles, ITF Men - Doubles…).
tournamentTournament or league name (Premier League, Wuhan (China), Shanghai (China) - Qualification).
tournamentFullNameExactly as Flashscore prints the header (ENGLAND: Premier League, WTA - SINGLES: Wuhan (China), hard).
seasonSeason (2024/2025, 2025) in league mode.
roundRound in league mode (Round 38, 1/8-finals, Semi-finals, Final).
surfaceTennis surface: hard, clay, grass, hard (indoor), clay (indoor), carpet.
tournamentUrl, tournamentId, tournamentStageId, tournamentTemplateIdLinks and Flashscore IDs of the competition, season and stage.

Time & status

FieldDescription
startTime, dateKick-off / first serve in UTC (ISO 8601) and its date.
statusscheduled, live, finished, postponed, cancelled, interrupted, abandoned, delayed, awarded. Walkovers and retirements are finished with a flag.
statusDetail, statusCodeFlashscore's own stage text and code: Finished, After Extra Time, After Penalties, Walkover, Finished / retired, 2nd Half, Set 3 - Tiebreak, Half Time…
retired, walkoverTennis/individual sports: the match ended by retirement / was a walkover.

Participants

FieldDescription
homeName, awayNameTeam or player names as on Flashscore; doubles as Player A/Player B.
homeId, awayIdFlashscore participant IDs (team or player).
homeUrl, awayUrlTeam or player profile page.
homeCountry, awayCountryPlayers' countries (tennis and other individual sports); doubles as Country A / Country B.
homeShortName, awayShortName3-letter codes (ARS, NEW, SIN).
homeLogo, awayLogoTeam logo or player photo URL when Flashscore has one.

Score

FieldDescription
homeScore, awayScoreResult after regular time plus extra time / overtime, without the shoot-out (sets won in tennis, goals in football, points in basketball).
homeScoreRegularTime, awayScoreRegularTimeScore after regular time (90 minutes, 60 minutes of hockey, four quarters…).
homeScoreExtraTime, awayScoreExtraTimeScore after extra time / overtime, when played.
homePenalties, awayPenaltiesPenalty or overtime shoot-out score.
halfTimeHome, halfTimeAwayHalf-time score (football, futsal, handball, beach soccer).
periodsScore of every period in order: halves, quarters, hockey periods, tennis/volleyball sets (games or points), innings.
tiebreaksTennis tie-break score per set ("7-4"), null for sets without one.
winner, winnerNamehome, away or draw (shoot-outs decide the winner).
scoreSummaryReadable line: 2-1 (HT 1-1), 1-1 (HT 0-1), AET 2-1, 0-0 (HT 0-0), pens 4-3, 1-2: 7-6 (7-1), 6-7 (3-7), 3-6.
homeRedCards, awayRedCardsRed cards (football; 0 when the match has full coverage and no red card).
currentGame, servingTennis live: points in the current game (30-15) and home/away serving.
infoNoticeFlashscore's note on the match: aggregate score, neutral venue, withdrawals, closed roof…

Optional details

FieldDescription
referee, refereeCountryReferee (football…) or chair umpire (tennis) and nationality code.
venue, city, attendance, venueCapacityStadium, city, spectators and capacity.
matchDuration, periodDurationsTennis match and set durations ("3:01", ["1:07","1:11","0:43"]).
statistics{ "Match": { "<stat>": { "home", "away" } }, "1st Half": {…}, "Set 1": {…} } — numbers as numbers, percentages and ratios as shown ("64%", "60% (49/82)").
eventsGoals, cards, substitutions, VAR, missed penalties: period, minute, team, type, player, playerId, assist, playerOut, detail (card reason), score after a goal, commentary text.
lineups{ home: { formation, starting[], substitutes[], coach }, away: {…} }; players with name, number, nationality, role (Captain / Goalkeeper), playerId, url.
pointByPointTennis games: set, kind (game / tiebreak / set), homeScore/awayScore after the game, server, winner, serviceLost, points (with BP/SP/MP marks).
oddsmarket (1X2 or Home/Away), bookmakerCount, closing and opening averages, best prices, bookmakers[] with each bookmaker's closing and opening odds, overUnder[] (line, unit games/sets, average over/under, bookmakers), marketsAvailable.
scrapedAtWhen the row was collected (UTC).

How much data can I get?

Flashscore keeps an enormous archive, and the Actor reads it through the same data feeds the website uses — so volume is limited by what you ask for, not by the scraper. Measured on the Apify platform on 15 October 2026:

RunMatchesTime
Prefill (tennis, yesterday + today, 200 matches)2001.9 s
Daily default — football, tennis, basketball, hockey, 1,000 matches1,0002.5 s
Premier League, LaLiga, Bundesliga, Serie A, Ligue 1 × 10 seasons16,456 (all 50 seasons complete, 0 duplicates)10 s
ITF Men + ITF Women singles, every 2025 tournament (1,264 editions)39,204 (0 duplicates)129 s
ATP singles — latest edition of all 104 listed tournaments5,609~15 s
1,000 tennis matches with summary + statistics + point-by-point + odds1,00071 s
Premier League 2024/2025, all 380 matches with summary, statistics, events, lineups and odds38075 s

How big the archive is, per source (tournaments listed by Flashscore): ITF Women Singles 1,766 · ITF Men Singles 1,357 · ITF Men Doubles 1,355 · Challenger Men Singles 622 · Challenger Men Doubles 565 · WTA Singles 232 · ATP Singles 203 · WTA Doubles 228 · ATP Doubles 199. A football country like England lists 29 competitions; the Premier League archive goes back to 1995/1996 (380 matches that season too).

Detail coverage depends on the level of the competition, exactly as on the website. Measured on 1,000 tennis matches: ATP/WTA/Challenger singles have statistics (17–21 stats per period), point-by-point and odds for 99–100 % of matches; ITF matches have odds for ~99 % and point-by-point for ~40 %, but Flashscore publishes only a minimal stat line for them. Premier League: venue, attendance, referee, 35 statistics, events, lineups and odds for 100 % of 380 matches (12.6 bookmakers per match on average).


What you pay

You pay a fixed price per match row — $1.50 per 1,000 matches on the free plan, less on paid Apify plans (down to $1.00 per 1,000). Everything is included: the extra details (statistics, events, lineups, point-by-point, odds) do not cost extra, and there are no separate compute or proxy charges for you.

Maximum cost per run. Apify lets you cap what a run may spend ("Maximum cost per run" in the run options, or maxTotalChargeUsd in the API). The Actor reads that cap at the start, collects exactly as many matches as it covers and finishes cleanly with a message such as "Saved 37 matches — this run's maximum cost ($0.05) covers 37 results" — it never runs over the cap and never ends as an aborted run. To collect more, raise the cap or maxItems.


Use cases

  • Sports betting models & value betting — years of results with half-time, extra-time and penalty scores, plus closing and opening odds from up to 20 bookmakers per match, to train and back-test models.
  • Tennis analytics — every ATP, WTA, Challenger and ITF match with surface, round, set and tie-break scores, retirements, serve and return statistics, and point-by-point game flow (breaks, BP/SP/MP).
  • Live score apps, bots and dashboards — schedule the daily mode every few minutes; live status, current game and server for tennis.
  • Fantasy sports and tipping — fixtures, lineups, events and form data in one place.
  • Sports journalism & content — results, attendances, referees and statistics for articles, previews and newsletters.
  • Academic research — home advantage, referee bias, momentum in tennis, attendance studies across thousands of seasons.
  • Data products — feed a database, data warehouse or Google Sheet with clean, typed match data.
  • AI agents — give an LLM agent reliable sports data through the Apify MCP server or API.

Integrations & API

Run it from the Apify Console, on a schedule, or through the API.

cURL — run and get the results in one call:

curl -X POST "https://api.apify.com/v2/acts/logiover~flashscore-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"daily","sports":["tennis"],"daysBack":1,"matchStatus":"finished"}'

Node.js (npm i apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('logiover/flashscore-scraper').call({
mode: 'leagues',
leagueUrls: ['https://www.flashscore.com/football/england/premier-league/'],
seasons: 5,
details: ['statistics', 'odds'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].scoreSummary);

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/flashscore-scraper").call(run_input={
"mode": "leagues",
"leagueUrls": ["https://www.flashscore.com/tennis/atp-singles/"],
"seasonNames": ["2025"],
"details": ["statistics", "pointByPoint"],
})
for match in client.dataset(run["defaultDatasetId"]).iterate_items():
print(match["date"], match["homeName"], match["awayName"], match["scoreSummary"])

No-code: use the Apify integrations for Make, Zapier, n8n, Google Sheets, Airbyte, Keboola or a webhook that fires when a run finishes. Exports: JSON, CSV, Excel, XML, HTML table, RSS. AI agents: add the Actor to the Apify MCP server to let Claude, ChatGPT or any MCP client pull live scores and odds on demand.

Tip for scheduled jobs: use matchId as the key — re-running the daily mode updates the same matches as they go from scheduled to live to finished.


Why this Flashscore scraper

This ActorTypical alternatives
Sports28 duel sports in one Actoroften one sport (football only or tennis only)
Historyany season in Flashscore's archive, whole categories and countries at oncetoday ± a few days
TennisATP, WTA, Challenger, ITF, singles and doubles, surface, tie-breaks, point-by-pointmatch list only
Oddsclosing and opening odds per bookmaker, over/under lines, also for fixturesnone, or charged extra
Details pricingincluded in the per-match priceextra event per detail
Speed~1,600 matches per second from feeds; tens of thousands per runpage-by-page browsers
Run outcomeclear success / empty / failure, never a silent empty "success"varies

Limits & good to know

  • Daily mode covers 7 days back and 7 days ahead — that is what Flashscore's daily feeds offer. For anything older use league / tournament history mode.
  • Non-duel sports (golf, motorsport, cycling, horse racing, winter sports) use a different format and are not included.
  • Coverage follows Flashscore. Lower leagues and ITF tennis often have no lineups, fewer statistics or no point-by-point; those fields are then null.
  • Odds are the pre-match odds Flashscore displays for the bookmakers available in oddsCountry; markets vary by match.
  • Times are UTC. date is the UTC date of the start time.
  • Live data is a snapshot taken when the row is saved. Schedule frequent runs for live tracking.
  • round is filled in league mode (the daily feeds do not carry it).

FAQ

How do I scrape Flashscore results for a whole season?

Choose League / tournament history, paste the league URL (e.g. https://www.flashscore.com/football/germany/bundesliga/) and set seasons to how many seasons you want, or list exact ones in seasonNames. Every match of each season is returned — the Actor checks each season against Flashscore's own event count.

Can I get historical football results from previous seasons?

Yes. Flashscore's archive goes back decades for major leagues — the Premier League to 1995/1996. Set seasons: 30 or name the seasons you need.

How do I scrape all ATP, WTA, Challenger or ITF tennis matches?

Paste a tennis category URL such as https://www.flashscore.com/tennis/itf-men-singles/ — the Actor expands it to every tournament in the category (1,357 for ITF Men Singles) — and choose the season, e.g. seasonNames: ["2025"]. One run measured 39,204 ITF matches.

Does it give live scores?

Yes. Daily mode includes matches in progress with status: "live", the current period (statusDetail, e.g. Set 2 or 2nd Half), the current score and, for tennis, the points in the current game and who is serving. Use matchStatus: "live" to get only live matches and schedule the Actor as often as you need.

How do I get betting odds from Flashscore?

Add "odds" to details. You get the main market (1X2 for football, home/away for tennis and other sports) for every bookmaker Flashscore lists in oddsCountry, with closing and opening odds, averages and best prices, plus over/under lines with their unit (goals, games or sets). Odds are available for upcoming matches too.

Does it include statistics like xG, possession, aces or break points?

Yes — add "statistics". You get every statistic Flashscore shows, for the whole match and for each half, period or set: xG, xGOT, possession, shots, big chances, corners, passes and saves for football; aces, double faults, serve percentages, break points, winners and unforced errors for tennis.

Is tennis point-by-point data available?

Yes — add "pointByPoint". Each game comes with the server, the winner, whether serve was broken and the full point sequence with break-, set- and match-point marks; tie-breaks point by point. Coverage: ~100 % of ATP, WTA and Challenger singles matches, ~40 % of ITF matches.

Which sports are supported?

Football, tennis, basketball, hockey, American football, baseball, handball, volleyball, rugby union and league, cricket, darts, snooker, table tennis, badminton, esports, futsal, floorball, bandy, beach volleyball, Aussie rules, water polo, field hockey, beach soccer, boxing, MMA, netball and pesäpallo.

Do I need a Flashscore account, an API key or proxies?

No. The Actor reads the public data feeds Flashscore's website uses, over a direct connection. If Flashscore ever refused the direct connection, it would switch to Apify Proxy by itself.

How fast is it?

Results come from data feeds, not from rendering pages: 1,000 matches in about 2–3 seconds, 16,456 matches from 50 league seasons in 10 seconds. Details add one small request per match and type — 1,000 tennis matches with four detail types took 71 seconds.

How much does it cost to scrape 10,000 matches?

$15 on the free Apify plan at $1.50 per 1,000 matches, $10 on plans with the lowest tier. Details are included. You can cap any run with "Maximum cost per run".

Why do some matches have no statistics or lineups?

Because Flashscore does not have them for that match — typically lower leagues, youth football or ITF tennis. The fields are then null rather than guessed.

How do I avoid duplicates when I run it every day?

Use matchId as the key. Within one run every match appears once (a match crossing midnight is listed under two days on Flashscore — the Actor de-duplicates it). Across runs, update rows by matchId.

How are penalty shoot-outs and extra time represented?

homeScoreRegularTime is the 90-minute (or regulation) score, homeScoreExtraTime the score after extra time / overtime, homePenalties the shoot-out, and homeScore the result without the shoot-out. winner tells who won, including shoot-outs, and scoreSummary shows it all, e.g. 1-1 (HT 0-1), AET 2-1.

What time zone are the dates in?

UTC, in ISO 8601 (2025-05-25T15:00:00.000Z).

Can I use it with Python, n8n, Make, Zapier or Google Sheets?

Yes — see "Integrations & API" above. Every run's dataset can be exported or pushed to those tools, and the Actor can be called from any language through the Apify API.

The Actor collects publicly available sports data (fixtures, results, statistics, odds) at a moderate rate, without logging in. Sports results are facts; still, check Flashscore's terms and the laws that apply to you, and do not republish their content in a way that infringes their rights. This Actor is an independent tool and is not affiliated with Flashscore.


Support

Questions, a sport or field you need, or something that looks wrong? Open an issue on the Actor's Issues tab — we reply within 24 hours and fix data problems quickly. Custom versions (extra markets, other bookmakers, scheduled exports) are possible on request.


Changelog

  • 1.0 (2026-10-15) — First release: daily scores & fixtures for 28 duel sports (7 days back / 7 ahead), full league and tournament season history from Flashscore's archive (league, season, tennis-category and country URLs, league names), specific matches, and optional summary, statistics, events, lineups, tennis point-by-point and bookmaker odds (closing + opening). Pay-per-result with a clean stop at the run's maximum cost.

Flashscore is a trademark of Livesport s.r.o. This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Flashscore or Livesport. All trademarks mentioned are the property of their respective owners.