FlashScore Scraper & API avatar

FlashScore Scraper & API

Pricing

from $0.80 / 1,000 match scrapeds

Go to Apify Store
FlashScore Scraper & API

FlashScore Scraper & API

Scrape live and scheduled FlashScore scores for football, basketball, tennis, and 13 other sports: teams, scores, match status, and goal/card/point history.

Pricing

from $0.80 / 1,000 match scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

FlashScore Scraper & API

Extract live and scheduled match data from FlashScore for football, basketball, tennis, and 13 other sports — scores, match status, live clock, and full goal/card/point history.

Pick a sport and any day from 7 days ago to 7 days ahead, and get every match with live scores, status, league, and a full history of goals, cards, substitutions, or period-by-period scores — sourced directly from FlashScore's own live-score feed.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

parsebird/flashscore-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/flashscore-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: sport (string, required, default "football" — one of football, basketball, american-football, futsal, rugby union, rugby league, handball, baseball, hockey, cricket, tennis, volleyball, badminton, table-tennis, darts, snooker), dayOffsets (array of strings, default ["0"] — each -7 to 7, where 0=today, -1=yesterday, 1=tomorrow; pass several to scrape multiple days). Output: one item per match with fields home_team, away_team, home_score, away_score, status (Not started/Live/Finished), status_time, start_time, league, and history (array of period summaries and goal/card/substitution events with time, side, player, and action). Full actor spec: fetch build via GET https://api.apify.com/v2/acts/parsebird~flashscore-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations

What does FlashScore Scraper & API do?

FlashScore Scraper & API is a FlashScore API alternative that turns live scores and results into structured data — no manual refreshing, no copy-pasting scores off the site. It reads the same live-score feed FlashScore's own website loads, across 16 sports.

  • ⚽ Scrape football, basketball, american football, futsal, rugby union, rugby league, handball, baseball, hockey, cricket, tennis, volleyball, badminton, table tennis, darts, and snooker
  • 📅 Fetch any single day from 7 days ago to 7 days ahead, or select several days at once in one run
  • 🔴 Get live match status, current period (e.g. "2nd Half", "Set 2"), and score in real time
  • 📋 Full match history: period-by-period running scores, plus goals, cards, and substitutions with player names where FlashScore tracks them
  • 🏆 League/competition name for every match
  • ⏱️ Schedule recurring runs to track scores throughout matchday, trigger via the Apify API, or connect to Zapier, Make, Google Sheets, and webhooks
  • 📁 Export results as JSON, CSV, Excel, or pull them straight into your app with the Apify API

What data can you extract from FlashScore?

FieldDescription
home_team / away_teamTeam or player names
home_score / away_scoreCurrent score (null before kickoff)
statusNot started, Live, or Finished
status_timeCurrent period and, where FlashScore provides it, the live clock (e.g. "2nd Half - 58'", "Set 1 - 0:41")
start_timeScheduled kickoff, DD.MM.YYYY HH:MM (UTC)
leagueCompetition/league name, prefixed with country
historyArray of period summaries (kind: "summary") and events (kind: "event") with time, score, side, player, and action

How to scrape FlashScore live scores

  1. Go to the FlashScore Scraper & API page on Apify Store
  2. Click Try for free
  3. Choose a Sport from the dropdown
  4. Select one or more Days to fetch (0 = Today, negative = past, positive = future)
  5. Click Start and wait for the run to finish
  6. Download your data as JSON, CSV, or Excel, or pull it through the API tab

Use cases

  • Live score tracking — Poll a sport on a schedule to track scores and status changes throughout the day
  • Results archiving — Pull finished matches with full goal/card history for a league or date range
  • Betting/analytics research — Feed match results, timing, and events into your own models or dashboards
  • Sports media — Power a live-scores widget or ticker from structured match data
  • Historical lookback — Fetch any of the last 7 days to backfill recent results

How it works

FlashScore Scraper & API reads the same feed FlashScore's own website requests when you open a sport's scores page, then expands every match's period and event data from FlashScore's match-detail feed to build the history array. For matches that haven't started yet, history is returned empty since there's nothing to report; for live and finished matches, it includes every period and (when the sport tracks them) every event.

Use with the Apify API

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("parsebird/flashscore-scraper").call(run_input={
"sport": "football",
"dayOffsets": ["0"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['home_team']} {item['home_score']} - {item['away_score']} {item['away_team']} ({item['status']})")

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('parsebird/flashscore-scraper').call({
sport: 'football',
dayOffsets: ['0'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(`${item.home_team} ${item.home_score} - ${item.away_score} ${item.away_team} (${item.status})`));

Output example

{
"home_team": "Beroe",
"away_team": "Spartak Varna",
"home_score": 0,
"away_score": 0,
"status": "Live",
"status_time": "2nd Half - 57'",
"start_time": "21.11.2025 16:45",
"league": "BULGARIA: efbet League",
"history": [
{
"kind": "summary",
"time": "1st Half",
"score": "0 - 0"
},
{
"kind": "event",
"time": "40",
"side": "away",
"player": "Lozev D.",
"action": "Yellow Card"
},
{
"kind": "event",
"time": "44",
"side": "home",
"player": "Salomoni J.",
"action": "Red Card"
},
{
"kind": "summary",
"time": "2nd Half",
"score": "0 - 0"
}
]
}

Download results in JSON, HTML, CSV, or Excel from the Storage tab, or fetch them programmatically from the Dataset API.

Pricing

How much does it cost to scrape FlashScore with this actor?

FlashScore Scraper & API uses Pay-per-event pricing — you only pay for matches actually saved to the dataset:

EventPrice per eventPrice per 1,000
match-scraped$0.0009$0.90

Pricing steps down automatically as your account's Apify usage tier increases: $0.90/1,000 on the Free tier and $0.80/1,000 on Bronze, Silver, and Gold. A full day of football (1,000+ matches worldwide) on the Free tier costs under $1. Every new Apify account gets free trial credits, so you can test this actor without adding a payment method first.

Input parameters

ParameterTypeRequiredDefaultDescription
sportstringYesfootballSport to scrape — see the dropdown for all 16 supported sports
dayOffsetsarray of stringsNo["0"]Days to fetch, -7 to 7 (0 = today). Select multiple to scrape several days in one run

FAQ

Does this actor use an official FlashScore API? No — FlashScore does not publish a public API for third-party use. This actor reads the same structured match-score feed FlashScore's own website loads.

How accurate is the live clock in status_time? It comes directly from FlashScore's data whenever FlashScore provides one (for example, tennis and other set-based sports include an exact elapsed clock per game). For continuous-clock sports like football, hockey, and handball, the minute count is calculated from elapsed time since kickoff, which closely tracks the real game clock in the common case but can run ahead during long stoppages, interruptions, or delays. For sports with natural stoppages (basketball, baseball, cricket, etc.), only the current period is reported (e.g. "3rd Quarter") since a wall-clock estimate would be misleading there.

Why is history empty for some matches? Matches that haven't started yet have no history to report. A small number of lower-tier fixtures also don't have detailed event tracking on FlashScore itself — for those, history may contain period scores only, without individual goal/card events.

Can I get results for a specific league only? Not directly — this actor returns all matches for the sport and day(s) you select, across every league. Filter the league field in your downstream pipeline or with a data transformation actor.

Can I schedule recurring runs? Yes. Use Apify's Scheduler to run this actor every few minutes during matchday to track live scores as they update.

Can I use this with the API or integrations? Yes. Every run is accessible through the Apify API, and you can connect this actor to Zapier, Make, Google Sheets, Slack, and webhooks from the Integrations tab.

I found a bug or the actor stopped returning data — what do I do? FlashScore occasionally changes its feed format. Please open an issue on the Issues tab with your input and a description of what happened — reports are usually addressed quickly.

Scraping publicly available data, such as match scores and results shown to any visitor without logging in, is generally considered legal, including under precedents like hiQ Labs v. LinkedIn. This actor does not access any account-gated or private data. You are responsible for using the collected data in compliance with FlashScore's terms of service and applicable data protection laws in your jurisdiction. Read more in Apify's blog post on the legality of web scraping.

Other sports-data actors from ParseBird: