Flashscore API Scraper — Match Results, Scores & Fixtures avatar

Flashscore API Scraper — Match Results, Scores & Fixtures

Pricing

from $7.80 / 1,000 scraped match results

Go to Apify Store
Flashscore API Scraper — Match Results, Scores & Fixtures

Flashscore API Scraper — Match Results, Scores & Fixtures

Scrape Flashscore match results and fixtures into JSON: teams, final scores, status, kick-off time, competition and match URL. USD 9.75 per 1,000 results.

Pricing

from $7.80 / 1,000 scraped match results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share

Flashscore API Scraper turns public Flashscore competition, results and team pages into a clean dataset of match results with teams, final scores, status, kick-off time, competition, country and match URL, for sports analysts, data journalists, bettors' research models and dashboard builders. It costs USD 9.75 per 1,000 match results on the FREE tier, plus a small start fee, and you pay only for rows delivered to your dataset.

Flashscore has no official public API. This Actor gives you an API-style JSON feed of the results Flashscore already shows on its public pages, for football, tennis, basketball, hockey and the other sports Flashscore lists.

What data does the Flashscore scraper return?

Each dataset row is one match. Optional fields are null when the page does not expose them.

FieldWhat it meansExample
matchIdFlashscore match ID (stable, used for deduplication)G0XLh1up
sportSport, from the page URL or the page's sport IDFootball
competitionLeague, cup or tournament namePremier League
countryCountry or region of the competition, when listedEngland
statusFinished, Finished after extra time, Finished after penalties, Postponed, Cancelled, Live or ScheduledFinished
dateMatch date in UTC (YYYY-MM-DD)2026-10-25
startTimeScheduled start in UTC, ISO 86012026-10-25T14:00:00.000Z
homeTeam / awayTeamHome and away team or playerArsenal / Everton
homeScore / awayScoreFinal score (sets won in tennis); null for unplayed matches2 / 0
periodScoresNot filled in this version; always nullnull
matchUrlPublic Flashscore match pagehttps://www.flashscore.com/match/football/...
sourceUrlThe page the row came fromhttps://www.flashscore.com/football/england/premier-league/
scrapedAtUTC time the row was extracted2026-10-27T03:03:01.494Z

How do I get Flashscore match results without an official API?

Paste one or more public Flashscore page URLs and run the Actor; it reads the match list that Flashscore embeds in each page and returns it as JSON, CSV or Excel. It works with:

  • Competition pages, for example https://www.flashscore.com/football/england/premier-league/ (on 2026-10-27 this page held all 80 matches played so far this season).
  • Results pages, including past seasons, for example https://www.flashscore.com/football/england/premier-league-2024-2025/results/.
  • Team results pages, for example https://www.flashscore.com/team/arsenal/hA1Zm19f/results/.
  • Other sports, for example https://www.flashscore.com/basketball/usa/nba/ or https://www.flashscore.com/tennis/atp-singles/paris/results/.

Turn on Include Upcoming Matches to also get the scheduled fixtures listed on the same pages (status Scheduled, scores empty).

When should I use it, and when not?

Use it when you need final scores and fixtures for whole leagues, seasons, tournaments or teams in a spreadsheet, database, notebook or BI tool, refreshed on a schedule.

Do not use it for:

  • Live minute-by-minute scores, odds, lineups, match statistics, standings or player stats. The Actor returns the match list only.
  • Half-time or set-by-set scores. periodScores is not filled in this version.
  • A full season's history in one page. Each page returns the matches Flashscore embeds in it; older matches behind the page's "Show more" button are not fetched. A past-season results page held the latest 109 of 380 matches on 2026-10-27.
  • US women's basketball box scores and rosters. Use WNBA Stats Scraper instead.

Input

FieldUseBounds
startUrlsPublic https://www.flashscore.com/ competition, results, fixtures or team pages1–20 URLs
maxResultsMaximum unique matches across all pages1–500, default 100
maxPagesMaximum pages to fetch1–20, empty = every URL
includeUpcomingAlso return scheduled fixturesdefault off
{
"startUrls": [{ "url": "https://www.flashscore.com/football/england/premier-league/" }],
"maxResults": 25
}

URLs outside www.flashscore.com are skipped and reported in OUTPUT. Login, betting and private pages are not supported.

Use it from an AI assistant

The Actor works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/flashscore-match-results-scraper to your client, then ask in plain language, for example: "Get the last 30 Premier League results from Flashscore and tell me which team has the most away wins."

Run it with the Apify API

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/flashscore-match-results-scraper').call({
startUrls: [{ url: 'https://www.flashscore.com/football/england/premier-league/' }],
maxResults: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (apify-client 3.x):

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/flashscore-match-results-scraper").call(run_input={
"startUrls": [{"url": "https://www.flashscore.com/football/england/premier-league/"}],
"maxResults": 25,
})
items = client.dataset(run.default_dataset_id).list_items().items
print(items)

Output example

[
{
"matchId": "ImWz7i0f",
"sport": "Football",
"competition": "Premier League",
"country": "England",
"status": "Finished",
"date": "2026-10-25",
"startTime": "2026-10-25T16:30:00.000Z",
"homeTeam": "Sunderland",
"awayTeam": "Leeds",
"homeScore": 0,
"awayScore": 0,
"periodScores": null,
"matchUrl": "https://www.flashscore.com/match/football/sunderland-WSzc94ws/leeds-tUxUbLR2/?mid=ImWz7i0f",
"sourceUrl": "https://www.flashscore.com/football/england/premier-league/",
"scrapedAt": "2026-10-27T03:03:01.494Z"
},
{
"matchId": "hKoqZYL0",
"sport": "Basketball",
"competition": "NBA",
"country": "USA",
"status": "Finished",
"date": "2026-10-27",
"homeTeam": "Milwaukee Bucks",
"awayTeam": "Indiana Pacers",
"homeScore": 110,
"awayScore": 102,
"matchUrl": "https://www.flashscore.com/match/basketball/milwaukee-bucks-QTBEW6rC/indiana-pacers-YPohMUTt/?mid=hKoqZYL0"
}
]

Each run also writes an OUTPUT record with the status (SUCCEEDED, EMPTY or BLOCKED), delivered and charged counts, pages visited, the stop reason and any warnings.

How much does it cost?

Pay per event: one event per match row in your dataset, plus a start fee charged once per started GB of allocated memory. The default 512 MB run pays one start fee.

TierPer match resultPer 1,000 resultsStart fee
FREEUSD 0.009748USD 9.75USD 0.008229
BRONZEUSD 0.009504USD 9.50USD 0.008023
SILVERUSD 0.009260USD 9.26USD 0.007817
GOLDUSD 0.007798USD 7.80USD 0.006583

Worked totals on the FREE tier at 512 MB: 25 results cost about USD 0.25 (0.008229 + 25 × 0.009748); 500 results cost about USD 4.88. Platform usage is included in these prices. If you set a maximum charge for the run, the Actor stops when it is reached and says so in the status message.

Reliability and limits

  • One plain page request per URL; a 25-result default run finished in about 18 seconds on 2026-10-27.
  • Up to 500 unique matches and 20 pages per run. Duplicate matches across pages are saved once.
  • Blocked or failed pages are retried, and a run where every page is blocked ends as failed with BLOCKED in OUTPUT and no result charges. A valid page with no matches ends as EMPTY.
  • Flashscore can change its page format. The Actor never invents rows; if the match list disappears, it reports that in OUTPUT.

FAQ

Is there an official Flashscore API? No. Flashscore does not offer a public API. This Actor reads the public match lists on Flashscore pages and returns them as structured JSON.

Which sports does it support? Any sport whose Flashscore page lists matches with home and away sides. Football, tennis and basketball pages were tested on 2026-10-27.

Can I get results for a past season? Yes. Use the season's results URL, for example .../premier-league-2024-2025/results/. You get the matches embedded in that page, which may be the latest part of the season rather than all of it.

Does it return live scores or odds? No. The Actor returns final results and, if you turn it on, scheduled fixtures. It does not track live scores or betting odds.

How do I avoid paying for duplicates? Matches are deduplicated by Flashscore match ID before saving, so overlapping pages, such as a league page and a team page, do not bill the same match twice in one run.

Can I schedule it? Yes. Save your input as an Apify Task, add a schedule, and send each dataset to a webhook, Google Sheets or your database.

The Actor reads only public Flashscore pages and does not log in, bypass access controls or touch betting flows. Use the data in line with Flashscore's terms, competition data rights and applicable law.

Last verified: 2026-10-27