Flashscore API Scraper — Match Results, Scores & Fixtures
Pricing
from $7.80 / 1,000 scraped match results
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
Maintained by CommunityActor 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.
| Field | What it means | Example |
|---|---|---|
matchId | Flashscore match ID (stable, used for deduplication) | G0XLh1up |
sport | Sport, from the page URL or the page's sport ID | Football |
competition | League, cup or tournament name | Premier League |
country | Country or region of the competition, when listed | England |
status | Finished, Finished after extra time, Finished after penalties, Postponed, Cancelled, Live or Scheduled | Finished |
date | Match date in UTC (YYYY-MM-DD) | 2026-10-25 |
startTime | Scheduled start in UTC, ISO 8601 | 2026-10-25T14:00:00.000Z |
homeTeam / awayTeam | Home and away team or player | Arsenal / Everton |
homeScore / awayScore | Final score (sets won in tennis); null for unplayed matches | 2 / 0 |
periodScores | Not filled in this version; always null | null |
matchUrl | Public Flashscore match page | https://www.flashscore.com/match/football/... |
sourceUrl | The page the row came from | https://www.flashscore.com/football/england/premier-league/ |
scrapedAt | UTC time the row was extracted | 2026-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/orhttps://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.
periodScoresis 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
| Field | Use | Bounds |
|---|---|---|
startUrls | Public https://www.flashscore.com/ competition, results, fixtures or team pages | 1–20 URLs |
maxResults | Maximum unique matches across all pages | 1–500, default 100 |
maxPages | Maximum pages to fetch | 1–20, empty = every URL |
includeUpcoming | Also return scheduled fixtures | default 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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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.
| Tier | Per match result | Per 1,000 results | Start fee |
|---|---|---|---|
| FREE | USD 0.009748 | USD 9.75 | USD 0.008229 |
| BRONZE | USD 0.009504 | USD 9.50 | USD 0.008023 |
| SILVER | USD 0.009260 | USD 9.26 | USD 0.007817 |
| GOLD | USD 0.007798 | USD 7.80 | USD 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
BLOCKEDinOUTPUTand no result charges. A valid page with no matches ends asEMPTY. - 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.
Related Actors
- WNBA Stats Scraper — WNBA scoreboard games, teams and rosters.
Legal and compliance
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