
MLB Stats Scraper
hipersoft/mlb-statsapi-scraper
Fetch MLB baseball data in bulk — teams, rosters, schedules, scores and player profiles. One clean row per team, roster spot, game or player with names, leagues, divisions, venues, scores and bios. Fast and reliable for sports apps, stats dashboards, fantasy tools and n8n.
Total users
2Monthly users
1Total runs
64Per item scraped
$0.001Last rebuilt
Oct 28, 2026Overview
MLB Stats Scraper pulls teams, rosters, schedules, scores and player profiles for Major League Baseball — all as clean, structured data. List every MLB club for a season, get the full roster for a team, pull games and results for any date or date range, and look up player bios by id or name. Export to JSON, CSV, Excel or XML. Fast, reliable, and built for sports apps, stats dashboards, fantasy tools and automation workflows.
What does this MLB scraper do?
Pick a mode, add a couple of parameters, and it returns every matching record as structured data:
- Teams — every MLB club for a season, with league, division, venue, city and the year the franchise started play.
- Roster — all players on a team for a season, with position, jersey number and team id.
- Schedule — games for a single date or a date range, with home/away teams, scores, status and venue.
- Player — a single player profile by id, or a name search, with position, bat side, throwing hand, birth date, birth country and MLB debut date.
What data can you get?
| Data point | Description |
|---|---|
| Team | id, name, abbreviation, league, division, venue, city, firstYearOfPlay |
| Roster | playerId, name, position, jerseyNumber, teamId |
| Schedule | gamePk, date, homeTeam, awayTeam, homeScore, awayScore, status, venue |
| Player | id, name, primaryPosition, batSide, throws, birthDate, birthCountry, mlbDebutDate |
What you get
Each team, roster spot, game or player is one clean dataset record. Every row carries a recordType so you can tell them apart. Export the full table to JSON, CSV, Excel or XML, or pull it programmatically.
{
"mode": "teams",
"recordType": "team",
"id": 147,
"name": "New York Yankees",
"abbreviation": "NYY",
"league": "American League",
"division": "American League East",
"venue": "Yankee Stadium",
"city": "Bronx",
"firstYearOfPlay": "1903"
}
Use cases
- Build team directories and league/division tables for a baseball site or app.
- Pull daily schedules and final scores into a dashboard or calendar.
- Backfill results across a date range for a stats or analytics dataset.
- Enrich fantasy tools with roster positions, jersey numbers and player bios.
- Power a bot that reports last night's games and scores.
How to use the MLB Stats Scraper
- Add the MLB Stats Scraper to your Apify account and open its input.
- Choose a mode: teams, roster, schedule or player.
- Fill the matching parameter —
seasonfor teams/roster,teamIdfor roster,date(orstartDate+endDate) for schedule, orplayerId/playerNamefor player. - Click Run.
- Export the results as JSON, CSV, Excel or XML, or pull them via the Apify API.
Input
{
"mode": "teams",
"season": 2025
}
| Field | Description |
|---|---|
mode |
teams, roster, schedule or player. |
season |
Four-digit year for teams and roster (e.g. 2025). Defaults to the current year. |
teamId |
Numeric team id for roster (e.g. 147 for the Yankees). |
date |
Single date for schedule (YYYY-MM-DD). |
startDate / endDate |
Date range for schedule (YYYY-MM-DD). |
playerId |
Numeric player id for player (e.g. 545361). |
playerName |
Player name to search for player (e.g. "Mike Trout"). |
Tip: chaining modes
Don't know an id? Run teams to list every club and its id, roster to get player ids for a team, then feed a playerId into player for the full profile — or a teamId into roster for the squad.
Output schema
Fields below are for the teams mode. The roster, schedule and player modes return their own record shapes, and each row carries a recordType so you can tell them apart.
| Field | Type | Description |
|---|---|---|
mode |
string | The mode that produced the record. |
recordType |
string | team, rosterPlayer, game or player. |
id |
integer | Unique identifier for the team. |
name |
string | Team name (e.g. "New York Yankees"). |
abbreviation |
string | Short team code (e.g. "NYY"). |
league |
string | League name (American or National League). |
division |
string | Division name (e.g. "American League East"). |
venue |
string | Home ballpark. |
city |
string | Team location / city. |
firstYearOfPlay |
string | Year the franchise started play. |
Need more sports & media data?
- Sports Data Scraper (TheSportsDB) — teams, fixtures, results and players across many sports.
- ESPN Sports Scraper — live scores, teams, standings and news.
- TVmaze Scraper — TV shows, episodes and cast data.
FAQ
Which league and seasons are covered?
Major League Baseball, across current and historical seasons. Pass any four-digit season year to the teams and roster modes, and any date to the schedule mode.
How do I find a team or player id?
Run the teams mode to list every club and its id, then run roster for a team to get player ids. You can also search a player by name with playerName.
What export formats are supported? JSON, CSV, Excel and XML, plus programmatic access through the Apify API.
How does billing work? You pay per item you get, so cost scales with the number of records you actually collect. See the Pricing tab for current rates.
Can I use this with n8n?
Yes. Run the MLB Stats Scraper from n8n with the Apify node — trigger a run, pass your mode and parameters, and read the dataset items straight into your workflow. It also works with Make, Zapier and the Apify API.
Can I connect this to other tools? The MLB Stats Scraper connects with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
Original clean-room implementation. Reads only publicly available baseball information. Not affiliated with, endorsed by or connected to Major League Baseball, MLB Advanced Media or any club.
Input
| Field | Type | Description |
|---|---|---|
modeMode | string · teams, roster, schedule, player | What to fetch: teams (all MLB teams for a season), roster (all players on a team for a season), schedule (games, scores and status for a date or date range), or player (a single player profile by id, or search by name). Default: "teams" |
seasonSeason (year) | integer | Four-digit year used by teams and roster (e.g. 2025). Defaults to the current year when left empty. |
teamIdTeam ID | integer | Numeric MLB team id used by the roster mode (e.g. 147 for the New York Yankees, 133 for the Athletics). Run the teams mode first to look ids up. |
dateSchedule date (YYYY-MM-DD) | string | Single date for the schedule mode, e.g. 2025-07-04. Ignored if Start date and End date are both set. |
startDateSchedule start date (YYYY-MM-DD) | string | Start of a date range for the schedule mode, e.g. 2025-07-01. Use together with End date to pull multiple days of games. |
endDateSchedule end date (YYYY-MM-DD) | string | End of a date range for the schedule mode, e.g. 2025-07-07. Use together with Start date. |
playerIdPlayer ID | integer | Numeric MLB player id for the player mode (e.g. 545361 for Mike Trout). Takes priority over Player name if both are set. Find ids via the roster mode. |
playerNamePlayer name | string | Player name to search in the player mode when you do not have the id (e.g. "Mike Trout"). Ignored if Player ID is set. |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~mlb-statsapi-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"season": 2025,
"teamId": 147,
"date": "2025-07-04",
"startDate": "2025-07-01",
"endDate": "2025-07-07",
"playerId": 545361,
"playerName": "Mike Trout"
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/mlb-statsapi-scraper").call(run_input={
"season": 2025,
"teamId": 147,
"date": "2025-07-04",
"startDate": "2025-07-01",
"endDate": "2025-07-07",
"playerId": 545361,
"playerName": "Mike Trout"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/mlb-statsapi-scraper').call({
"season": 2025,
"teamId": 147,
"date": "2025-07-04",
"startDate": "2025-07-01",
"endDate": "2025-07-07",
"playerId": 545361,
"playerName": "Mike Trout"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Item Scraped Charged per item scraped. | $0.001 | $0.0005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Dribbble Shots Scraper
Scrape public design shots from Dribbble: title, high-res image, tags, likes, views and designer credit. Filter by category or sort, export JSON, CSV or Excel.
359 runs · 5 users · $0.003 / shot scrapedComputrabajo Scraper
Scrape Computrabajo job listings across Latin America (Mexico, Colombia, Argentina, Chile, Peru and more): title, company, location, salary, posted date and apply URL. Filter by country and keyword. No setup.
206 runs · 4 users · $0.002 / listing scrapedKraken Market Data Scraper
Fetch Kraken spot market data in bulk: ticker stats (ask, bid, last, 24h high/low/volume/vwap), OHLC candles for any interval, order book depth (top bids/asks), and tradable pair metadata. Fast, clean and cheap.
165 runs · 4 users · $0.001 / pair scrapedBayt Scraper
Scrape Bayt.com job listings across the Middle East (UAE, Saudi Arabia, Egypt, Qatar and more): title, company, location, posted date and apply URL. Filter by country and keyword.
134 runs · 4 users · $0.003 / job scrapedGitHub Scraper
Search GitHub and scrape repositories (stars, forks, language, topics, license, dates) or user profiles (name, company, location, bio, followers, public email, repos). Uses the GitHub REST API; optional token for higher rate limits. For developer lead generation, OSS research and recruiting.
131 runs · 7 users · $0.0008 / item scrapedHacker News Scraper
Scrape Hacker News stories, comments, Ask HN, Show HN, jobs and polls by keyword, points, comments and date range. Sort by relevance or newest. Title, URL, author, points, comment count, text and HN link. Fast clean HTTP via the HN Algolia API, no setup.
130 runs · 2 users · $0.004 / item scrapedSend the site and the fields. We build it and you get it first.