# Sports Player Stats & Rosters Scraper (`scrapemint/sports-player-stats-scraper`) Actor

Team rosters and player career stats from ESPN's public feeds: NBA, NFL, MLB, NHL, WNBA, college and world soccer rosters with position, age, height and college; season-by-season stat lines for any US-league player by name. One JSON row per player or season. No API key.

- **URL**: https://apify.com/scrapemint/sports-player-stats-scraper.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** News, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Sports Player Stats & Rosters Scraper

Player data without an API key, a login or a $50/mo sports-data subscription. Pull complete team rosters, sweep every roster in a league, or get any player's season-by-season career stat line - clean JSON rows from ESPN's public feeds.

### What you can pull

**Rosters** - `"nba lakers"`, `"nfl chiefs"`, `"epl arsenal"`: one row per player with position, jersey number, age, date of birth, height, weight, years of experience, college, birthplace and headshot URL. Works for NBA, WNBA, NFL, MLB, NHL, college basketball and football, and world soccer leagues (Premier League, La Liga, Serie A, Bundesliga, MLS and any ESPN league path - even `soccer/ken.1`).

**Whole-league sweeps** - `"nba"` gives you all ~450 NBA players in one run; `"nfl"` ~1,700. A fresh league-wide player database for the cost of a coffee.

**Career stats by name** - `"LeBron James"`, `"Patrick Mahomes"`: one row per season with the full stat line (per-game averages, season totals, or both), team, and league. Covers NBA, WNBA, NFL, MLB, NHL and college players.

### Example input

```json
{
    "teams": ["nba lakers"],
    "players": ["LeBron James"],
    "statType": "averages"
}
````

Stat rows come back as a named object, so `stats.avgPoints`, `stats.gamesPlayed` and friends are directly usable in a spreadsheet or pipeline.

### Who uses this

- **Fantasy sports tools and pools**: fresh rosters and career baselines without enterprise data contracts.
- **Sports media and newsletters**: player facts and stat tables straight into your workflow.
- **Betting content and models**: roster changes and historical stat lines as structured inputs.
- **Trivia, games and fan apps**: an entire league's player database in one scheduled run.

Pairs with our Sports Scores Scraper (live scores and standings) and Sports Odds Scraper (moneylines, spreads and totals).

### Pricing

A small fee per row. Unknown leagues, unmatched teams and players that cannot be found are free note rows, and the first 2 rows of every run are free.

### Notes

- Career stats are available for the US leagues and college sports; soccer players are found by search but ESPN does not publish their career tables in the same feed, so those return a friendly note pointing at roster mode.
- Some leagues empty their rosters briefly in the offseason; that returns a free note, not a charge.
- Data comes from ESPN's public website feeds, the same JSON its own pages use.

# Actor input Schema

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

Teams to pull rosters for, one per line as "league team" ("nba lakers", "nfl chiefs", "epl arsenal"). One row per player with position, jersey, age, height, weight, experience and college.

## `leagues` (type: `array`):

Leagues to pull EVERY team's roster for, one per line ("nba", "nfl", "epl", "mlb"). An NBA sweep is ~450 players, an NFL sweep ~1,700. Also accepts raw ESPN paths like "soccer/ken.1".

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

Players to look up by name, one per line ("LeBron James", "Patrick Mahomes"). Returns one row per season with the full stat line. Works for NBA, WNBA, NFL, MLB, NHL and college players.

## `statType` (type: `string`):

Per-game averages or season totals for player stat rows (leagues without averages fall back to what they have).

## `maxSeasonsPerPlayer` (type: `integer`):

How many seasons to return per player, newest first.

## `maxRows` (type: `integer`):

Stop after this many rows in total.

## Actor input object example

```json
{
  "teams": [
    "nba lakers"
  ],
  "players": [
    "LeBron James"
  ],
  "statType": "averages",
  "maxSeasonsPerPlayer": 30,
  "maxRows": 2000
}
```

# 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 = {
    "teams": [
        "nba lakers"
    ],
    "players": [
        "LeBron James"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/sports-player-stats-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 = {
    "teams": ["nba lakers"],
    "players": ["LeBron James"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/sports-player-stats-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "teams": [
    "nba lakers"
  ],
  "players": [
    "LeBron James"
  ]
}' |
apify call scrapemint/sports-player-stats-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/sports-player-stats-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sports Player Stats & Rosters Scraper",
        "description": "Team rosters and player career stats from ESPN's public feeds: NBA, NFL, MLB, NHL, WNBA, college and world soccer rosters with position, age, height and college; season-by-season stat lines for any US-league player by name. One JSON row per player or season. No API key.",
        "version": "0.1",
        "x-build-id": "nSsbvA9N6S1fQ7NKo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~sports-player-stats-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-sports-player-stats-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapemint~sports-player-stats-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-sports-player-stats-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapemint~sports-player-stats-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-sports-player-stats-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "teams": {
                        "title": "Team rosters",
                        "type": "array",
                        "description": "Teams to pull rosters for, one per line as \"league team\" (\"nba lakers\", \"nfl chiefs\", \"epl arsenal\"). One row per player with position, jersey, age, height, weight, experience and college.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "leagues": {
                        "title": "Whole-league rosters",
                        "type": "array",
                        "description": "Leagues to pull EVERY team's roster for, one per line (\"nba\", \"nfl\", \"epl\", \"mlb\"). An NBA sweep is ~450 players, an NFL sweep ~1,700. Also accepts raw ESPN paths like \"soccer/ken.1\".",
                        "items": {
                            "type": "string"
                        }
                    },
                    "players": {
                        "title": "Player career stats",
                        "type": "array",
                        "description": "Players to look up by name, one per line (\"LeBron James\", \"Patrick Mahomes\"). Returns one row per season with the full stat line. Works for NBA, WNBA, NFL, MLB, NHL and college players.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "statType": {
                        "title": "Stat type",
                        "enum": [
                            "averages",
                            "totals",
                            "both"
                        ],
                        "type": "string",
                        "description": "Per-game averages or season totals for player stat rows (leagues without averages fall back to what they have).",
                        "default": "averages"
                    },
                    "maxSeasonsPerPlayer": {
                        "title": "Seasons per player",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many seasons to return per player, newest first.",
                        "default": 30
                    },
                    "maxRows": {
                        "title": "Max rows",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Stop after this many rows in total.",
                        "default": 2000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
