MLB Scraper avatar

MLB Scraper

Pricing

from $20.00 / 1,000 results

Go to Apify Store
MLB Scraper

MLB Scraper

[๐Ÿ’ฐ $20 / 1K] Extract MLB games, teams, rosters, players, and standings โ€” scores, schedules, matchups, player bios and season stats, and division and wild-card standings. Pick clubs by name or abbreviation, filter by season and game type.

Pricing

from $20.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Pull Major League Baseball data at scale โ€” game schedules and scores, all 30 clubs, active rosters, player bios with season hitting and pitching stats, and division, league, and wild-card standings. One structured input picks between five data types, and you name teams and players in plain English โ€” no numeric IDs to look up. Built for sports analysts, fantasy-baseball tools, betting modelers, and journalists who need clean, structured MLB data without wrangling the official stats API by hand.

Why This Scraper?

  • Five data types in one actor โ€” games, teams, rosters, players, and standings, switched with a single dropdown. Most MLB scrapers skip standings entirely.
  • All 30 MLB clubs across the AL and NL โ€” full name, abbreviation, league, division, home venue, and first year of play for every franchise.
  • Season hitting and pitching stats โ€” HR, AVG, OBP, SLG, OPS, RBI, ERA, and the full stat block per player, grouped into hitting, pitching, and fielding.
  • Six game types including the World Series and Spring Training โ€” filter to Regular Season, Wild Card, Division Series, League Championship, World Series, or Spring Training.
  • Four standings views including the wild-card race โ€” by division, by league, wild card, or wild card with division leaders, each with games back and wild-card games back.
  • Name teams and players in plain English โ€” "New York Yankees", "NYY", "Shohei Ohtani", or a mlb.com URL all resolve automatically; no need to know that 147 is the Yankees or 660271 is Ohtani.
  • Box-score-grade game data โ€” final scores, linescore runs/hits/errors, winning/losing/save pitchers, venue, series description, and day/night flag on every game row.
  • Any season the official record covers โ€” pick any year from 1876 to the current season for games, rosters, players, and standings.

Use Cases

Sports Analytics

  • Track team win percentage, run differential, and streaks across a season
  • Compare hitting and pitching production between players and clubs
  • Build historical performance datasets across multiple seasons
  • Monitor division and wild-card races as standings shift

Fantasy Baseball

  • Pull season stat lines for every player on a roster to power draft rankings
  • Refresh active rosters to catch call-ups, trades, and IL moves
  • Score players on HR, RBI, OBP, SLG, ERA, and other category leaders
  • Map jersey numbers, positions, and status for lineup tools

Betting Models

  • Feed final scores and run totals into predictive models
  • Analyze head-to-head matchups by team, venue, and game type
  • Isolate postseason performance with World Series and Division Series filters
  • Track streaks and games back to gauge momentum

Journalism & Media

  • Auto-build box-score summaries and standings tables for coverage
  • Pull player bios โ€” birthplace, debut date, height, weight, bats/throws
  • Generate wild-card race snapshots on demand
  • Verify schedules and results against the official record

Research & Data Products

  • Assemble multi-season baseball datasets for study
  • Power dashboards with structured team, player, and standings feeds
  • Enrich existing rosters with current-season stat lines
  • Archive full-season schedules with scores and outcomes

Getting Started

Today's Games

The simplest run โ€” leave the dates blank to get today's schedule with scores:

{
"dataType": "games"
}

A Team's Roster with Season Stats

{
"dataType": "rosters",
"teams": ["Los Angeles Dodgers"],
"season": 2025,
"includeStats": true
}

Wild-Card Standings

{
"dataType": "standings",
"standingsType": "wildCard",
"season": 2025
}

Player Bios and Stats

{
"dataType": "players",
"players": ["Shohei Ohtani", "Aaron Judge"],
"season": 2025,
"includeStats": true
}

World Series Games in a Date Range

{
"dataType": "games",
"season": 2024,
"startDate": "2024-10-25",
"endDate": "2024-10-31",
"gameType": "W"
}

Input Reference

What to Extract

ParameterTypeDefaultDescription
dataTypeselectGames โ€” schedules, scores & matchupsChoose the kind of MLB data: Games, Teams, Rosters, Players, or Standings.

Filters

ParameterTypeDefaultDescription
teamsstring[]["New York Yankees"]Team names (e.g. "New York Yankees"), abbreviations (e.g. "NYY"), team IDs, or mlb.com team links. Picks which teams' rosters to fetch and narrows games and standings. Leave empty for all 30 teams.
playersstring[][]Player names (e.g. "Shohei Ohtani"), player IDs, or mlb.com player links. Applies to the Players data type.
seasoninteger2026The season year to collect, e.g. 2025. Applies to all data types.
startDatestring""Collect games on or after this date (YYYY-MM-DD). Leave empty to use today. Games only.
endDatestring""Collect games on or before this date (YYYY-MM-DD). Leave empty to match the start date. Games only.
gameTypeselectAll game typesLimit to one game type: Regular Season, Wild Card, Division Series, League Championship, World Series, or Spring Training. Applies to Games.
standingsTypeselectDivision standingsHow to group standings: Division standings, League standings, Wild Card standings, or Wild Card with division leaders. Standings only.

Output Detail

ParameterTypeDefaultDescription
includeStatsbooleantrueFor Rosters and Players, also fetch each player's season stats. Turn off for faster, cheaper runs that return only roster and bio information. No effect on Games, Teams, or Standings.

Limits

ParameterTypeDefaultDescription
maxResultsinteger100How many records to collect in total. Set to 0 to collect as many as possible. Standings and Teams always return their full fixed set.

Output

Each row carries a recordType field identifying which of the five data types it is. Examples and field tables for each type follow.

Games (recordType: "game")

{
"recordType": "game",
"gamePk": 775296,
"gameDate": "2024-10-30T00:08:00Z",
"officialDate": "2024-10-30",
"gameType": "World Series",
"season": 2024,
"status": "Final",
"seriesDescription": "World Series",
"homeTeam": {
"id": 147,
"name": "New York Yankees",
"abbreviation": "NYY",
"score": 5,
"isWinner": false,
"leagueRecord": { "wins": 1, "losses": 4, "pct": ".200" }
},
"awayTeam": {
"id": 119,
"name": "Los Angeles Dodgers",
"abbreviation": "LAD",
"score": 7,
"isWinner": true,
"leagueRecord": { "wins": 4, "losses": 1, "pct": ".800" }
},
"venue": { "id": 3313, "name": "Yankee Stadium" },
"dayNight": "night",
"doubleHeader": "N",
"scheduledInnings": 9,
"linescore": { "currentInning": 9, "teams": { "home": { "runs": 5, "hits": 8, "errors": 0 }, "away": { "runs": 7, "hits": 9, "errors": 1 } } },
"decisions": { "winner": { "id": 621111, "fullName": "Walker Buehler" }, "loser": { "id": 543037, "fullName": "Gerrit Cole" } },
"url": "https://www.mlb.com/gameday/775296",
"scrapedAt": "2026-07-01T14:30:00Z"
}
FieldTypeDescription
recordTypestringAlways "game"
gamePkintegerUnique game identifier
gameDatestringGame start time (UTC)
officialDatestringCalendar date (YYYY-MM-DD)
gameTypestringFull label, e.g. "Regular Season", "World Series"
seasonintegerSeason year
statusstringGame status, e.g. Final, Scheduled, In Progress
seriesDescriptionstringSeries name, e.g. "Regular Season", "World Series"
homeTeam / awayTeamobjectTeam id, name, abbreviation, score, isWinner, and league record
venueobjectBallpark id and name
dayNightstring"day" or "night"
doubleHeaderstringDoubleheader flag: N (none), Y (traditional), or S (split)
scheduledInningsintegerScheduled innings, usually 9
linescoreobjectCurrent inning and per-team runs, hits, and errors
decisionsobjectWinning, losing, and save pitchers
urlstringmlb.com Gameday link
scrapedAtstringExtraction timestamp

Teams (recordType: "team")

{
"recordType": "team",
"id": 147,
"name": "New York Yankees",
"abbreviation": "NYY",
"teamCode": "nya",
"fileCode": "nyy",
"league": { "id": 103, "name": "American League" },
"division": { "id": 201, "name": "American League East" },
"venue": { "id": 3313, "name": "Yankee Stadium" },
"firstYearOfPlay": "1903",
"locationName": "Bronx",
"url": "https://www.mlb.com/team/147",
"scrapedAt": "2026-07-01T14:30:00Z"
}
FieldTypeDescription
recordTypestringAlways "team"
idintegerTeam identifier
namestringFull club name
abbreviationstringShort code, e.g. NYY
teamCode / fileCodestringInternal team codes
leagueobjectLeague id and name (AL or NL)
divisionobjectDivision id and name
venueobjectHome ballpark id and name
firstYearOfPlaystringFirst year the franchise played
locationNamestringHome city or borough
urlstringmlb.com team page
scrapedAtstringExtraction timestamp

Rosters (recordType: "rosterPlayer")

{
"recordType": "rosterPlayer",
"teamId": 119,
"teamName": "Los Angeles Dodgers",
"playerId": 660271,
"fullName": "Shohei Ohtani",
"jerseyNumber": "17",
"position": { "code": "10", "name": "Designated Hitter", "abbreviation": "DH" },
"status": "Active",
"stats": { "hitting": { "homeRuns": 54, "avg": ".310", "obp": ".390", "slg": ".646", "ops": "1.036", "rbi": 130 } },
"url": "https://www.mlb.com/player/660271",
"scrapedAt": "2026-07-01T14:30:00Z"
}
FieldTypeDescription
recordTypestringAlways "rosterPlayer"
teamId / teamNameinteger / stringTeam the roster belongs to
playerIdintegerPlayer identifier
fullNamestringPlayer name
jerseyNumberstringUniform number
positionobjectPosition code, name, and abbreviation
statusstringRoster status, e.g. Active
statsobjectSeason hitting, pitching, and fielding stats (when includeStats is on)
urlstringmlb.com player page
scrapedAtstringExtraction timestamp

Players (recordType: "player")

{
"recordType": "player",
"id": 660271,
"fullName": "Shohei Ohtani",
"primaryNumber": "17",
"currentTeam": { "id": 119, "name": "Los Angeles Dodgers" },
"primaryPosition": { "code": "10", "name": "Designated Hitter", "abbreviation": "DH" },
"birthDate": "1994-07-05",
"currentAge": 30,
"birthCity": "Oshu",
"birthCountry": "Japan",
"height": "6' 4\"",
"weight": 210,
"batSide": "Left",
"pitchHand": "Right",
"mlbDebutDate": "2018-03-29",
"active": true,
"stats": { "hitting": { "homeRuns": 54, "avg": ".310", "ops": "1.036", "rbi": 130 }, "pitching": { "era": "3.14", "strikeOuts": 167 } },
"url": "https://www.mlb.com/player/660271",
"scrapedAt": "2026-07-01T14:30:00Z"
}

Bio fields

FieldTypeDescription
recordTypestringAlways "player"
idintegerPlayer identifier
fullNamestringPlayer name
primaryNumberstringUniform number
currentTeamobjectCurrent team id and name
primaryPositionobjectPosition code, name, and abbreviation
birthDatestringDate of birth (YYYY-MM-DD)
currentAgeintegerCurrent age
birthCity / birthCountrystringBirthplace
height / weightstring / integerListed height and weight
batSide / pitchHandstringBats and throws
mlbDebutDatestringMLB debut date
activebooleanCurrently active
urlstringmlb.com player page
scrapedAtstringExtraction timestamp
statsobjectSeason stats (when includeStats is on) โ€” see below

Stats block (present when includeStats is on)

FieldTypeDescription
stats.hittingobjectHitting line: homeRuns, avg, obp, slg, ops, rbi, and more
stats.pitchingobjectPitching line: era, strikeOuts, wins, saves, whip, and more
stats.fieldingobjectFielding line by position

Standings (recordType: "standing")

{
"recordType": "standing",
"season": 2025,
"league": { "id": 103, "name": "American League" },
"division": { "id": 201, "name": "American League East" },
"team": { "id": 147, "name": "New York Yankees" },
"wins": 94,
"losses": 68,
"winningPercentage": ".580",
"gamesBack": "-",
"wildCardGamesBack": "-",
"divisionRank": "1",
"leagueRank": "2",
"wildCardRank": "-",
"streak": "W3",
"runsScored": 815,
"runsAllowed": 668,
"runDifferential": 147,
"clinched": true,
"scrapedAt": "2026-07-01T14:30:00Z"
}
FieldTypeDescription
recordTypestringAlways "standing"
seasonintegerSeason year
leagueobjectLeague id and name
divisionobjectDivision id and name
teamobjectTeam id and name
wins / lossesintegerWins and losses
winningPercentagestringWin percentage
gamesBackstringGames behind the division leader
wildCardGamesBackstringGames behind the wild-card cutoff
divisionRank / leagueRank / wildCardRankstringRank within division, league, and wild-card race
streakstringCurrent streak, e.g. "W3"
runsScored / runsAllowed / runDifferentialintegerRun totals and differential
clinchedbooleanPlayoff berth clinched
scrapedAtstringExtraction timestamp

Tips for Best Results

  • Leave the dates blank for today's slate โ€” an empty start and end date returns the current day's games with live status and scores.
  • Keep a games date range inside one season โ€” for postseason, set gameType to World Series (or Division Series, League Championship) and pin the date range to October of that year to isolate the exact series.
  • Turn off includeStats for speed โ€” roster and player runs skip the extra stat fetch per player, so you get names, positions, and bios much faster and cheaper when you don't need full stat lines.
  • Name teams however you like โ€” full name, abbreviation, team ID, or a mlb.com team URL all work; leave teams empty to pull all 30 clubs at once.
  • Use the Players type for star tracking, Rosters for whole clubs โ€” Players takes an explicit name/ID list, while Rosters pulls every active player on the teams you pick.
  • Pick wildCardWithLeaders for a full playoff-picture snapshot โ€” it adds each division leader alongside the wild-card contenders in one standings pull.
  • Set season to any year back to 1876 โ€” historical schedules, rosters, and standings are all available for deep multi-season research.

Pricing

From $20.00 per 1,000 results โ€” a flat, predictable rate whether you pull games, standings, rosters, or full player stat lines. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$2.40$2.26$2.13$2.00
1,000$24.00$22.60$21.30$20.00
10,000$240.00$226.00$213.00$200.00
100,000$2,400.00$2,260.00$2,130.00$2,000.00

A "result" is any row in the output dataset โ€” one game, team, roster player, player, or standings entry. No compute or time-based charges โ€” you pay per result, plus a small fixed per-run start fee. Platform fees depend on your Apify plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Trigger custom APIs on run completion
  • Apify API โ€” Full programmatic access

This actor is designed for legitimate sports research, analytics, journalism, and data products using publicly available Major League Baseball information. You are responsible for complying with applicable laws and the terms of service of the sources involved. Do not use extracted data for any unlawful purpose, and respect all applicable trademarks and intellectual property rights.