MLB Scraper avatar

MLB Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
MLB Scraper

MLB Scraper

Every Major League Baseball game on ESPN's scoreboard as one row, with runs by inning, team records, the ballpark and the betting line before first pitch. Read up to 120 days per run, or switch to standings with magic numbers, rosters and team schedules.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

8 days ago

Last modified

Share

MLB Scraper returns one row per Major League Baseball game from ESPN's public scoreboard: both clubs with their season records, the runs scored in every inning, the inning in progress, the ballpark, attendance, TV channels and the betting line before first pitch. Type a date or a range into the form and click Start; a full day of the regular season is about 15 games. Batting and pitching lines of individual players are not part of the output. It costs $1.00 per 1,000 results on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 results.

Output fields

A game row carries the fields below. What to return also offers standings, teams, rosters, team schedules and news, covered after the limits.

FieldDescription
gameId, keyESPN's game ID and a row key that stays the same across runs, such as espn:mlb:401816920.
name, shortNameThe visiting club first: Colorado Rockies at Detroit Tigers and COL @ DET.
startsAtScheduled first pitch in UTC, ISO 8601.
status, statusDetailpre, in or post, plus ESPN's wording: Scheduled, Top 2nd, Bottom 5th, Rain Delay, Top 1st, Final, or Final/13 after 13 innings.
periodThe inning being played or the last one played: 9 in a regulation game, 13 in the 13-inning game on 16 September 2026. Scheduled games already show 1.
clockAlways 0:00, since baseball has no game clock.
seasonYear, seasonType2026, and regular-season or post-season.
home, awayClub id, name, shortName, score in runs, winner, season record such as 70-79, periodScores with the runs of each inning, and logo.
venueBallpark, city, state and indoor, which is false for an open-air park like Comerica Park.
attendanceReported crowd once ESPN posts it, for example 22726; 0 before and during the game.
broadcastsMLB.TV plus the clubs' own channels, such as Rockies.TV and Tigers.TV.
oddsThe line before first pitch: details names the moneyline favorite (SD -126), spread is the run line for the home club (-1.5 or 1.5), overUnder the total runs (7.5), each with prices. null from first pitch on.
urlThe game page on espn.com.

How to scrape MLB scores

  1. Leave mlb in Leagues. It is the only league this actor reads.
  2. Keep What to return on Games and results and set From date and To date, for example 2026-09-20 for a single day. The pair -7 and yesterday returns the past week and stays current in a saved task.
  3. Pick a Game status: Finished for results, Not started yet for upcoming games and their lines, In progress for games under way. For the injured list of every club, choose Injury report in What to return; dates do not apply to it.
  4. Click Start. The Output tab shows the games as a table you can download as CSV, Excel or JSON, and the API tab has the code to read them from a script.

For a daily results feed started through the API:

{
"leagues": ["mlb"],
"dateFrom": "-7",
"dateTo": "yesterday",
"statusFilter": "final",
"maxItems": 200
}

Example output

One row from a run on 29 September 2026. Detroit beat Colorado 8-1 on 13 September 2026 and did not need to bat in the bottom of the ninth, so its periodScores has eight entries against Colorado's nine.

{
"key": "espn:mlb:401816920",
"type": "game",
"sport": "baseball",
"league": "mlb",
"leagueName": "Major League Baseball",
"gameId": "401816920",
"name": "Colorado Rockies at Detroit Tigers",
"shortName": "COL @ DET",
"round": null,
"startsAt": "2026-09-13T16:10:00.000Z",
"status": "post",
"statusDetail": "Final",
"completed": true,
"period": 9,
"clock": "0:00",
"seasonYear": 2026,
"seasonType": "regular-season",
"home": {
"id": "6",
"kind": "team",
"name": "Detroit Tigers",
"shortName": "DET",
"location": "Detroit",
"score": 8,
"winner": true,
"record": "70-79",
"position": 0,
"homeAway": "home",
"periodScores": [
2,
3,
0,
2,
1,
0,
0,
0
],
"logo": "https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/det.png"
},
"away": {
"id": "27",
"kind": "team",
"name": "Colorado Rockies",
"shortName": "COL",
"location": "Colorado",
"score": 1,
"winner": false,
"record": "55-94",
"position": 1,
"homeAway": "away",
"periodScores": [
1,
0,
0,
0,
0,
0,
0,
0,
0
],
"logo": "https://a.espncdn.com/i/teamlogos/mlb/500/scoreboard/col.png"
},
"venue": {
"name": "Comerica Park",
"city": "Detroit",
"state": "Michigan",
"country": null,
"indoor": false
},
"attendance": 22726,
"neutralSite": false,
"broadcasts": [
"MLB.TV",
"Rockies.TV",
"Tigers.TV"
],
"odds": null,
"url": "https://www.espn.com/mlb/game/_/gameId/401816920/rockies-tigers"
}

How much does it cost to scrape MLB games?

Free planStarterScaleBusiness
1,000 results$1.00$0.80$0.65$0.50
Box score and injuries, per 1,000$1.00$0.80$0.65$0.50

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

A regular season of 2,430 games costs $2.43 on the Free plan and $1.215 on Business. Games filtered out by Game status and games that did not change since the last run in the change mode are not charged.

Limits and known issues

  • The box score option gives each club's totals under batting (for example hits and homeRuns), pitching (strikeouts, ERA) and fielding (errors) as ESPN's display strings; a fourth group, records, comes back empty. The injured list uses statuses such as 10-Day-IL or 60-Day-IL and names at most five players per club.
  • Finished games have no line, since ESPN drops it at first pitch, and one of the 35 games with a line in our runs had no run-line prices.
  • One run reads up to 120 days. A regular season runs from late March to late September, so it takes two runs.
  • The standings mode always shows the current season. It has no season setting.
  • The Team schedules mode lists spring training, the regular season and the postseason together: 199 games for the 2026 Yankees on 30 September 2026. These rows leave seasonType and record empty, so tell the phases apart by startsAt.
  • Night games on the West Coast start after midnight UTC but belong to their US date: LAA @ SEA at 2026-09-27T01:40:00.000Z is a game of 26 September. Moving dates such as today are counted in UTC.

Standings, magic numbers, rosters and the injured list

League table returns one row per club, with the league in group, such as American League, and no separate division field. The stats object carries what ESPN's baseball table has: wins, losses, winPercent, gamesBehind, divisionGamesBehind, streak, magicNumberDivision, magicNumberWildcard, playoffPercent, divisionPercent, wildCardPercent, and split records as text such as Home (55-26 for Tampa Bay on 21 September 2026), Road, Intradivision and Last Ten Games (8-2). Team rosters lists each club's players with jersey, position, height and weight in heightCm and weightKg, age and status; name clubs in Team identifiers as nyy or 10, or leave it empty for all 30. League news returns the headlines in ESPN's MLB feed with a summary and link.

Injury report gives the full injured list, one injury row per player, without the five-player limit of the box score option. During the 2026 postseason, on 11 October, it held 284 players from all 30 clubs: 171 on the 60-Day-IL, 43 on the 15-Day-IL, 27 on the 10-Day-IL, plus Out, Day-To-Day, 7-Day IL (the concussion list) and single suspension and paternity entries. Elbow and shoulder injuries led injuryType, and most rows name the side and the diagnosis, such as Right and Fracture. In the offseason ESPN sets returnDate to a placeholder such as 2027-02-01 for players without a real estimate.

FAQ

Line scores, schedules and standings are factual records that ESPN publishes openly. This actor requests the same public feed without a login and takes no more from news stories than the headline, summary and link. Player names appear where ESPN lists them: on rosters, on injured lists and in news headlines. How you use and republish the data is your responsibility.

Can I keep a live scoreboard with it?

Yes. Leave the dates empty, set Game status to In progress, turn on Return only what changed since the last run with a Watch name, and schedule the task every few minutes. A game comes back whenever its score or statusDetail changes, which in baseball happens at every half-inning.

Which MLB games have betting lines?

Games that have not started, once ESPN posts a line, which in late September 2026 was usually on the day of the game. Turn on Only games with a betting line to drop the rest, or use the Sports Odds Scraper for lines across several leagues.

Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.