Sofascore Live Scores & Fixtures Scraper avatar

Sofascore Live Scores & Fixtures Scraper

Pricing

from $1.50 / 1,000 matches

Go to Apify Store
Sofascore Live Scores & Fixtures Scraper

Sofascore Live Scores & Fixtures Scraper

Scrape Sofascore live scores and fixtures across 19 sports — football, basketball, tennis, ice hockey, cricket and more. Get teams, scores, status, kick-off time, tournament and country per match. No API key, no login, no residential proxy — runs on the free plan. Export JSON, CSV or Excel.

Pricing

from $1.50 / 1,000 matches

Rating

5.0

(1)

Developer

Elena Vance

Elena Vance

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Sofascore Live & Daily Scores Scraper

Scrape live scores and daily fixtures from Sofascore across 19 sports -- football, basketball, tennis, ice hockey, cricket, volleyball, handball, baseball, and more. No Sofascore API key, no login.

Results are stored in an Apify dataset you can export as JSON, CSV, Excel, XML or HTML.

What you get

A real run, { "sports": ["football"], "dateFrom": "2026-08-23" }:

HomeAwayStatusCompetitionKick-off (UTC)
Newcastle United22Liverpool FCfinishedPremier League2026-08-23 15:30
Manchester City21BournemouthfinishedPremier League2026-08-23 13:00
Brighton & Hove Albion40Aston VillafinishedPremier League2026-08-23 13:00
Athletic Club13SevillafinishedLaLiga2026-08-22 15:00

Every row also carries team IDs, tournament and unique-tournament IDs, the country, a status code, a Unix timestamp, and a direct link to the match — see Output for the full shape.


Why this is cheap to run

No proxy required, and no premium plan required.

This Actor talks to sofascore.com/api/v1 directly — no headless browser, and no proxy at all unless Sofascore actually blocks a request. Sofascore screens requests on their TLS handshake, which this Actor clears with a browser-grade HTTP client rather than by paying for egress.

If an IP does get blocked, the Actor escalates on its own, cheapest first:

  1. Direct — free, and where most runs stay for their whole lifetime.
  2. Datacenter proxy — included in every Apify plan, the free tier included. A few IPs are rotated here, which is usually enough.
  3. Residential proxy — only if your plan has it, and only once the free tier above is exhausted.

So there is no residential-proxy add-on requirement, and a run that is never blocked spends nothing on proxy at all. See docs/architecture.md for the measurements behind this.

Two modes

ModeInputWhat it fetches
Live (liveOnly: true)none neededEvery match currently in progress, for each sport selected. One fast call per sport.
Daily schedule (default)dateFrom / dateToMatches for each date in range. Discovers which tournaments played that day, ranks them by Sofascore's own follower count, and fetches the top maxTournamentsPerDate (default 30) -- or pass tournamentIds yourself to skip discovery and fetch exactly the competitions you want.

What makes this different

  • 19 sports through one column set. Tennis, cricket, volleyball, handball, baseball and the rest come back in the same shape as football, so one parser handles all of them.
  • Tournament discovery is ranked, not arbitrary. In daily mode the Actor works out which competitions actually played that day and orders them by Sofascore's own follower count before fetching the top maxTournamentsPerDate. You get the matches people care about first rather than a random slice — or pass tournamentIds and skip discovery entirely.
  • A $0.00005 start fee, against up to $0.08 on comparable Sofascore Actors. On a run that fetches a single date, that gap is most of the bill.
  • Failures are never billed. Rows are charged only once stored; a tournament that cannot be read is reported in the run summary and costs nothing, and unusable input returns an unbilled diagnostic row instead of failing the run.
  • No API key, no login, no headless browser, no residential-proxy add-on — see Why this is cheap to run.

Input

FieldTypeDefaultDescription
sportsarray of strings["football"]One or more of the 19 supported sport slugs.
liveOnlybooleanfalseFetch only in-progress matches instead of a daily schedule.
dateFromstring (YYYY-MM-DD)today (UTC)First date to fetch. Ignored when liveOnly is on.
dateTostring (YYYY-MM-DD)dateFromLast date to fetch, inclusive. Max 31 days per run. Ignored when liveOnly is on.
tournamentIdsarray of integersSofascore unique-tournament IDs (e.g. 17 = Premier League, 8 = LaLiga). Skips tournament discovery for a fully predictable request count.
maxTournamentsPerDateinteger30Cap on how many discovered tournaments to fetch per date, ranked by follower count. Only used when tournamentIds is empty.
maxDiscoveryPagesinteger2How deep to page through tournament discovery. Page 1 already carries every major league, so the default keeps runs fast; raise it only to reach genuinely obscure competitions.
maxItemsinteger500Hard cap on stored matches. The run stops as soon as it is reached.
proxyConfigurationobjectoffLeave off. Direct calls with automatic cheapest-first proxy escalation only if blocked. Set this only to pin a specific proxy — e.g. to scrape from a particular country.

Output

One dataset row per match:

{
"eventId": 12435678,
"sport": "football",
"tournament": {
"name": "Premier League",
"id": 1,
"uniqueTournamentId": 17,
"uniqueTournamentName": "Premier League"
},
"category": "England",
"homeTeam": { "id": 17, "name": "Manchester City", "shortName": "Man City" },
"awayTeam": { "id": 38, "name": "Chelsea", "shortName": "Chelsea" },
"homeScore": 2,
"awayScore": 1,
"status": { "code": 100, "description": "Ended", "type": "finished" },
"startTimestamp": 1786284000,
"startTimeIso": "2026-08-23T14:00:00+00:00",
"slug": "manchester-city-chelsea",
"matchUrl": "https://www.sofascore.com/football/match/manchester-city-chelsea#id:12435678"
}

Example: today's live football

{ "sports": ["football"], "liveOnly": true }

Example: this week's Premier League and LaLiga fixtures

{
"dateFrom": "2026-08-24",
"dateTo": "2026-08-30",
"tournamentIds": [17, 8]
}

The Sofascore Actor suite

Six Actors from the same publisher, built on one shared HTTP layer and one ID space — so the output of one is the input of the next.

ActorWhat it returns
Live Scores & FixturesThis Actor.
Match Stats, xG & LineupsPer-match shotmaps with pitch coordinates, lineups, ratings, momentum. Takes eventId.
League Standings & TablesLeague tables, group stages, conferences and divisions. Takes uniqueTournamentId.
Team & Player DataSquads, bios, market values, transfers, match logs. Takes team and player IDs.
Season StatsSeason leaderboards and complete team statistics. Takes uniqueTournamentId.
Rankings & SearchFIFA, ATP/WTA, UEFA and UFC tables, plus name-to-ID search.

How they chain. Live Scores emits the eventId that Match Stats takes. Rankings' search turns a name into the team, player and tournament IDs the other five accept. Standings and Season Stats share uniqueTournamentId, and Team & Player emits that same ID as primaryTournamentId.

All six need no API key, no login and no headless browser; none requires a residential-proxy add-on, and all run on the Apify free plan.