Flashscore Sports Data API — 58 record types, 40 sports avatar

Flashscore Sports Data API — 58 record types, 40 sports

Pricing

Pay per event

Go to Apify Store
Flashscore Sports Data API — 58 record types, 40 sports

Flashscore Sports Data API — 58 record types, 40 sports

The most comprehensive Flashscore data API on Apify. Live scores, fixtures, results, match events, statistics, lineups, H2H, standings, team and player profiles, transfers, injuries, rankings, season calendars, search and news. Production-ready JSON, CSV or Excel. Unofficial.

Pricing

Pay per event

Rating

0.0

(0)

Developer

João Brito

João Brito

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

⚽ Flashscore Sports Data API

58 record types · 40 sports · 18 modes — one actor.

Live scores, fixtures, results, stats, lineups, H2H, standings, team & player profiles, transfers, injuries, odds from 130+ bookmakers, rankings, news — normalized, deduplicated, warehouse-ready from $0.001/result.


Why this instead of the 10+ fragmented actors on Apify?

Search Apify for "flashscore" and you'll find a dozen actors that each do one thing — live football, basketball live, tennis fixtures, team stats, H2H, results… each with its own schema, its own scheduling, its own monitoring.

This actor replaces all of them.

This actorFragmented alternatives
Sports401–5 per actor
Record types583–15 per actor
Actors to install18–12
Unified schema❌ each is different
Odds coverage130+ bookmakers, 48 geos0–20 bookmakers
Cost estimate before payingdryRun
Budget cap✅ hard USD cap
Warehouse-readydedupeKey + schemaVersion❌ post-processing required

Try it in 30 seconds

Two ways to start cheaply:

  • Apify free tier — small experiments typically cost $0.02–$0.04.
  • Estimate first, pay later — add "dryRun": true to any input. The actor returns the projected cost in RUN_SUMMARY.estimatedBillingEvents with zero data charges.

Empty input → live football matches, safe defaults:

{}

Today's fixtures across any sport:

{
"mode": "matchesByDate",
"sports": ["football"],
"dateFrom": "2026-05-22",
"dateTo": "2026-05-22",
"maxItems": 200
}

Full match details — events + stats + lineups in one bundled record ($0.008):

{
"mode": "matchDetails",
"targetUrls": ["https://www.flashscore.com/match/<id>/"],
"include": { "events": true, "statistics": true, "lineups": true }
}

What you get

ModuleRecordsPrice
Live + fixtures + datesmatch_basic$0.0010
Match details + statsmatch_detail, match_events, match_statistics, match_lineups, match_h2h, match_commentary, match_video_highlights, match_momentum$0.0030
Premium bundlematch-full — summary + events + stats + lineups in one record. 33% cheaper than buying each separately ($0.012 → $0.008)$0.0080
Standingscompetition_standings, standing_row$0.0006
Teamsteam_profile, team_squad, team_matches, team_transfers, team_standings, team_news_feed$0.0025
Playersplayer_profile, player_career_stats, player_transfers, player_injury_history, player_match_record$0.0025
Competitionscompetition_profile, competition_matches, competition_draw, competition_archive$0.0025
Newsnews_article (full body), match_news, team_news_feed$0.0025
Rankings + calendarsranking_row (ATP, WTA, FIFA, OWGR…), season_calendar (ATP, WTA, PGA, F1…)$0.0025
Discoverysearch_result, country, competition, featured_competition$0.0025
Odds (opt-in)match_odds — 20 mainstream bookmakers (bet365, Betfair, William Hill, Unibet…) in one record per match. Add "include": {"odds": true}$0.0050

40 supported sports: football, tennis, basketball, hockey, american-football, baseball, handball, rugby, cricket, golf, darts, snooker, boxing, mma, motorsport, cycling, esports, volleyball, beach-volleyball, badminton, table-tennis, field-hockey, water-polo, aussie-rules and 16 more.


Odds: 130+ bookmakers, 48 markets

No other Flashscore actor on Apify comes close. The default primary preset returns 20 mainstream international bookmakers in a single record per match. Scale up as needed:

PresetGeosBookmakers
primary (default)1 (GB)20 incl. bet365, Betfair, William Hill, Ladbrokes, Unibet
balanced14~50
extended20~80
global28~100
max48130+ incl. DraftKings, FanDuel, Betano, Bwin, Winamax, Betsson

Enable with "include": {"odds": true}. Each preset costs $0.005 per match per geo.


Real-world cost examples

ScenarioWhat gets billedCost
Premier League matchday — 10 matches, full bundle10 × match-full$0.08
Today's fixtures, all 40 sports~500 × match-basic$0.50
Live football, every 5 min, full Saturday (6 runs)1,200 × match-basic~$1.20
Champions League round of 16 — full bundle16 × match-full~$0.13
Weekly Premier League standings20 × standing-row$0.012
50 matches with odds (default preset, 20 books)50 × match-full + 50 × odds-record$0.65
Single player deep dive — profile + career + transfers + injuries~4 × entity-profile$0.01

Add "dryRun": true to any input to get a projected cost estimate at zero charge before committing.


Use it from your app

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('joaobrito/flashscore-sports-data-api').call({});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const live = items.filter(row => row.recordType === 'match_basic');
console.log(`${live.length} live matches`);
// { recordType, matchId, homeTeamName, awayTeamName, homeScore, awayScore, status, ... }

Python

from apify_client import ApifyClient
import os
client = ApifyClient(token=os.environ["APIFY_TOKEN"])
run = client.actor("joaobrito/flashscore-sports-data-api").call(run_input={})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["recordType"] == "match_basic":
print(item["homeTeamName"], "vs", item["awayTeamName"], item["status"])

Get your APIFY_TOKEN at console.apify.com/account/integrations.


What a record looks like

Every record carries recordType, source, sourceUrl, scrapedAt, schemaVersion, and a stable dedupeKey — safe to replay, trivial to upsert into Postgres, BigQuery, or Snowflake.

{
"recordType": "match_basic",
"source": "flashscore",
"sport": "football",
"matchId": "4I23FiTQ",
"country": "England",
"competitionName": "Premier League",
"startTime": "2026-05-22T19:00:00.000Z",
"status": "1st Half",
"statusCategory": "live",
"homeTeamName": "Home FC",
"awayTeamName": "Away FC",
"homeScore": 1,
"awayScore": 0,
"scrapedAt": "2026-05-22T19:23:45.000Z",
"schemaVersion": "2.0.0",
"dedupeKey": "match_basic:football:4I23FiTQ"
}

statusCategory is a cross-sport bucket (scheduled · live · paused · finished · postponed · cancelled) so you filter consistently across all 40 sports with the same field.


All 18 modes

ModeWhat it does
liveLive + same-day matches by sport
matchesByDateFixtures + results in a date range
matchDetailsPer-match deep dive: events, stats, lineups, H2H, commentary, highlights, odds
teamTeam profile, squad, recent + upcoming matches, transfers, news
playerPlayer profile, career stats, transfers, injuries, last matches
competitionProfile, fixtures, results, archive, draw, leaderboard, participants
standingsLeague / competition standings tables
h2hHead-to-head data for a match or team pair
newsNews articles by locale / category — metadata + full body
rankingsATP, WTA, FIFA, OWGR, FedExCup rankings
seasonCalendarsATP, WTA, PGA, F1 season calendars
searchPublic discovery search by query (teams / players / competitions)
topSearchPopular discovery suggestions
countriesCountry / category catalog, optionally expands to competitions
featuredCompetitionsEditorial top competitions per sport
newsLocalesCatalog of available Flashscore News locales
newsCategoriesCatalog of categories per locale
bookmakersPublic bookmaker name catalog by geo

Controls

ParameterDescription
modeOne of the 18 modes above
sportsArray of sport identifiers (40 supported)
targetUrlsPublic Flashscore URLs of matches, teams, players, competitions
include.*events, statistics, lineups, h2h, commentary, highlights, momentum, odds, news
maxItemsCap per run — default 50, safety net against runaway runs
dryRuntrue → project cost, emit zero billable records
ACTOR_MAX_TOTAL_CHARGE_USDHard USD cap; run halts gracefully at 95%

Build a historical archive

Use Apify Scheduler to run this actor on a daily or hourly cron. The dataset accumulates across runs and the dedupeKey on every record makes upserts trivial — you get a clean, append-only historical table even though the actor only scrapes the present. A daily matchesByDate job over a few months gives you a solid fixture-and-result archive for backtesting.


Know before you buy

  • Latency: 1–3 seconds wall-clock per request, polling-based. Not suitable for sub-second live trading or WebSocket push feeds.
  • No SLA: best-effort unofficial extractor. Build retries and a cached fallback into your pipeline.
  • Cross-run billing: re-running the actor against the same matches re-bills per the Apify PPE model — dedupeKey is for your upsert idempotency, not for skipping charges.
  • Public data only: no login bypass, no CAPTCHA, no paywall.

Support

Open an issue on the Apify Actor page:

Run ID:
Input used:
Affected URL or matchId:
Expected vs. actual:
RUN_SUMMARY warning category (if any):

Unofficial extractor. Not affiliated with, endorsed by, or sponsored by Flashscore or Livesport.