# 🚀 Flashscore Scraper · 5,000 Free Matches/Month (`omkar-cloud/flashscore-scraper`) Actor

Flashscore Scraper gets you live scores ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — every match of 37 sports by day or live, with scores, periods, xG, stats, lineups & player ratings. 💰 $1 per 1,000 matches, no start fee. Scrape your first 5,000 matches free every month 🚀

- **URL**: https://apify.com/omkar-cloud/flashscore-scraper.md
- **Developed by:** [Chetan Jain](https://apify.com/omkar-cloud) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 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.

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

## Flashscore Scraper

Flashscore Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Flashscore match data.

Flashscore covers 37 sports and thousands of competitions, and every run reads it live — so you get today's fixtures, live scores and final results for any sport, day or competition, one row per match, and can successfully complete your project.

**$1 per 1,000 matches.** And with Apify's free plan you get $5 of credit every month, so your first **5,000 matches each month are free**.

This is an excellent Actor made by Omkar Cloud, which is Rated Excellent — [4.7 based on 30 reviews on Trustpilot](https://www.trustpilot.com/review/omkar.cloud).

👉 [**Try Flashscore Scraper free**](https://apify.com/omkar-cloud/flashscore-scraper) — your first 5,000 matches are Free.

### What can I get

- ⚽ **Every match of 37 sports** — football, tennis, basketball, hockey, American football, baseball, cricket, esports and more, for any day from a week ago to a week ahead, or only what is live right now
- 🏆 **Any competition** — filter by name (`Premier League`, `NBA`, `Champions League`) or paste the competition URL; every row carries the competition with its country, logo and link
- 🔢 **The score, period by period** — status, stage, kick-off and end time, both teams with logos and links, the final score, the winner and the score of every half, quarter, period or set
- 📊 **The full match on demand** — xG, possession, shots and passes by period, formations and starting elevens with player ratings, every goal, card, substitution and VAR call in order, and each player's numbers
- 🏌️ **Leaderboard sports too** — golf, cycling, horse racing, motorsport and winter sports come back as one row per competitor's place
- 🔗 **Any match by URL** — paste flashscore.com match links or ids, old or new

### Why Flashscore Scraper

Most other Flashscore scrapers fail you in one of four ways:

- ⚽ **One sport only** — football or tennis, nothing else
- 🧩 **Low-detail data** — a score and two team names, not the stats, lineups and incidents
- 💸 **Pay more to get the same data** — up to $10 per 1,000 matches
- 🪦 **Works today, breaks next month** — nobody maintains it

Flashscore Scraper is read live on every run, priced honestly with no start fee, and actively maintained.

### Input

| Field | What it does |
|---|---|
| **Sports** | Sports by slug, like `football`, `tennis`, `basketball`, `hockey` — all 37 work |
| **Days** | `today`, `yesterday`, `tomorrow`, an offset from `-7` to `7`, or a date like `2026-09-19` |
| **Live Matches Only** | Only what is playing right now, instead of the days |
| **Match Status** | Keep only scheduled, live or finished matches |
| **Competitions** | Keep only competitions whose name contains one of these, or paste their URLs |
| **Matches** | Specific matches by id (`GCxZ2uHc`) or flashscore.com match URL |
| **Timezone** | Timezone for kick-off times and for what counts as "today" |
| **Include Match Details** | Adds statistics, lineups, incidents and player statistics (add-on, $3 per 1,000 in total) |
| **Max Matches** | Cost control for the whole run — 1,000 matches = $1 |

### Example: A Full Flashscore Match

```json
{
  "source_input": "football -1",
  "source_kind": "day",
  "id": "00VbGuWQ",
  "link": "https://www.flashscore.com/match/00VbGuWQ/",
  "format": "matches",
  "sport": { "id": 1, "name": "Football", "slug": "football" },
  "competition": {
    "id": "QeI1Oeyi",
    "name": "LaLiga",
    "display_name": "SPAIN: LaLiga",
    "link": "https://www.flashscore.com/football/spain/laliga/",
    "logo": "https://static.flashscore.com/res/image/data/QqMkp58j-reLEIqyt.png",
    "country": { "id": 176, "name": "Spain" }
  },
  "status": "finished",
  "stage": "Finished",
  "start_time": "2026-09-18T19:00:00Z",
  "date": "2026-09-18",
  "end_time": "2026-09-18T21:00:39Z",
  "home": {
    "id": "QFfPdh1J",
    "name": "Espanyol",
    "short_name": "ESP",
    "link": "https://www.flashscore.com/team/espanyol/QFfPdh1J/",
    "logo": "https://static.flashscore.com/res/image/data/QeCoIpXH-Msjm1Bq4.png"
  },
  "away": {
    "id": "4jl02tPF",
    "name": "Elche",
    "short_name": "ELC",
    "link": "https://www.flashscore.com/team/elche/4jl02tPF/",
    "logo": "https://static.flashscore.com/res/image/data/EVxB82BN-YmCZKGcR.png"
  },
  "home_score": 1,
  "away_score": 3,
  "winner": "away",
  "periods": [{ "name": "2nd Half", "home": 1, "away": 1 }],

  "statistics": [
    {
      "period": "Match",
      "groups": [
        {
          "category": "Top stats",
          "statistics": [
            { "name": "Expected goals (xG)", "home": "1.04", "away": "1.61", "home_value": 1.04, "away_value": 1.61 },
            { "name": "Ball possession", "home": "66%", "away": "34%", "home_value": 66, "away_value": 34 }
          ]
        }
      ]
    }
  ],
  "lineups": {
    "home": {
      "formation": "1-4-2-3-1",
      "rating": 6.5,
      "groups": [
        {
          "name": "Starting Lineups",
          "players": [
            {
              "player": { "id": "IsOwrMdM", "name": "Cabrera L.", "link": "https://www.flashscore.com/player/cabrera-leandro/IsOwrMdM/" },
              "shirt_number": 6,
              "country": { "id": 201, "name": "Uruguay" },
              "rating": 7.1,
              "is_captain": true
            }
          ]
        }
      ]
    },
    "away": { "formation": "1-4-3-3", "rating": 7.2, "groups": [] }
  },
  "summary": [
    {
      "period": "1st Half",
      "home_score": 0,
      "away_score": 2,
      "incidents": [
        { "minute": "26'", "type": "Goal", "team": "away", "player": { "name": "Nino F." }, "home_score": 0, "away_score": 1 }
      ]
    }
  ],
  "player_statistics": {
    "players": [
      {
        "player": { "name": "Dmitrovic Marko" },
        "team": { "name": "Espanyol", "side": "home" },
        "position": "Goalkeeper",
        "rating": 5.1,
        "statistics": [{ "id": "SAVES_TOTAL", "name": "Goalkeeper saves", "value": "3", "numeric_value": 3 }]
      }
    ]
  }
}
```

*Trimmed for readability — `statistics`, `lineups`, `summary` and `player_statistics` carry the whole match when **Include Match Details** is on.*

### Get Started with 5,000 Free Matches

1. [Open Flashscore Scraper](https://apify.com/omkar-cloud/flashscore-scraper) — the form comes pre-filled with today's football.
2. Pick your sports, days and competitions and click **Start**.
3. Download the results as JSON, CSV or Excel 😎.

### Pricing

**$1 per 1,000 matches. No start fee.** You pay for the rows you get, nothing else.

| What you scrape | Price |
|---|---|
| Match row — teams, competition, status, score, periods | **$0.001** each — $1 per 1,000 |
| Same row with statistics, lineups, incidents and player statistics | **$0.003** each — $3 per 1,000 |
| Actor start | **$0** — no start fee |

Apify's free plan gives you $5 of credit every month, so **5,000 matches are free every month** (about 1,650 with match details). A match reached twice in one run is scraped and billed only once, and a match with no details yet is never charged the add-on.

### Run It from Code

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('omkar-cloud/flashscore-scraper').call({
    sports: ['football'],
    days: ['yesterday'],
    competitions: ['Premier League', 'LaLiga'],
    includeDetails: true,              // stats, lineups, incidents, player stats
    maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("omkar-cloud/flashscore-scraper").call(run_input={
    "sports": ["basketball", "hockey"],
    "liveOnly": True,                  # only what is playing now
    "maxResults": 100,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["home"]["name"], item["home_score"], "-", item["away_score"], item["away"]["name"])
```

### FAQ

**Which sports can I scrape?**
All 37 on Flashscore — football, tennis, basketball, hockey, American football, baseball, handball, rugby, volleyball, cricket, darts, snooker, boxing, MMA, esports, golf, cycling, motorsport and more.

**How far back can I go?**
Days cover a week back to a week ahead. For any older match, paste its flashscore.com URL or id into **Matches**.

**What does a run cost?**
$1 per 1,000 matches, $3 per 1,000 with match details, and no start fee. Set **Max Matches** to cap any run.

**How fresh is the data?**
It is read live from Flashscore on every run, so live scores are exactly what the site shows at that moment.

**Do I need proxies or a Flashscore account?**
No. The Actor handles everything.

**What if a match has no statistics or lineups?**
The row is still pushed, with those blocks empty, and the details add-on is not charged for it.

### Popular Actors by Omkar Cloud

- [**Flashscore Tennis Scraper**](https://apify.com/omkar-cloud/flashscore-tennis-scraper) — ATP, WTA & ITF matches with serve stats, point by point and rankings
- [**Flashscore Odds Scraper**](https://apify.com/omkar-cloud/flashscore-odds-scraper) — opening & current odds from 20+ bookmakers
- [**Sofascore Scraper**](https://apify.com/omkar-cloud/sofascore-scraper) — live scores, fixtures & results for 26 sports
- [**Sofascore Players Scraper**](https://apify.com/omkar-cloud/sofascore-players-scraper) — player profiles with 114 season statistics
- [**IMDb Scraper**](https://apify.com/omkar-cloud/imdb-scraper) — titles, ratings, cast & box office

### 💬 Have Questions? We Have Answers.

You're a developer — we know how hard completing a project can be. So we offer full support: just message us and we'll reply ✅ with a solution within 1 working day.

[![Message Us on WhatsApp](https://raw.githubusercontent.com/omkarcloud/assets/master/images/whatsapp-us.png)](https://api.whatsapp.com/send?phone=918178804274\&text=I%20need%20help%20with%20using%20the%20Flashscore%20Scraper%20Actor.)

[![Ask Us on Email](https://raw.githubusercontent.com/omkarcloud/assets/master/images/ask-on-email.png)](mailto:happy.to.help@omkar.cloud?subject=Help%20with%20Flashscore%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Flashscore%20Scraper%20Actor.)

You are important to us — just message us and we will solve your problem ✅ within 1 working day. 🩷 Pinky Promise 🤙!

# Actor input Schema

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

Sports to scrape, by slug: `football`, `tennis`, `basketball`, `hockey`, `american-football`, `baseball`, `handball`, `rugby-union`, `floorball`, `bandy`, `futsal`, `volleyball`, `cricket`, `darts`, `snooker`, `boxing`, `beach-volleyball`, `aussie-rules`, `rugby-league`, `badminton`, `water-polo`, `golf`, `field-hockey`, `table-tennis`, `beach-soccer`, `mma`, `netball`, `pesapallo`, `motorsport`, `cycling`, `horse-racing`, `esports`, `winter-sports`, `ski-jumping`, `alpine-skiing`, `biathlon`, `kabaddi`. Golf, cycling, horse racing, motorsport and the winter sports have no head-to-head matches, so each of their rows is one competitor's place on the leaderboard.

## `days` (type: `array`):

Days to scrape: `today`, `yesterday`, `tomorrow`, an offset from today between `-7` and `7`, or a date like `2026-09-19` inside that window. Empty = today.

## `liveOnly` (type: `boolean`):

Scrape only the matches playing right now, with the live score and current stage, instead of the days above.

## `status` (type: `string`):

Keep only matches in one state. Empty = every match of the day.

## `competitions` (type: `array`):

Keep only competitions whose name contains one of these, like `Premier League`, `ENGLAND: Premier League`, `LaLiga`, `NBA` or `Champions League` — or paste the flashscore.com competition URL. Empty = every competition.

## `matches` (type: `array`):

Specific matches, by Flashscore match id like `GCxZ2uHc` or a pasted flashscore.com match URL like `https://www.flashscore.com/match/GCxZ2uHc/`. Works for any match, old or new.

## `timezone` (type: `string`):

Timezone for kick-off times and for what counts as "today" — an IANA name like `America/New_York` or an hour offset like `-4`. Empty = UTC.

## `includeDetails` (type: `boolean`):

Adds `statistics` (xG, possession, shots, passes by period), `lineups` (formations, starting elevens, bench, player ratings), `summary` (goals, cards, substitutions, VAR in order) and `player_statistics` (every player's numbers) to every row. A match with no details yet — one that has not started — is not charged the add-on.

## `maxResults` (type: `integer`):

Maximum number of match rows for the whole run, across every sport and day. Use this to control your cost (1,000 matches = $1, or $3 with match details).

## Actor input object example

```json
{
  "sports": [
    "football"
  ],
  "days": [
    "today"
  ],
  "liveOnly": false,
  "status": "",
  "competitions": [],
  "matches": [],
  "includeDetails": false,
  "maxResults": 100
}
```

# 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 = {
    "sports": [
        "football"
    ],
    "days": [
        "today"
    ],
    "competitions": [],
    "matches": [],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/flashscore-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 = {
    "sports": ["football"],
    "days": ["today"],
    "competitions": [],
    "matches": [],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/flashscore-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 '{
  "sports": [
    "football"
  ],
  "days": [
    "today"
  ],
  "competitions": [],
  "matches": [],
  "maxResults": 100
}' |
apify call omkar-cloud/flashscore-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/flashscore-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/JD6fxpAowMhkKzcId/builds/9FT4mjf3OoeMarrWJ/openapi.json
