SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats
Pricing
from $0.95 / 1,000 match or results
SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats
Scrape SofaScore live scores, fixtures and match stats for 20+ sports, and monitor live matches for goals, red cards, half time and full time. Schedule it and get only what changed. Lineups, incidents, odds, head-to-head, period scores, venue and referee included. No login needed.
Pricing
from $0.95 / 1,000 match or results
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
31
Total users
3
Monthly active users
15 days ago
Last modified
Categories
Features
Share
โฝ SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats
| One suite for every scoreboard. Part of the Multi-Sport Live Scores, Stats & News suite: live scores across 20+ sports, deep tennis and MMA stats, and ESPN keyword news alerts, all built to run on a schedule. | |||
| MULTI-SPORT LIVE SCORES, STATS & NEWS ย ย โขย ย Four Actors, one scoreboard-to-newsroom data pipeline | |||
|
โค You are here |
ATP/WTA scores, stats & rankings |
UFC fight results & fighter stats |
Keyword alerts on ESPN news |
|
Live scores, goal alerts and match stats from SofaScore, in runs that finish. Pull in-play matches and fixtures for 20+ sports, or schedule the live monitor and get a row only when a goal, red card, half time or full time happens. No login, no API key. |
|
๐ Goal and card alerts The live monitor saves only what changed since the last run, with the scorer when you ask for it. |
โ
Runs that finish A busy or refusing site ends the run with a clear message and no charge, never a failed run. |
๐ Deep match detail Statistics, incidents, lineups, odds, head-to-head, fan votes, best players and shots. |
๐ 20+ sports Football, basketball, tennis, hockey, cricket, esports, table tennis, futsal, darts and more. |
Looking for SofaScore live scores you can put in a spreadsheet, a bot or a model? This Actor reads the public pages of SofaScore and returns clean rows: live scores with the match minute, fixtures and results by date, deep detail for chosen matches, player and team cards, and a monitor that reports only changes.
๐ What does this Actor do?
SofaScore shows live data on screen. This Actor turns it into rows you can schedule, filter and send anywhere.
- Live events: every match in play for one or many sports, with score, status, match minute, red cards and period scores.
- Live monitor: run it every minute or two. It remembers the previous run and saves one row per match that had a goal, a red card, a score correction, half time, a new kick-off or a final whistle.
- Scheduled events: fixtures and results for one day or up to seven days, for all competitions or only the ones you pick.
- Event detail: statistics, incidents, lineups, venue and referee, plus optional odds, head-to-head, fan votes, best players and a shot map.
- Team fixtures and profiles: last and next matches of any team, and cards for teams and players.
- Search: find players, teams, managers and referees by name.
- Filters: by competition, team, country or a word in the name, for live, scheduled and monitor runs.
๐ฏ What can I use it for?
- Alert builders: send goal, red card and full-time messages to Telegram, Slack or email through Apify integrations.
- Betting and trading analysts: feed live scores, cards and odds into a model.
- Fantasy and media teams: fill match pages, results tables and daily fixture lists.
- Sports data teams: build a history of fixtures, results and team form across many sports.
๐ How to use it
|
STEP 1 Pick a mode Choose live events, the live monitor, fixtures or match detail, then pick your sports and filters. |
STEP 2 Run it The default run returns 25 live football matches in seconds. Raise the limit when you are ready. |
STEP 3 Export or schedule Download CSV, Excel or JSON, or put the run on a schedule and connect it to your alerts. |
๐ฅ Input
Every field is optional. With nothing set you get 25 live football matches.
| Field | Type | Required | Description |
|---|---|---|---|
| Scrape mode | enum | No | Live events, Scheduled events, Event detail, Search, Live monitor, Team fixtures or Profiles. |
| Sport | enum | No | One sport for live, scheduled, monitor and search runs. Football is the default. |
| Several sports (optional) | array of enum | No | Cover more than one sport in a single run. When set, it replaces the single Sport. |
| Date (Scheduled events mode) | date | No | Day to read. Empty means today (UTC). Only dates from 2026 on are read. |
| Last date (optional) | date | No | Read every day from Date up to this day, at most 7 days. |
| Status filter | enum | No | Keep all, live, upcoming or finished matches. |
| Competition IDs | array of text | No | Only these competitions, for example 17 for the Premier League. Scheduled runs for known competitions are faster. |
| Team IDs | array of text | No | Matches of these teams, their last and next matches (Team fixtures) or their cards (Profiles). |
| Countries | array of text | No | Only matches from these countries or regions. |
| Name contains | text | No | Only matches whose teams or competition contain this text. |
| Search query (Search mode) | text | No | Name of a player, team, manager or referee. |
| Player IDs (Profiles mode) | array of text | No | Players to return a profile card for. |
| Events (Event detail mode) | array of text | No | Event IDs or full match links to read in depth. |
| Include match statistics | boolean | No | Possession, shots, expected goals and more. On by default. |
| Include incidents | boolean | No | Goals, cards, substitutions, VAR and period markers. On by default. |
| Include lineups | boolean | No | Starting lineups, formations and ratings. Off by default. |
| Include odds | boolean | No | Betting markets with opening and current prices. Off by default. |
| Include head-to-head | boolean | No | Record of the two teams and their last meetings. Off by default. |
| Include fan votes | boolean | No | Who fans expect to win, both teams to score, first to score. Off by default. |
| Include best players | boolean | No | Best rated players of each side. Off by default. |
| Include shot map | boolean | No | Every shot with expected goals and pitch position. Off by default. |
| Monitor name (Live monitor mode) | text | No | Name of the feed. Runs with the same name share one memory. |
| Save only changes | boolean | No | On: only changed matches are saved. Off: unchanged live matches are saved too. |
| What to watch | array of enum | No | Goals, red cards, status changes, kick-offs, endings. Empty watches everything. |
| Add scorer and card details | boolean | No | For goal and red card rows, add who scored, the assist and the minute. |
| Max items | integer | No | Maximum number of records to save. 0 means no limit. Free plan runs are capped at 100. |
| Proxy configuration | object | No | The default works for most runs. Add your own proxy URLs only if you need a fixed exit. |
๐ Data table
Fields SofaScore does not publish for a match are left out of the row. Nothing is filled with placeholders.
| Field | Type | Description |
|---|---|---|
rowType | text | event, change, eventDetail, searchResult, team or player. |
id | number | SofaScore ID of the match, team or player. |
matchName | text | Home team and away team. |
sport | text | Sport of the match. |
tournament | text | Competition name. |
uniqueTournamentId | number | Competition ID, usable in Competition IDs. |
country | text | Country or region of the competition. |
season | text | Season label. |
round | number | Round number when the competition has rounds. |
statusType | text | notstarted, inprogress or finished, plus cancelled and postponed states. |
statusDescription | text | For example 1st half, Halftime, Ended. |
startTime | text | Kick-off time (ISO 8601, UTC). |
liveMinute | number | Football only: current match minute while the clock runs. |
homeTeam / awayTeam | text | Team names. IDs, short codes and countries come with them. |
homeScore / awayScore | number | Current score. |
homeScoreHalftime / awayScoreHalftime | number | Football half-time score. |
periodScores | array | Score of every period, set, quarter, extra time and penalties. |
homeRedCards / awayRedCards | number | Red cards shown so far, when there are any. |
winnerCode | number | 1 home, 2 away, 3 draw, once finished. |
venue, venueCity, venueCapacity | text / number | Stadium details (Event detail). |
referee, attendance | text / number | Referee name and crowd (Event detail, when published). |
eventUrl | text | Link to the match on sofascore.com. |
statistics | array | Match statistics by period (Event detail). |
incidents | array | Goals, cards, substitutions and more (Event detail). |
lineups | object | Lineups, formations and ratings (Event detail). |
odds | array | Markets with fractional and decimal prices (Event detail). |
headToHead | object | Win, draw and loss record plus last meetings (Event detail). |
votes, bestPlayers, shotmap | object / array | Optional detail blocks (Event detail). |
missingSections | array | Requested detail blocks SofaScore did not answer, so a gap is never mistaken for no data. |
changeType | text | Monitor only: GOAL, RED_CARD, FINISHED, SCORE_CORRECTED, STATUS_CHANGE, KICKOFF, NEW or UNCHANGED. |
changes | array | Monitor only: every change found for the match in this poll. |
changeSummary | text | Monitor only: one readable line, for example Goal (home): Team A - Team B 1-0. |
previousHomeScore / previousAwayScore | number | Monitor only: the score before the change. |
goal, card | object | Monitor only, with scorer details: minute, player, assist and side. |
detectedAt | text | Monitor only: when the change was found. |
scrapedAt | text | Time the row was collected (ISO 8601). |
Example change row:
{"rowType": "change","id": 17096423,"matchName": "FC Cincinnati - DC United","tournament": "MLS","statusDescription": "2nd half","liveMinute": 88,"homeScore": 2,"awayScore": 1,"homeRedCards": 0,"changeType": "GOAL","changes": ["GOAL"],"changeSummary": "Goal (home): FC Cincinnati - DC United 2-1","scoringSide": "home","previousHomeScore": 1,"previousAwayScore": 1,"goal": { "minute": 88, "player": "Kevin Denkey", "assist": "Evander", "isHome": true },"eventUrl": "https://www.sofascore.com/fc-cincinnati-dc-united/cabsrdLb","detectedAt": "2026-10-22T01:14:03.512Z"}
๐ Live monitor
Set the mode to Live monitor, choose your sports and filters, give the feed a name and schedule the Actor every minute or two. The first run saves a baseline and returns no rows. Every later run saves one row per match that changed. A run that cannot reach SofaScore leaves the memory untouched, so a match is never reported as finished by mistake. A match that leaves the live list is checked on its own page before it is reported as finished.
๐ฐ Pricing
You pay per record saved. Match detail rows carry one small extra charge for the statistics, incidents and lineup blocks. A run that finds nothing, or that SofaScore refuses, costs next to nothing. There are no subscriptions. The default run of 25 matches is a quick, cheap test. Free plan runs are limited to 100 records per run and 24 runs per day.
โญ Enjoying SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats?
|
โญ โญ โญ โญ โญ Goal alerts without refreshing a scoreboard are worth a quick rating. A 5-star rating takes 10 seconds and helps other sports data builders find this Actor. Your feedback also tells us what to add next. |
| โ ย ย Rate this Actor on Apify |
โ FAQ
How do I get goal alerts from SofaScore?
Set the mode to Live monitor, pick your sports and filters, type a monitor name and schedule the Actor every minute or two. Each run saves one row per match with a goal, red card, half time or full time. Connect the dataset to Telegram, Slack, email or a webhook with Apify integrations.
Do I need a SofaScore account or API key?
No. The Actor reads only public data that anyone can open without logging in. It never asks for a password, cookie or key.
Why does my monitor return no rows on the first run?
The first run saves a baseline of the live matches in scope. From the second run on, only changes are saved. Switch off "Save only changes" if you also want the unchanged live matches in every run.
How do I get statistics, lineups or odds for a match?
Run Live events or Scheduled events to collect match IDs, then run Event detail with those IDs and tick the sections you need. Some lower-league matches do not publish statistics or lineups, and the row simply leaves them out.
Which sports and dates are covered?
Football, basketball, tennis, ice hockey, baseball, handball, volleyball, snooker, rugby, MMA, cricket, American football, esports, table tennis, futsal, darts, badminton, motorsport, Aussie rules, beach volleyball, floorball, bandy, minifootball, padel and cycling. Fixtures are read for dates from 2026 on.
๐ Support
Found a bug, or need an extra field? Open an issue on the Issues tab of this Actor and it will be reviewed.
๐ Other actors
- Tennis Live Scores Scraper: ATP, WTA, Sets, Stats and Rankings โ - Tennis scores, sets, stats and rankings.
- UFC and MMA Stats Scraper: Fight Results, Fighters and Rankings โ - UFC and MMA results and fighter stats.
- ESPN News Monitor: Keyword Alerts โ - Keyword alerts on ESPN news.
- LoL Esports Scraper: LEC LCK LPL MSI Worlds Results, Standings โ - Esports league results and standings.
- Betano Odds Scraper: Full Match Odds in 11 Countries & Monitor โ - Betting odds and price moves on Betano.
- Cricket Data API: ESPNcricinfo StatsGuru Export โ - Cricket statistics exports.