# Flashscore Live Football Matches - Scores & Lineups (`parsebird/flashscore-live-football-scraper`) Actor

Scrape live football matches from Flashscore in real time: scores, match minute, events, full statistics (xG, possession, shots), and starting lineups with formations. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/flashscore-live-football-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** News, Developer tools, Automation
- **Stats:** 6 total users, 5 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 live match scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Flashscore Live Football Scraper

Scrape every currently **live football match** on [Flashscore](https://www.flashscore.com) in real time — live score, match minute, a full event timeline, match statistics, and starting lineups — without touching a browser.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Get live scores, match minute, goals/cards/subs as they happen, 30+ statistic categories (xG, possession, shots, passes), and starting XI with formations — for every live match, in every league Flashscore covers.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor: Actor ID `parsebird/flashscore-live-football-scraper` on Apify — call it with the `apify-client` SDK (`client.actor("parsebird/flashscore-live-football-scraper").call(run_input={"includeStatistics": true, "includeLineups": true, "maxItems": 10})`), inputs are `includeStatistics` (boolean, default true — full stats per period), `includeLineups` (boolean, default true — starting XI, formations, substitutes), `maxItems` (integer, optional cap on how many live matches to return), and `proxyConfiguration` (object, default `{"useApifyProxy": false}`, only needed on restricted networks); output is one dataset item per live match with score, match\_minute, match\_period, events (goals/cards/subs/assists with minute and player), statistics (period/category/stat\_name/home\_value/away\_value), lineups (formations + player lists), referee, venue, and league — full field reference below and the OpenAPI spec is on the Actor's API tab, with your Apify API token available under Settings → Integrations.

### What does Flashscore Live Football Scraper do?

Flashscore Live Football Scraper is a **Flashscore API alternative** that turns Flashscore's live football feed into clean, structured JSON — no HTML parsing, no browser, no rate-limit roulette. Every run fetches whatever football matches are live on Flashscore at that exact moment, across every country and league Flashscore tracks, and returns:

- ⚽ **Live score & match state** — home/away score, half-time score, match minute, current period (1st/2nd half), round
- 📋 **Full event timeline** — goals, assists, own goals, penalties (awarded and converted), yellow/red cards, and substitutions, each with the exact minute and player
- 📊 **Match statistics** — xG, ball possession, shots (total/on target/off target/blocked), passes, corners, fouls, tackles, duels won, goalkeeper saves, and more, broken down by 1st half / 2nd half / full match
- 👥 **Starting lineups** — formations for both teams, full starting XI and substitutes with shirt numbers and nationalities, plus captain and goalkeeper badges
- 🏟️ **Match context** — league, round, referee, venue, city, and stadium capacity where Flashscore publishes them

Because it runs on the [Apify platform](https://apify.com), you also get **scheduling** (poll live scores every few minutes without managing a server), **API and webhook access**, one-click **integrations** (Zapier, Make, Google Sheets, Slack), and instant **exports to JSON, CSV, or Excel** — all on top of a **free trial** so you can test it before committing.

### What data can you extract from Flashscore?

| Field | Description |
|-------|-------------|
| `match_id`, `match_url` | Flashscore's internal match ID and permalink |
| `status`, `match_minute`, `match_period` | Live state — always `"LIVE"` for this actor, current minute, and half |
| `home_team`, `away_team`, `home_score`, `away_score` | Teams and running score |
| `home_score_halftime`, `away_score_halftime` | Score at half-time (null until the 1st half ends) |
| `league`, `league_id`, `league_url`, `round` | Competition and round/matchday |
| `referee`, `venue`, `venue_city`, `venue_capacity` | Match officials and stadium, where published |
| `events[]` | Goals, cards, subs, and assists — `type`, `minute`, `side`, `player_name`, score after the event |
| `statistics[]` | Per-period stat rows — `category`, `stat_name`, `home_value`, `away_value` |
| `lineups` | `home_formation`, `away_formation`, and `home`/`away` player arrays |

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| includeStatistics | boolean | No | true | Fetch full match statistics per period. Adds one API call per live match. |
| includeLineups | boolean | No | true | Fetch starting XI, formations, and substitutes. Adds one API call per live match. |
| maxItems | integer | No | unlimited | Cap on the number of live matches returned. Leave blank for every live match. |
| proxyConfiguration | object | No | `{"useApifyProxy": false}` | Apify Proxy config. Not needed for normal use — Flashscore's APIs don't block direct requests. |

### Output example

```json
{
  "match_id": "U3I3D4bL",
  "match_url": "https://www.flashscore.com/match/football/U3I3D4bL/",
  "status": "LIVE",
  "match_minute": 60,
  "match_period": "2nd Half",
  "kickoff_time": "2026-08-23T00:00:00+00:00",
  "home_team": "Huracan",
  "away_team": "Dep. Riestra",
  "home_score": 0,
  "away_score": 0,
  "home_score_halftime": 0,
  "away_score_halftime": 0,
  "round": "13",
  "league": "ARGENTINA: Liga Profesional - Clausura",
  "league_url": "/football/argentina/liga-profesional/",
  "referee": "Tello F.",
  "venue": "Estadio Tomas Adolfo Duco",
  "venue_city": "Buenos Aires",
  "venue_capacity": 48314,
  "events": [
    {
      "event_id": "fXCLlSpf",
      "side": "away",
      "minute": "28'",
      "type": "yellow_card",
      "type_label": "Yellow Card",
      "player_name": "Mino F.",
      "extra_info": "Foul",
      "home_score_after": null,
      "away_score_after": null
    }
  ],
  "statistics": [
    { "period": "Match", "category": "Top stats", "stat_id": 432, "stat_name": "Expected goals (xG)", "home_value": "0.36", "away_value": "0.92" }
  ],
  "lineups": {
    "home_formation": "1-4-4-2",
    "away_formation": "1-5-3-2",
    "confirmed": true,
    "home": [ { "player_id": "dYxHRtwq", "name": "Bisanz J.", "shirt_number": 17, "nationality": "Argentina", "is_starter": true } ]
  },
  "scraped_at": "2026-08-23T01:18:30+00:00"
}
```

Download results in **JSON, CSV, Excel, HTML, or XML** directly from the Apify Console, or pull them programmatically from the [dataset API](https://docs.apify.com/api/v2#/reference/datasets).

### Use cases

- Build a live scoreboard or ticker for a website or app
- Feed live match events into a betting-adjacent analytics tool (scores/stats only — no odds)
- Track live xG and possession trends across leagues for football analytics
- Monitor lineups and formations the moment they're confirmed at kickoff
- Archive live match events and stats for post-match analysis pipelines

### How to scrape Flashscore live football matches

1. Click **Try for free** on this Actor's page (no credit card required for the free trial).
2. Open the **Input** tab and leave the defaults, or turn off `includeStatistics` / `includeLineups` for a lighter, faster run.
3. Optionally set `maxItems` to cap how many matches come back — useful for quick test runs.
4. Click **Start** and wait a few seconds — a full worldwide sweep of live matches typically finishes in under a minute.
5. Open the **Dataset** tab to preview results, or export to JSON/CSV/Excel.
6. Automate it: add a [Schedule](https://docs.apify.com/platform/schedules) to poll live scores every few minutes, or call the Actor from your own code via the [Apify API](https://docs.apify.com/api/v2).

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/flashscore-live-football-scraper").call(
    run_input={"includeStatistics": True, "includeLineups": True, "maxItems": 20}
)

for match in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(match["home_team"], match["home_score"], "-", match["away_score"], match["away_team"])
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/flashscore-live-football-scraper').call({
    includeStatistics: true,
    includeLineups: true,
    maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((m) => `${m.home_team} ${m.home_score}-${m.away_score} ${m.away_team}`));
```

### How much does it cost to scrape Flashscore live scores?

This Actor uses **pay-per-event** pricing — you're charged per live match scraped, not per compute unit, so cost is predictable regardless of how long a run takes.

| Event | Price per event | Price per 1,000 |
|-------|------------------|-------------------|
| match-scraped | $0.0009 (Free tier) / $0.0008 (paid tiers) | $0.90 / $0.80 |

A run that returns 40 live matches (a typical worldwide snapshot) costs roughly **$0.03–$0.04**. The free trial covers your first runs at no cost — no credit card required to start.

### Is it legal to scrape Flashscore?

Scraping publicly available data — the kind anyone can view by loading the page without logging in — is generally considered legal, and this Actor only reads Flashscore's own public live-score feed. That said, you're responsible for how you use the data: don't scrape personal data or content behind a login, and review Flashscore's terms of service. See Apify's [blog post on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for more detail.

### Other Flashscore scrapers from ParseBird

- [Flashscore Scraper & API](https://apify.com/parsebird/flashscore-scraper) — live and scheduled scores across football, basketball, and 13 other sports
- [Flashscore Tennis Scraper](https://apify.com/parsebird/flashscore-tennis-scraper) — ATP, WTA, ITF, and Challenger match scores and results

### FAQ

**Does this only return matches that are live right now?**
Yes. Every run fetches the current worldwide live-match feed, so results reflect match state at the moment the run executes — not a continuous stream. If very few matches are live at that instant (e.g. a quiet hour for football fixtures), the dataset will be small.

**Does the output include betting odds?**
No. Flashscore serves live odds through a separate, harder-to-access internal system than its public score/stats/lineups feeds, so this version focuses on scores, stats, and lineups. It may be added in a future update.

**How accurate is `match_minute`?**
It's built from the most recent event's timestamp when available, falling back to elapsed time since kickoff otherwise. It closely tracks the real match clock but doesn't account for exact stoppage/injury time when no recent event has occurred.

**Are player ratings included in lineups?**
The `rating` field is reserved in the schema, but Flashscore's lineup feed doesn't expose live per-player ratings for most matches, so it's usually `null`.

**Can I filter by league or team?**
Not yet — this Actor returns every live match. Use `maxItems` to cap results, or filter the dataset after the run using the Apify Console, API, or your own code.

**Can I automate recurring runs?**
Yes. Use Apify's [Schedules](https://docs.apify.com/platform/schedules) to run this Actor every few minutes, or trigger it via the [Apify API](https://docs.apify.com/api/v2) or a [webhook](https://docs.apify.com/platform/integrations/webhooks) from your own pipeline.

**Something looks wrong or missing?**
Open an issue on the Actor's Issues tab — bug reports and feature requests are welcome.

# Actor input Schema

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

Fetch full match statistics per period: xG, possession, shots, corners, fouls, and 30+ stat categories. Adds one API call per live match. Turn off for score-only runs.

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

Fetch starting XI for both teams: formations, shirt numbers, substitutes, and nationalities. Adds one API call per live match. Turn off for score-only runs.

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

Maximum number of live matches to return. Leave blank to return every currently live match. Useful for keeping test runs small and cheap.

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

Not needed for normal use — Flashscore's APIs do not block direct requests. Enable only if your network restricts outbound connections.

## Actor input object example

```json
{
  "includeStatistics": true,
  "includeLineups": true,
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "includeStatistics": true,
    "includeLineups": true,
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/flashscore-live-football-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 = {
    "includeStatistics": True,
    "includeLineups": True,
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/flashscore-live-football-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 '{
  "includeStatistics": true,
  "includeLineups": true,
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call parsebird/flashscore-live-football-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/flashscore-live-football-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/7J1CB45RVhFx3Y6L1/builds/1HUV508NwBrqe3VUX/openapi.json
