Sofascore Live Scores & Fixtures Scraper
Pricing
from $1.50 / 1,000 matches
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
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
5
Monthly active users
18 days ago
Last modified
Categories
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" }:
| Home | Away | Status | Competition | Kick-off (UTC) | ||
|---|---|---|---|---|---|---|
| Newcastle United | 2 | 2 | Liverpool FC | finished | Premier League | 2026-08-23 15:30 |
| Manchester City | 2 | 1 | Bournemouth | finished | Premier League | 2026-08-23 13:00 |
| Brighton & Hove Albion | 4 | 0 | Aston Villa | finished | Premier League | 2026-08-23 13:00 |
| Athletic Club | 1 | 3 | Sevilla | finished | LaLiga | 2026-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 premium plan and no residential proxy required.
This Actor talks to sofascore.com/api/v1 directly — no headless
browser. Sofascore screens requests on their TLS handshake, which this Actor
clears with a browser-grade HTTP client rather than by paying for egress.
Sofascore does refuse a share of datacenter IPs, Apify's own runners included, so a run on the platform normally reaches Sofascore through a proxy. What matters is which proxy — the Actor escalates cheapest-first and stops at the first tier that works:
- Direct — free. This is what a run from your own machine usually uses.
- Datacenter proxy — included in every Apify plan, the free tier included. Up to 12 IPs are rotated here. Across five platform runs the most any single run needed was 4, and every run got through on this tier.
- Residential proxy — the metered one, reached only if all 12 free IPs above were refused.
So there is no residential-proxy add-on requirement and no egress bill to absorb.
Two modes
| Mode | Input | What it fetches |
|---|---|---|
Live (liveOnly: true) | none needed | Every match currently in progress, for each sport selected. One fast call per sport. |
| Daily schedule (default) | dateFrom / dateTo | Matches 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 passtournamentIdsand 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
| Field | Type | Default | Description |
|---|---|---|---|
sports | array of strings | ["football"] | One or more of the 19 supported sport slugs. |
liveOnly | boolean | false | Fetch only in-progress matches instead of a daily schedule. |
dateFrom | string (YYYY-MM-DD) | today (UTC) | First date to fetch. Ignored when liveOnly is on. |
dateTo | string (YYYY-MM-DD) | dateFrom | Last date to fetch, inclusive. Max 31 days per run. Ignored when liveOnly is on. |
tournamentIds | array of integers | – | Sofascore unique-tournament IDs (e.g. 17 = Premier League, 8 = LaLiga). Skips tournament discovery for a fully predictable request count. |
maxTournamentsPerDate | integer | 30 | Cap on how many discovered tournaments to fetch per date, ranked by follower count. Only used when tournamentIds is empty. |
maxDiscoveryPages | integer | 2 | How 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. |
maxItems | integer | 500 | Hard cap on stored matches. The run stops as soon as it is reached. |
proxyConfiguration | object | off | Leave 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.
| Actor | What it returns |
|---|---|
| Live Scores & Fixtures | This Actor. |
| Match Stats, xG & Lineups | Per-match shotmaps with pitch coordinates, lineups, ratings, momentum. Takes eventId. |
| League Standings & Tables | League tables, group stages, conferences and divisions. Takes uniqueTournamentId. |
| Team & Player Data | Squads, bios, market values, transfers, match logs. Takes team and player IDs. |
| Season Stats | Season leaderboards and complete team statistics. Takes uniqueTournamentId. |
| Rankings & Search | FIFA, 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.