# 🚀 Sofascore Players Scraper · 2,500 Free Players/Month (`omkar-cloud/sofascore-players-scraper`) Actor

Sofascore Players Scraper gets you player data ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — profile, market value, 114 season stats, transfers & national-team record, for player URLs or full squads. 💰 $2 per 1,000 players, no start fee. Scrape your first 2,500 players free every month 🚀

- **URL**: https://apify.com/omkar-cloud/sofascore-players-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 $2.00 / 1,000 results

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?

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

## Sofascore Players Scraper

Sofascore Players Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Sofascore player data.

Sofascore tracks every player's profile, market value, season statistics, transfers and international record, and every run reads it live — so you get today's numbers for a single player, a list of players, or a whole squad, one row per player, and can successfully complete your project.

**$2 per 1,000 players.** And with Apify's free plan you get $5 of credit every month, so your first **2,500 players 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 Sofascore Players Scraper free**](https://apify.com/omkar-cloud/sofascore-players-scraper) — your first 2,500 players are Free.

### What can I get

- 🧑‍💼 **Any player, or a whole squad** — paste Sofascore player ids or sofascore.com player URLs, or team ids / team URLs to get every squad member in one go; mix both in one run
- 🪪 **The full profile on every row** — name, photo, position and detailed positions, jersey number, height, preferred foot, date of birth, nationality, market value with currency, contract end, followers, club (with its primary tournament) and Sofascore's player characteristics
- 📈 **114 season statistics** — rating, appearances, minutes, goals, assists, xG, xA, shots, key passes, big chances, pass accuracy, dribbles, duels, tackles, interceptions, cards, distance covered, top speed, goalkeeper saves and more, plus the season rating breakdown — for the player's current main competition or any tournament and season you choose
- 🔁 **Transfer history** — every career move with from/to team, date, transfer type and fee
- 🏴 **National-team record** — caps, goals and debut date for each national side
- 🧾 **Source context on every row** — the entry as typed, the squad it came from, and the tournament, season and type the statistics cover

### Why Sofascore Players Scraper

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

- ⚽ **Match-only** — fixtures, lineups and live scores, never a player profile you can build on
- 🧩 **Low-detail data** — a name and a position, not 114 season metrics, transfers and caps
- 💸 **Pay more to get the same data** — plus a start fee on every run
- 🪦 **Works today, breaks next month** — nobody maintains it

Sofascore Players Scraper is read live on every run, priced honestly, and actively maintained.

### Input

| Field | What it does |
|---|---|
| **Players** | Sofascore player ids (`934235`) or sofascore.com player URLs, one row each |
| **Teams (whole squad)** | Sofascore team ids (`42`) or sofascore.com team URLs — every squad member becomes a row, tagged with `source_team_id` and `source_team_name` |
| **Tournament ID / Season ID** | Optional scope for the statistics. Leave both empty and Sofascore uses each player's current main competition and its current season |
| **Statistics Type** | `overall` (default), `regularSeason` or `playoffs` |
| **Include Transfer History** | Adds `transfer_history` to every row (default on) |
| **Include National-Team Record** | Adds `national_team_statistics` to every row (default on) |
| **Max Players** | Cost control for the whole run — 1,000 players = $2 |

### Example: A Full Sofascore Player

```json
{
  "source_input": "934235",
  "source_team_id": null,
  "source_team_name": null,
  "id": 934235,
  "name": "Bukayo Saka",
  "short_name": "B. Saka",
  "slug": "bukayo-saka",
  "first_name": "Bukayo",
  "last_name": "Saka",
  "link": "https://www.sofascore.com/football/player/bukayo-saka/934235",
  "image_link": "https://img.sofascore.com/api/v1/player/934235/image",
  "position": "F",
  "detailed_positions": ["RW"],
  "jersey_number": 7,
  "height_cm": 178,
  "preferred_foot": "Left",
  "date_of_birth": "2001-09-05",
  "gender": "M",
  "country": { "name": "England", "alpha2": "EN", "alpha3": "ENG", "slug": "england" },
  "market_value": { "amount": 115000000, "currency": "EUR" },
  "contract_until": "2030-06-30",
  "followers_count": 220006,
  "is_deceased": false,
  "is_underage": false,
  "team": {
    "id": 42,
    "name": "Arsenal",
    "short_name": "Arsenal",
    "code": "ARS",
    "slug": "arsenal",
    "link": "https://www.sofascore.com/team/football/arsenal/42",
    "image_link": "https://img.sofascore.com/api/v1/team/42/image",
    "sport": { "id": 1, "name": "Football", "slug": "football" },
    "country": { "name": "England", "alpha2": "EN", "alpha3": "ENG", "slug": "england" },
    "gender": "M",
    "is_national": false,
    "colors": { "primary": "#cc0000", "secondary": "#ffffff", "text": "#ffffff" },
    "followers_count": 4194250,
    "primary_tournament": {
      "id": 17,
      "name": "Premier League",
      "slug": "premier-league",
      "link": "https://www.sofascore.com/tournament/football/england/premier-league/17",
      "image_link": "https://img.sofascore.com/api/v1/unique-tournament/17/image",
      "category": { "id": 1, "name": "England", "slug": "england", "flag_image_link": "https://img.sofascore.com/api/v1/country/EN/flag" }
    }
  },
  "characteristics": {
    "positive": [{ "type": 26, "rank": 369 }, { "type": 25, "rank": 437 }, { "type": 7, "rank": 1576 }],
    "negative": [],
    "positions": ["RW"]
  },
  "statistics": {
    "rating": 7.4666666666667,
    "appearances": 3,
    "matches_started": 3,
    "minutes_played": 247,
    "goals": 2,
    "assists": 0,
    "goals_assists_sum": 2,
    "expected_goals": 1.4952,
    "expected_assists": 0.3421507,
    "total_shots": 9,
    "shots_on_target": 5,
    "goal_conversion_percentage": 22.222222222222,
    "key_passes": 3,
    "big_chances_created": 0,
    "accurate_passes": 92,
    "total_passes": 109,
    "accurate_passes_percentage": 84.403669724771,
    "accurate_final_third_passes": 57,
    "successful_dribbles": 4,
    "successful_dribbles_percentage": 44.444444444444,
    "total_duels_won": 20,
    "total_duels_won_percentage": 58.823529411765,
    "tackles": 4,
    "interceptions": 3,
    "ball_recovery": 12,
    "touches": 175,
    "was_fouled": 10,
    "kilometers_covered": 28.7772603,
    "number_of_sprints": 29,
    "top_speed": 32.19876,
    "yellow_cards": 0,
    "red_cards": 0
  },
  "statistics_scope": {
    "tournament_id": 17,
    "season_id": 96668,
    "type": "overall",
    "team": { "id": 42, "name": "Arsenal", "short_name": "Arsenal", "code": "ARS", "slug": "arsenal", "link": "https://www.sofascore.com/team/football/arsenal/42" }
  },
  "season_rating_breakdown": { "shot_value": 0.09, "pass_value": -0.2, "dribble_value": 0.34, "defensive_value": 0.02 },
  "transfer_history": [
    {
      "id": 923356,
      "transfer_date": "2019-07-01",
      "from_team_name": "Arsenal U21",
      "to_team_name": "Arsenal",
      "transfer_from": { "id": 36554, "name": "Arsenal U21", "short_name": "Arsenal U21", "code": "ARS", "slug": "arsenal-u21", "link": "https://www.sofascore.com/team/football/arsenal-u21/36554" },
      "transfer_to": { "id": 42, "name": "Arsenal", "short_name": "Arsenal", "code": "ARS", "slug": "arsenal", "link": "https://www.sofascore.com/team/football/arsenal/42" },
      "type": 3,
      "transfer_fee": 0,
      "transfer_fee_description": "-",
      "transfer_fee_raw": { "value": 0, "currency": "EUR" }
    }
  ],
  "national_team_statistics": [
    {
      "team": { "id": 4713, "name": "England", "short_name": "England", "code": "ENG", "slug": "england", "link": "https://www.sofascore.com/team/football/england/4713", "is_national": true, "ranking": 4 },
      "appearances": 56,
      "goals": 17,
      "debut": "2020-10-08T00:00:00Z"
    }
  ]
}
```

*Trimmed for readability.* `statistics` carries all 114 metrics (shots from inside/outside the box, crosses, long balls, clearances, possession lost, goalkeeper saves, punches, high claims, penalties, hit woodwork, own goals and more), and every team block carries its image link, sport, colours and follower count. You can download the dataset as JSON, CSV, Excel or HTML.

### Get Started with 2,500 Free Players

1. [Hit **Try for Free Button**](https://apify.com/omkar-cloud/sofascore-players-scraper) — the input is pre-filled with Bukayo Saka (`934235`) and the whole Arsenal squad (`42`).
2. Enjoy your data 😎.

### Pricing

High value, Low price.

| What | Price | What you get |
|---|---|---|
| **Players** | **$2 per 1,000** | the full profile (photo, positions, number, height, foot, birth date, nationality, market value, contract end, followers, club with primary tournament, characteristics), 114 season statistics with the season rating breakdown, the complete transfer history and the national-team record + the source input, squad and statistics scope |

No start fee, no add-ons — one flat price for every plan, and you pay only for the rows you get. Control your spend with **Max Players**: 1,000 players = $2.

💡 Apify's free plan includes $5 of credit every month — that's **2,500 free players, every month**.

👉 [**Scrape your first 2,500 players free**](https://apify.com/omkar-cloud/sofascore-players-scraper)

### Run It from Code

Grab your API token from [Integrations Settings here](https://console.apify.com/settings/integrations) and replace `<YOUR_API_TOKEN>` below.

**Python** (`pip install apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("omkar-cloud/sofascore-players-scraper").call(run_input={
    "players": ["934235", "https://www.sofascore.com/football/player/viktor-gyokeres/804508"],
    "teams": ["42"],
    "maxResults": 30,
})
for player in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(player["name"], player["market_value"]["amount"], player["statistics"]["rating"])
```

**Node.js** (`npm install apify-client`)

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('omkar-cloud/sofascore-players-scraper').call({
    teams: ['https://www.sofascore.com/team/football/arsenal/42'],
    statsType: 'overall',
    maxResults: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQ

**Which season do the statistics cover?**
By default each player's current main competition and its current season — Sofascore decides, so a mixed list of players from different leagues just works. Every row records the scope actually used in `statistics_scope` (`tournament_id`, `season_id`, `type`). Set **Tournament ID** and **Season ID** to pin one competition and season for all players; a player with no statistics there still gets a row with `statistics` empty.

**How much does it cost to scrape Sofascore players?**
$2 per 1,000 players, flat, with no start fee and no add-ons. Apify's free plan gives you $5 of credit every month, so your first 2,500 players each month cost nothing. Cap a run with **Max Players** or a maximum cost per run.

**Can I scrape a whole team?**
Yes. Put the team's Sofascore id or URL in **Teams (whole squad)** and every squad member becomes a row, tagged with `source_team_id` and `source_team_name`. Add several teams to compare squads in one dataset.

**What if a player is in my list and also in a squad?**
They are scraped and billed once. The Actor remembers every player id across the run, so duplicates — a player listed twice, or listed and also in a squad — cost one row.

**What is in `transfer_history` and `national_team_statistics`?**
`transfer_history` lists every career move: the from and to teams, the date, the transfer type and the fee (both as a number with currency and as Sofascore's description). `national_team_statistics` lists each national side with caps, goals and the debut date. Turn either off in the input for a faster run.

**Where does the data come from?**
Sofascore, read live on every run — the same profile, statistics, transfers and international record you see on sofascore.com, in clean JSON.

**Is it legal to scrape Sofascore?**
The Actor collects publicly available sports data — player profiles, statistics and career records that Sofascore publishes openly. Please use the data responsibly and in line with Sofascore's terms and the laws that apply to you.

### Popular Actors by Omkar Cloud

- [**G2 Product Scraper**](https://apify.com/omkar-cloud/g2-product-scraper) — G2 product details, ratings & AI-found contacts
- [**Website Email Contact Scraper**](https://apify.com/omkar-cloud/website-email-contact-scraper) — emails, phones & socials from any website
- [**AliExpress Product Scraper**](https://apify.com/omkar-cloud/aliexpress-product-scraper) — live product details, SKU variants, stock & shipping
- [**Etsy Scraper**](https://apify.com/omkar-cloud/etsy-scraper) — Etsy products: prices, discounts, shops & variations
- [**IMDb Scraper**](https://apify.com/omkar-cloud/imdb-scraper) — IMDb titles: cast, ratings, box office & more
- [**Rightmove Scraper**](https://apify.com/omkar-cloud/rightmove-scraper) — UK homes for sale & to rent with agent phones

👉 [**Scrape your first 2,500 players free now**](https://apify.com/omkar-cloud/sofascore-players-scraper)

### 💬 Have Questions? We Have Answers.

You're a business owner — 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%20Sofascore%20Players%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%20Sofascore%20Players%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Sofascore%20Players%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

## `players` (type: `array`):

Sofascore player ids like `934235` (Bukayo Saka) or pasted sofascore.com player URLs like `https://www.sofascore.com/football/player/bukayo-saka/934235` — the form is auto-detected. Rows carry `source_input` (as typed).

## `teams` (type: `array`):

Sofascore team ids like `42` (Arsenal) or pasted sofascore.com team URLs like `https://www.sofascore.com/team/football/arsenal/42`. Every squad member becomes a row, carrying `source_team_id` and `source_team_name` so you can tell squads apart.

## `tournamentId` (type: `string`):

Sofascore tournament id (or tournament URL) to scope the statistics to one competition — e.g. the Premier League's id. Leave empty for each player's current main competition.

## `seasonId` (type: `string`):

Sofascore season id to scope the statistics to one season. Leave empty for the current season. A player with no statistics in the chosen competition/season still gets a row, with `statistics` empty.

## `statsType` (type: `string`):

Which part of the season the statistics cover.

## `includeTransfers` (type: `boolean`):

Add `transfer_history` to every row — each career move with from/to team, date, type and fee. Turn off for a faster run.

## `includeNationalTeam` (type: `boolean`):

Add `national_team_statistics` to every row — caps, goals and debut per national side. Turn off for a faster run.

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

Maximum number of player rows for the whole run, across all players and squads. Use this to control your cost (1,000 players = $2).

## Actor input object example

```json
{
  "players": [
    "934235"
  ],
  "teams": [
    "42"
  ],
  "statsType": "overall",
  "includeTransfers": true,
  "includeNationalTeam": true,
  "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 = {
    "players": [
        "934235"
    ],
    "teams": [
        "42"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/sofascore-players-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 = {
    "players": ["934235"],
    "teams": ["42"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/sofascore-players-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 '{
  "players": [
    "934235"
  ],
  "teams": [
    "42"
  ],
  "maxResults": 100
}' |
apify call omkar-cloud/sofascore-players-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/sofascore-players-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/87fmgVbaP5S631ycG/builds/Q2mLP3RprRDfwS0HD/openapi.json
