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
2
Total users
1
Monthly active users
16 hours 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 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:
- Direct — free, and where most runs stay for their whole lifetime.
- Datacenter proxy — included in every Apify plan, the free tier included. A few IPs are rotated here, which is usually enough.
- 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
| 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.