Flashscore API Scraper
Pricing
from $0.50 / 1,000 matches
Flashscore API Scraper
Scrapes fixtures, results and live scores, league standings and full match detail (lineups, incidents, per-match statistics) from the Flashscore mobile API. Read-only public sports data.
Flashscore Scraper ποΈ β Scrape Flashscore.com Type, Event ID, Sport, Competition
Flashscore Scraper β Scrapes fixtures, results and live scores, league standings and full match detail (lineups, incidents, per-match statistics) from the Flashscore mobile API. Read-only public sports data. It reads Flashscore's own API directly, so it's fast, reliable and complete β no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.
β¨ Why use this Flashscore Scraper?
- π’ No code required β set your input, click Start, download your data.
- β‘ Fast & accurate β reads Flashscore's own private API and returns structured JSON, not scraped HTML.
- π§Ύ Rich, structured data β every field below, clean and ready to use.
- π Full pagination β collects results to your
maxItemscap. - πΈ Transparent pay-per-result pricing β pay only for the rows you get.
- π€ Export anywhere β JSON, CSV, Excel, XML, or pull it live via the Apify API.
π― What can you do with Flashscore data?
- Market & competitor research β analyse Flashscore records at scale.
- Price & availability monitoring β track changes over time.
- Data science & trend analysis β build clean datasets.
- Lead generation & enrichment β feed Flashscore data into your own tools.
π₯ What data does the Flashscore Scraper extract?
Each row includes: type, id, sport, competition_name, competition_id, competition_country, competition_stage_id, competition_tournament_id, competition_path, home_team, away_team, home_score, away_score, status β¦and more. See the full Data table below.
π How to scrape Flashscore.com (3 steps)
- Set your input β provide
sportordate(see the table below; defaults work out of the box). - Pick options β filters, a
proxyConfiguration, and amaxItemscap. - Run & export β click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.
βοΈ Input
| Field | Type | Default | Description |
|---|---|---|---|
sport | enum | football | Sport to fetch fixtures for. β one of football, tennis, basketball, hockey, volleyball, handball, baseball, american-football, rugby, cricket |
date | string | β | Match date as YYYY-MM-DD (e.g. 2026-08-22). Empty = today. |
dayOffset | integer | 0 | Days from today: 0=today, 1=tomorrow, -1=yesterday. Overrides Date when non-zero. |
timezone | integer | 0 | Feed timezone index (0 = UTC). |
maxItems | integer | 100 | Maximum matches (or standings rows) to return (0 = all). |
includeMatchDetail | boolean | false | Fetch full detail (lineups, incidents, per-match statistics) for each started match. Slower β adds 2 API calls per match. |
detailConcurrency | integer | 8 | How many match-detail requests to run in parallel when includeMatchDetail is on (max ~20). |
standingsCompetition | string | β | Competition name to fetch the league table for (e.g. "Premier League"). Empty = skip standings and return matches instead. |
standingsTab | enum | overall | Table view: overall (default), home, away or form. β one of overall, home, away, form |
proxyConfiguration | object | Apify Proxy | Route requests through a proxy (Apify Proxy by default). |
Example input
{"sport": "football","dayOffset": 0,"timezone": 0,"maxItems": 100,"includeMatchDetail": false,"detailConcurrency": 8,"standingsTab": "overall","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
π€ Output
Each result is a JSON object like this:
{"type": "match","id": "fDbSvphd","sport": "football","competition_name": "Premier League","competition_country": "England","home_team": "Racing Club","away_team": "Boca Juniors","home_score": 1,"away_score": 1,"status": "finished","round": "Round 6","start_time_utc": "2026-08-24T00:30:00+00:00","home_team_image": "https://static.flashscore.com/res/image/data/6T5YTkZA-OCiVKiPK.png","away_team_image": "https://static.flashscore.com/res/image/data/h4UwH8Cr-pGZDw.png"}
π§Ύ Data table
| Field | Type | Description |
|---|---|---|
type | text | Type |
id | text | Event ID |
sport | text | Sport |
competition_name | text | Competition |
competition_id | text | Competition ID |
competition_country | text | Country |
competition_stage_id | text | Stage ID |
competition_tournament_id | text | Tournament ID |
competition_path | text | Competition path |
home_team | text | Home team |
away_team | text | Away team |
home_score | number | Home score |
away_score | number | Away score |
status | text | Status |
result_status | number | Result status |
round | text | Round |
start_time_utc | text | Start time (UTC) |
last_update_time_utc | text | Last update (UTC) |
home_team_image | link | Home team image |
away_team_image | link | Away team image |
tv_channels | array | TV channels |
lineups | object | Lineups |
incidents | array | Incidents |
statistics | array | Statistics |
standings_tab | text | Standings tab |
position | number | Position |
team_name | text | Team |
team_id | text | Team ID |
team_slug | text | Team slug |
played | number | Played |
wins | number | Wins |
goals_for | number | Goals for |
goals_against | number | Goals against |
points | number | Points |
qualification | text | Qualification |
π° Pricing β pay per result
This actor uses pay-per-event pricing: you pay only for the rows it delivers.
| You scrape | Price |
|---|---|
| Match | $0.10 per 1,000 rows |
| Standing | $0.10 per 1,000 rows |
π Use the Flashscore Scraper via API
Run it programmatically with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/flashscore-api-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"sport": "football","dayOffset": 0,"timezone": 0,"maxItems": 100,"includeMatchDetail": false,"detailConcurrency": 8,"standingsTab": "overall","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Or with the Apify CLI: apify call flashscore-api-scraper -i input.json -o.
β FAQ
Do I need an account or API key for Flashscore?
No. The actor talks to Flashscore's public/mobile API for you β you only need an Apify account.
Do I need a proxy?
A proxy is recommended for reliable runs; set proxyConfiguration (Residential is safest for geo-restricted or bot-protected sites).
What export formats are supported?
JSON, CSV, Excel, XML, JSONL, RSS, or live via the Apify API and dataset endpoints.
Is scraping this legal?
You are responsible for how you use the data. Scrape only public record data and comply with Flashscore.com's Terms and applicable law (e.g. GDPR/CCPA for personal data).
π οΈ How it works
The actor impersonates Flashscore's official app/site and calls its private API the same way the app does, then normalises each response into the flat record above. No browser, no HTML scraping β just clean, structured data.
π Good to know
- Scrape only public record data and respect Flashscore.com's Terms of Service and robots policy.
- For personal data, comply with GDPR/CCPA and applicable law β you are the data controller.
- Fields can be
nullwhen Flashscore doesn't expose them for a given record.
β Found this useful?
Give the Flashscore Scraper a star on Apify and check out my other apify-*-api-scraper actors.
Standings: what this returns vs the website
Verified row-by-row against flashscore.com's Premier League table β position, team, MP, W, goals for/against and PTS all match the site exactly, in the same order, for all 20 rows.
Two website columns are not included, because the app's standings feed does not carry them
(its own column set is # TEAM MP G PTS; every to_ tab variant returns the same):
- D / L (draws, losses). Derivable only by assuming 3-points-for-a-win, which does not hold for every competition Flashscore covers. Guessing would be right most of the time and silently wrong the rest, so they are omitted rather than fabricated.
- FORM (last 5). Not in this feed.
GD is included β it is exact arithmetic from goals for/against, no assumption needed.