# SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats (`getascraper/sofascore-live-events-scraper`) Actor

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.

- **URL**: https://apify.com/getascraper/sofascore-live-events-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Sports, News, Automation
- **Features:** Limited permissions
- **Stats:** 31 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.95 / 1,000 match or results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## ⚽ SofaScore Live Scraper: Live Scores, Goal Alerts & Match Stats

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;margin-bottom:0">
<tr>
<td colspan="4" style="padding:14px 18px;background:#E7F6EC;border:none;border-top:3px solid #107E39;border-left:1px solid #A9E4BE;border-right:1px solid #A9E4BE;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">One suite for every scoreboard.</span> <span style="font-size:15px;color:#57534E">Part of the Multi-Sport Live Scores, Stats &amp; News suite: live scores across 20+ sports, deep tennis and MMA stats, and ESPN keyword news alerts, all built to run on a schedule.</span>
</td>
</tr>
<tr>
<td colspan="4" style="padding:10px 14px;background:#107E39;border:none;border-left:1px solid #A9E4BE;border-right:1px solid #A9E4BE;color:#FFFFFF">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">MULTI-SPORT LIVE SCORES, STATS &amp; NEWS</span>
<span style="color:#FFFFFF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Four Actors, one scoreboard-to-newsroom data pipeline</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:none;border-left:1px solid #A9E4BE;border-bottom:1px solid #A9E4BE;vertical-align:top;width:25.0%;background:#E7F6EC;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-GIcLMzI9uWbEuE02p-PJGdAIijWG-j3LwUg3Ig5cGGFUme-actor-7ZDL3V6L8AMNKOvc3-1DaiPg1lwb-Screenshot_" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/sofascore-live-events-scraper" style="color:#107E39;text-decoration:none;font-weight:700;font-size:13px">SofaScore Live</a></span><br>
<span style="color:#107E39;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #A9E4BE;border-bottom:1px solid #A9E4BE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-IyJVsCHMe4dscd70W-4iRVpHZZ4c-tennis-logo-design-designs-players-ball-racket-inspiration-19408" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/tennis-live-scores-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Tennis Scores</a></span><br>
<span style="color:#57534E;font-size:11px">ATP/WTA scores, stats &amp; rankings</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #A9E4BE;border-bottom:1px solid #A9E4BE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-boWVVVfkLaOClXCtH-NEuW3LIYdM-official-logo-no-medal.svg.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/ufc-mma-stats-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">MMA Stats</a></span><br>
<span style="color:#57534E;font-size:11px">UFC fight results &amp; fighter stats</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #A9E4BE;border-right:1px solid #A9E4BE;border-bottom:1px solid #A9E4BE;vertical-align:top;width:25.0%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-oHUXMbAAYHzdnTGq3-Msh3JAu0ML-unnamed_%281%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/espn-news-monitor" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">ESPN Alerts</a></span><br>
<span style="color:#57534E;font-size:11px">Keyword alerts on ESPN news</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#E7F6EC;border:1px solid #A9E4BE;border-top:none;color:#1C1917">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Live scores, goal alerts and match stats from SofaScore, in runs that finish.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">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.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A9E4BE;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#166534">🔔 Goal and card alerts</span><br>
<span style="font-size:12px;color:#57534E">The live monitor saves only what changed since the last run, with the scorer when you ask for it.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A9E4BE;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#166534">✅ Runs that finish</span><br>
<span style="font-size:12px;color:#57534E">A busy or refusing site ends the run with a clear message and no charge, never a failed run.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A9E4BE;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#166534">📊 Deep match detail</span><br>
<span style="font-size:12px;color:#57534E">Statistics, incidents, lineups, odds, head-to-head, fan votes, best players and shots.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A9E4BE;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#166534">🌍 20+ sports</span><br>
<span style="font-size:12px;color:#57534E">Football, basketball, tennis, hockey, cricket, esports, table tennis, futsal, darts and more.</span>
</td>
</tr>
</table>

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

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#E7F6EC;border:1px solid #A9E4BE;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#107E39;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a mode</span><br>
<span style="font-size:12px;color:#57534E">Choose live events, the live monitor, fixtures or match detail, then pick your sports and filters.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#E7F6EC;border:1px solid #A9E4BE;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#107E39;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run it</span><br>
<span style="font-size:12px;color:#57534E">The default run returns 25 live football matches in seconds. Raise the limit when you are ready.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#E7F6EC;border:1px solid #A9E4BE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#107E39;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or schedule</span><br>
<span style="font-size:12px;color:#57534E">Download CSV, Excel or JSON, or put the run on a schedule and connect it to your alerts.</span>
</td>
</tr>
</table>

### 📥 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:

```json
{
  "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?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#E7F6EC;border:1px solid #E7F6EC;border-left:5px solid #16A34A;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Goal alerts without refreshing a scoreboard are worth a quick rating.</span><br>
<span style="font-size:14px;color:#57534E">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.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#107E39;border:1px solid #107E39;border-left:5px solid #107E39;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#1C1917">
<a href="https://apify.com/getascraper/sofascore-live-events-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ 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](https://apify.com/getascraper/tennis-live-scores-scraper) ↗ - Tennis scores, sets, stats and rankings.
- [UFC and MMA Stats Scraper: Fight Results, Fighters and Rankings](https://apify.com/getascraper/ufc-mma-stats-scraper) ↗ - UFC and MMA results and fighter stats.
- [ESPN News Monitor: Keyword Alerts](https://apify.com/getascraper/espn-news-monitor) ↗ - Keyword alerts on ESPN news.
- [LoL Esports Scraper: LEC LCK LPL MSI Worlds Results, Standings](https://apify.com/getascraper/lol-esports-scraper) ↗ - Esports league results and standings.
- [Betano Odds Scraper: Full Match Odds in 11 Countries & Monitor](https://apify.com/getascraper/betano-odds-scraper) ↗ - Betting odds and price moves on Betano.
- [Cricket Data API: ESPNcricinfo StatsGuru Export](https://apify.com/getascraper/espncricinfo-statsguru-scraper) ↗ - Cricket statistics exports.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/sofascore-live-events-scraper/changelog.md

# Actor input Schema

## `mode` (type: `string`):

What to do. Live events lists matches in play. Scheduled events lists fixtures and results by date. Event detail adds statistics, incidents, lineups, odds and more for chosen matches. Search finds players, teams, managers and referees. Live monitor reports only what changed since the last run (goals, red cards, half time, full time). Team fixtures lists last and next matches of teams. Profiles returns team and player cards.

## `sport` (type: `string`):

Sport for Live events, Scheduled events, Live monitor and Search. Use Sports below to cover several sports in one run.

## `sports` (type: `array`):

Pick more than one sport to cover them all in a single run. When set, it replaces the single Sport above.

## `date` (type: `string`):

Day to fetch fixtures and results for. Leave empty to use today (UTC). Only dates from 2026 on are read, because the site's robots.txt disallows earlier ones.

## `dateTo` (type: `string`):

Fetch every day from Date up to this day (at most 7 days). Leave empty for a single day.

## `statusFilter` (type: `string`):

Only keep matches with this status. Applies to Live events, Scheduled events and Team fixtures.

## `tournamentIds` (type: `array`):

Only matches from these competitions, for example 17 for the Premier League. Find the number in the 'uniqueTournamentId' column of any run. Skips the full competition scan, so scheduled runs are faster and cheaper.

## `teamIds` (type: `array`):

Matches of these teams (Live, Scheduled, Monitor), their last and next matches (Team fixtures) or their cards (Profiles). Find the number in 'homeTeamId' or 'awayTeamId'.

## `countries` (type: `array`):

Only matches from these countries or regions, for example England, Spain or World.

## `nameContains` (type: `string`):

Only matches whose teams or competition contain this text, for example 'United' or 'Cup'.

## `query` (type: `string`):

Name of a player, team, manager or referee to look up. Only used in Search mode.

## `playerIds` (type: `array`):

Players to return a profile card for. Find the number in the 'id' column of a Search run. Team cards use the Team IDs field above.

## `events` (type: `array`):

SofaScore event IDs (e.g. 12836554) or full match links to fetch deep detail for. Copy the numeric 'id' from a Live or Scheduled run. Only used in Event detail mode.

## `includeStatistics` (type: `boolean`):

Possession, shots, xG and other match statistics. Not available for every match.

## `includeIncidents` (type: `boolean`):

The incident timeline: goals, cards, substitutions, VAR and period markers.

## `includeLineups` (type: `boolean`):

Starting lineups, formations and player ratings. Not available for every match.

## `includeOdds` (type: `boolean`):

Betting markets with opening and current prices (fractional and decimal). Shown as published on SofaScore, not betting advice.

## `includeHeadToHead` (type: `boolean`):

Win, draw and loss record of the two teams plus their last meetings.

## `includeVotes` (type: `boolean`):

Who the fans expect to win, both teams to score and first team to score.

## `includeBestPlayers` (type: `boolean`):

The best rated players of each side with their ratings.

## `includeShotmap` (type: `boolean`):

Every shot with expected goals and pitch position. Football matches with tracking only.

## `monitorName` (type: `string`):

Name of the feed. Runs with the same name share one memory, so each run reports only what changed since the previous one. Leave empty to use a default feed. Use different names for different alerts.

## `onlyChanges` (type: `boolean`):

On: only matches that changed are saved, so quiet minutes cost nothing. Off: every live match in scope is also saved as an unchanged row. The first run of a feed only builds its baseline.

## `watch` (type: `array`):

Which changes create a row. Leave empty to watch everything.

## `includeScorers` (type: `boolean`):

For goal and red card rows, look up who scored, the assist and the minute. Adds one request per such row.

## `maxItems` (type: `integer`):

Maximum number of records to save. Use 0 for no limit. You are billed per record returned. Free plan runs are capped at 100.

## `proxyConfiguration` (type: `object`):

The Actor starts on cheap datacenter proxies and switches to residential automatically when SofaScore refuses them, so the default works for most runs. Add your own proxy URLs only if you need a fixed exit.

## Actor input object example

```json
{
  "mode": "liveEvents",
  "sport": "football",
  "sports": [],
  "date": "2026-10-24",
  "dateTo": "2026-10-27",
  "statusFilter": "all",
  "tournamentIds": [
    "17"
  ],
  "teamIds": [
    "215167"
  ],
  "countries": [
    "England"
  ],
  "nameContains": "United",
  "query": "Lionel Messi",
  "playerIds": [
    "12994"
  ],
  "events": [
    "12836554"
  ],
  "includeStatistics": true,
  "includeIncidents": true,
  "includeLineups": false,
  "includeOdds": false,
  "includeHeadToHead": false,
  "includeVotes": false,
  "includeBestPlayers": false,
  "includeShotmap": false,
  "monitorName": "premier-league-goals",
  "onlyChanges": true,
  "watch": [],
  "includeScorers": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "liveEvents",
    "sport": "football",
    "sports": [],
    "statusFilter": "all",
    "tournamentIds": [],
    "teamIds": [],
    "countries": [],
    "playerIds": [],
    "includeStatistics": true,
    "includeIncidents": true,
    "includeLineups": false,
    "includeOdds": false,
    "includeHeadToHead": false,
    "includeVotes": false,
    "includeBestPlayers": false,
    "includeShotmap": false,
    "onlyChanges": true,
    "watch": [],
    "includeScorers": false,
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/sofascore-live-events-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "liveEvents",
    "sport": "football",
    "sports": [],
    "statusFilter": "all",
    "tournamentIds": [],
    "teamIds": [],
    "countries": [],
    "playerIds": [],
    "includeStatistics": True,
    "includeIncidents": True,
    "includeLineups": False,
    "includeOdds": False,
    "includeHeadToHead": False,
    "includeVotes": False,
    "includeBestPlayers": False,
    "includeShotmap": False,
    "onlyChanges": True,
    "watch": [],
    "includeScorers": False,
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/sofascore-live-events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "liveEvents",
  "sport": "football",
  "sports": [],
  "statusFilter": "all",
  "tournamentIds": [],
  "teamIds": [],
  "countries": [],
  "playerIds": [],
  "includeStatistics": true,
  "includeIncidents": true,
  "includeLineups": false,
  "includeOdds": false,
  "includeHeadToHead": false,
  "includeVotes": false,
  "includeBestPlayers": false,
  "includeShotmap": false,
  "onlyChanges": true,
  "watch": [],
  "includeScorers": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/sofascore-live-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/sofascore-live-events-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/GIcLMzI9uWbEuE02p/builds/a73hq2DFsvNEfWaVz/openapi.json
