Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Historical Data

Access Sportradar's historical MLB statistics

Data Availability

Sportradar’s MLB API provides historical data for the Preseason, Regular Season, Postseason, and All-Star Game beginning with the 2013 season.

Statcast data is available beginning with the 2020 season, including advanced metrics in feeds such as Statcast Leaders, Seasonal Pitch Metrics, and other pitch-level endpoints. Not all MLB endpoints include Statcast fields.

World Baseball Classic data is available for 2023 and 2026.

Use the Seasons endpoint to determine available seasons before requesting data from other feeds.


Data Updates

Sportradar periodically introduces new statistics and fields across MLB datasets. New data points are typically available only in the current API version from that point forward and are not backfilled into historical seasons. Refer to the MLB Change Log for details on newly added fields and updates.



Data Accessibility

Historical MLB statistics are available directly within the MLB API, and any feed that supports the season_year or year parameter can be used to retrieve historical data.

These feeds include:

Use the data retrieval examples below as a starting point to obtain your historical stats.


Team Stats

To retrieve team seasonal stats in MLB, use the Seasonal Statistics feed. The following example shows a snippet of the Minnesota Twins’ 2024 Regular Season statistics.

<season xmlns="http://feed.elasticstats.com/schema/baseball/v8/statistics.xsd" id="6a5c278f-ebce-41f9-b1ba-2160b6af04ce" year="2024" type="REG">
  <team name="Twins" market="Minnesota" abbr="MIN" id="aa34e0ed-f342-4ec6-b774-c79b47b60e2d">
    <statistics>
      <hitting>
        <overall ab="5490" lob="2360" rbi="702" abhr="30" abk="4.204" bip="4048" babip="0.289" bbk="0.362" bbpa="0.077" iso="0.165" obp="0.315" ops="0.726" seca="0.258" slg="0.411" xbh="515" pitch_count="23382" lob_risp_2out="558" team_lob="1087" ab_risp="1362" hit_risp="331" rbi_2out="261" linedrive="1035" groundball="1669" popup="334" flyball="1203" ap="6123" avg=".246" gofo="0.83">
          <onbase s="837" d="309" t="23" hr="183" tb="2256" bb="458" ibb="15" hbp="101" fc="140" roe="41" h="1352" ci="1" rov="0" cycle="0"/>
          <runs total="742"/>
          <outcome klook="3725" kswing="2914" ktotal="6639" ball="7651" iball="0" dirtball="564" foul="4184"/>
          <outs po="333" fo="902" fidp="7" lo="404" lidp="5" go="1250" gidp="115" klook="329" kswing="977" ktotal="1306" sacfly="47" sachit="10"/>
          <steal caught="23" stolen="65" pct="0.739" pickoff="7"/>
          <pitches count="23382" btotal="8316" ktotal="15066"/>
        </overall>
      </hitting>
      <pitching>
        <overall oba="0.242" lob="2144" era="4.262" k9="9.369" whip="1.2261" kbb="3.46" pitch_count="23763" wp="47" bk="5" ip_1="4321" ip_2="1440.1" bf="6078" gofo="0.822" babip="0.295" bf_ip="4.22" bf_start="22.031" gbfb="1.468" oab="5509" slg="0.4" obp="0.303">
          <onbase s="872" d="244" t="27" hr="190" tb="2201" bb="419" ibb="14" hbp="69" fc="118" roe="31" h="1333" ci="0" rov="0" h9="8.325" hr9="1.188"/>
          <runs total="735" unearned="53" earned="682" ir="203" ira="84" bqr="203" bqra="84"/>
          <outcome klook="3788" kswing="3135" ktotal="6923" ball="7587" iball="0" dirtball="503" foul="4605"/>
          <outs po="328" fo="822" fidp="1" lo="353" lidp="4" go="1236" gidp="70" klook="323" kswing="1177" ktotal="1500" sacfly="50" sachit="13"/>
          <steal caught="22" stolen="112" pickoff="8"/>
          <pitches count="23763" btotal="8159" ktotal="15604" per_ip="16.498" per_bf="3.91" per_start="85"/>
          <in_play linedrive="954" groundball="1657" popup="332" flyball="1129"/>
          <games svo="62" qstart="62" shutout="0" team_shutout="8" complete="1" win="82" loss="80" save="43" hold="88" blown_save="19"/>
        </overall>
<players>
      <player preferred_name="Ryan" first_name="Ryan" last_name="Jeffers" jersey_number="27" id="005c0339-91b9-4b00-a373-105e761382eb" full_name="Ryan Jeffers" status="A" position="C" primary_position="C">
        <statistics>
          <hitting>
            <overall ab="412" lob="197" rbi="64" abhr="19.619" abk="4.383" bip="303" babip="0.238" bbk="0.34" bbpa="0.069" iso="0.206" obp="0.3" ops="0.732" seca="0.291" slg="0.432" xbh="43" pitch_count="1807" lob_risp_2out="45" team_lob="92" ab_risp="114" hit_risp="28" rbi_2out="25" linedrive="69" groundball="127" popup="35" flyball="94" ap="465" avg=".226" gofo="0.85" woba="0.316503" wraa="2.36782" war="1.66721" bwar="3.78048" fwar="0.309373" brwar="-0.77942" wgdp="0.4" wrc="56.7606" wrc_plus="107.106">
              <onbase s="50" d="22" t="0" hr="21" tb="178" bb="32" ibb="0" hbp="14" fc="13" roe="3" h="93" ci="0" rov="0" cycle="0"/>
              <runs total="56"/>
              <outcome klook="317" kswing="208" ktotal="525" ball="550" iball="0" dirtball="49" foul="344"/>
              <outs po="35" fo="66" fidp="1" lo="29" lidp="0" go="102" gidp="9" klook="30" kswing="64" ktotal="94" sacfly="6" sachit="1"/>
              <steal caught="0" stolen="3" pct="1" pickoff="0"/>
              <pitches count="1807" btotal="613" ktotal="1194"/>
              <games start="106" play="122" finish="16" complete="101"/>
            </overall>
          </hitting>
          <fielding>
            <overall po="749" a="31" dp="0" tp="0" error="6" tc="786" fpct="0.992" c_wp="28" pb="3" rf="9.07" inn_1="2161" inn_2="720.1">
              <steal caught="12" stolen="59" pickoff="0" pct="0.169"/>
              <errors throwing="2" fielding="1" interference="3" total="6"/>
              <assists outfield="0" total="31"/>
              <games start="81" play="86" finish="5" complete="0"/>
            </overall>
            <positions>
              <position po="749" a="31" dp="0" tp="0" error="6" tc="786" fpct="0.992" c_wp="28" pb="3" rf="9.07" inn_1="2161" inn_2="720.1" position="C">
                <steal caught="12" stolen="59" pickoff="0" pct="0.169"/>
                <errors throwing="2" fielding="1" interference="3" total="6"/>
                <assists outfield="0" total="31"/>
                <games start="81" play="86" finish="5" complete="0"/>
              </position>
            </positions>
          </fielding>
        </statistics>
      </player>

This call returns season-to-date statistics for the specified MLB team for the given season_year and season_type. Stats are provided at the team level and include player-level splits for the roster.

You can find the full set of available fields in the data points section of the endpoint reference.


💡

Player Seasonal Statistics and Team Changes

The Seasonal Statistics endpoint returns team-based seasonal statistics, including player totals for their stint with that specific team during the selected season.

If a player appeared for multiple teams in the same season and you need their complete season totals across all teams, use the Player Profile endpoint instead.


Series Stats

To retrieve team and player statistics for a specific MLB postseason or regular-season series, use the Series Statistics feed.

For example, if you want detailed statistics for the Seattle Mariners in the 2025 Detroit vs. Seattle ALDS series, follow these steps:

  1. Retrieve the series_id and team_id using the Series Schedule feed.
  2. Call the Series Statistics feed using those identifiers.
<series xmlns="http://feed.elasticstats.com/schema/baseball/v8/statistics.xsd" title="ALDS - DET vs SEA" start_date="2025-10-04" id="f12b63ce-4ba8-4516-83c1-13a4754b816c" round="ALDS2" best_of="5" status="closed">
  <season id="e2c1d367-7f3d-4244-b8a9-8eefb1fcb062" year="2025" type="PST"/>
  <team name="Mariners" market="Seattle" abbr="SEA" id="43a39081-52b4-4f93-ad29-da7f329ea960" seed="2">
    <statistics>
      <hitting>
        <overall ab="184" lob="71" rbi="17" abhr="30.667" abk="3.172" bip="122" babip="0.262" bbk="0.328" bbpa="0.091" iso="0.135" obp="0.292" ops="0.634" seca="0.239" slg="0.342" xbh="13" pitch_count="808" lob_risp_2out="11" team_lob="36" ab_risp="36" hit_risp="11" rbi_2out="5" linedrive="32" groundball="48" popup="15" flyball="33" ap="209" avg=".207" gofo="0.67">
          <onbase s="25" d="7" t="0" hr="6" tb="63" bb="17" ibb="2" hbp="4" fc="4" roe="1" h="38" ci="0" rov="0" cycle="0"/>
          <runs total="19"/>
          <outcome klook="114" kswing="125" ktotal="239" ball="264" iball="0" dirtball="13" foul="160"/>
          <outs po="15" fo="28" fidp="0" lo="14" lidp="0" go="33" gidp="5" klook="7" kswing="51" ktotal="58" sacfly="2" sachit="0"/>
          <steal caught="2" stolen="2" pct="0.5" pickoff="0"/>
          <pitches count="808" btotal="281" ktotal="527"/>
        </overall>
      </hitting>
      <pitching>
        <overall oba="0.201" lob="71" era="3.288" k9="9.522" whip="1.0385" kbb="3.44" pitch_count="840" wp="2" bk="0" ip_1="156" ip_2="52" bf="209" gofo="0.815" babip="0.256" bf_ip="4.019" bf_start="19.6" gbfb="1.697" oab="189" slg="0.333" obp="0.271">
          <onbase s="23" d="10" t="0" hr="5" tb="63" bb="13" ibb="3" hbp="2" fc="10" roe="0" h="38" ci="0" rov="0" h9="6.579" hr9="0.864"/>
          <runs total="20" unearned="1" earned="19" ir="11" ira="3" bqr="11" bqra="3"/>
          <outcome klook="129" kswing="114" ktotal="243" ball="273" iball="0" dirtball="17" foul="169"/>
          <outs po="14" fo="28" fidp="0" lo="12" lidp="1" go="44" gidp="1" klook="12" kswing="43" ktotal="55" sacfly="0" sachit="2"/>
          <steal caught="1" stolen="2" pickoff="1"/>
          <pitches count="840" btotal="292" ktotal="548" per_ip="16.154" per_bf="4.019" per_start="77"/>
          <in_play linedrive="33" groundball="56" popup="14" flyball="33"/>
          <games svo="3" qstart="1" shutout="0" complete="0" win="3" loss="2" save="1" hold="1" blown_save="2"/>
        </overall>
<players>
      <player preferred_name="Mitch" first_name="Mitchell" last_name="Garver" id="a8efa694-2d64-4ad3-bf39-7d4f9006be7f" full_name="Mitch Garver" position="C" primary_position="C">
        <statistics>
          <hitting>
            <overall ab="5" lob="0" rbi="1" abhr="0" abk="2.5" bip="4" babip="0.25" bbk="0.5" bbpa="0.143" iso="0" obp="0.286" ops="0.486" seca="0.2" slg="0.2" xbh="0" pitch_count="28" lob_risp_2out="0" team_lob="0" ab_risp="0" hit_risp="0" rbi_2out="0" linedrive="1" groundball="1" popup="0" flyball="2" ap="7" avg=".200" gofo="0">
              <onbase s="1" d="0" t="0" hr="0" tb="1" bb="1" ibb="0" hbp="0" fc="0" roe="0" h="1" ci="0" rov="0" cycle="0"/>
              <runs total="0"/>
              <outcome klook="4" kswing="6" ktotal="10" ball="9" iball="0" dirtball="1" foul="4"/>
              <outs po="0" fo="2" fidp="0" lo="1" lidp="0" go="0" gidp="0" klook="0" kswing="2" ktotal="2" sacfly="1" sachit="0"/>
              <steal caught="0" stolen="0" pct="0" pickoff="0"/>
              <pitches count="28" btotal="10" ktotal="18"/>
              <games start="2" play="4" finish="2" complete="0"/>
            </overall>
          </hitting>
        </statistics>
      </player>

This request returns series-level statistics for the specified MLB team within the given series_id. Statistics are provided at the team level, with nested player-level statistics for all roster participants in that series.


Player Stats

To retrieve complete seasonal or historical statistics for a specific player, including seasons in which they played for multiple teams, use the Player Profile feed.

GET https://api.sportradar.com/mlb/{access_level}/v8/{language_code}/players/{player_id}/profile.{format}

The following example shows a snippet of Shohei Ohtani's 2025 statistics.

<player xmlns="http://feed.elasticstats.com/schema/baseball/v8/profile.xsd" id="80de60c9-74e3-4a50-b128-b3dc7456a254" status="A" position="P" primary_position="DH" first_name="Shohei" last_name="Ohtani" preferred_name="Shohei" jersey_number="17" full_name="Shohei Ohtani" height="75" weight="210" throw_hand="R" bat_hand="L" high_school="Hanamaki Higashi (JPN)" birthdate="1994-07-05" birthcountry="JPN" birthcity="Oshu" pro_debut="2018-03-29" updated="2025-08-21T17:29:09+00:00" is_wbc_only="false" salary="28216944" rookie_year="2018" reference="660271">
  <team name="Dodgers" market="Los Angeles" abbr="LAD" id="ef64da7f-cfaf-4300-87b0-9313386b977c"/>
  <seasons>
    <season id="e2c1d367-7f3d-4244-b8a9-8eefb1fcb062" year="2025" type="PST">
      <totals>
        <statistics>
          <hitting>
            <overall ab="68" lob="24" rbi="14" abhr="8.5" abk="2.957" bip="37" babip="0.27" bbk="0.696" bbpa="0.19" iso="0.426" obp="0.405" ops="1.096" seca="0.662" slg="0.691" xbh="12" pitch_count="303" lob_risp_2out="8" team_lob="16" ab_risp="12" hit_risp="3" rbi_2out="4" linedrive="6" groundball="19" popup="3" flyball="17" ap="84" avg=".265" gofo="1.08">
              <onbase s="6" d="3" t="1" hr="8" tb="47" bb="7" ibb="9" hbp="0" fc="1" roe="0" h="18" ci="0" rov="0" cycle="0"/>
              <runs total="13"/>
              <outcome klook="53" kswing="46" ktotal="99" ball="105" iball="0" dirtball="5" foul="49"/>
              <outs po="3" fo="7" fidp="0" lo="3" lidp="0" go="14" gidp="0" klook="9" kswing="14" ktotal="23" sacfly="0" sachit="0"/>
              <steal caught="1" stolen="1" pct="0.5" pickoff="0"/>
              <pitches count="303" btotal="110" ktotal="193"/>
              <games start="17" play="17" finish="0" complete="17"/>
            </overall>
          </hitting>
          <pitching>
            <overall oba="0.219" lob="25" era="4.426" k9="12.393" whip="1.1311" kbb="4" pitch_count="333" wp="1" bk="0" ip_1="61" ip_2="20.1" bf="83" gofo="0.824" babip="0.318" bf_ip="4.082" gbfb="1.385" oab="73" slg="0.356" obp="0.293">
              <onbase s="11" d="2" t="1" hr="2" tb="26" bb="6" ibb="1" hbp="1" fc="0" roe="0" h="16" ci="0" rov="0" h9="7.083" hr9="0.882"/>
              <runs total="10" unearned="0" earned="10" ir="0" ira="0" bqr="0" bqra="2"/>
              <outcome klook="50" kswing="63" ktotal="113" ball="107" iball="0" dirtball="8" foul="57"/>
              <outs po="4" fo="10" fidp="0" lo="3" lidp="1" go="14" gidp="0" klook="3" kswing="25" ktotal="28" sacfly="1" sachit="1"/>
              <steal caught="1" stolen="0" pickoff="0"/>
              <pitches count="333" btotal="116" ktotal="217" per_ip="16.377" per_bf="4.012"/>
              <in_play linedrive="12" groundball="18" popup="4" flyball="13"/>
              <games start="4" play="4" finish="0" svo="0" qstart="2" shutout="0" complete="0" win="2" loss="1" save="0" hold="0" blown_save="0" team_win="3" team_loss="1"/>
            </overall>

The Player Profile feed returns biographical details and season-by-season statistics for an individual MLB player. For each season and season type, the feed includes aggregated totals as well as detailed statistical splits, allowing you to analyze performance by context such as day vs. night games, venue, and other situational breakdowns.

Building Your Request

If the player is participating in the current season, you can use the request path that starts with a team.id to retrieve player.id values, and then use those IDs to call the Player Profile endpoint.

If you need historical statistics for players who are not participating in the current season, use the following request paths. These workflows allow you to specify a year or season_year (via the Seasonal Statistics feed) corresponding to the season in which the player participated, and then retrieve the associated player.id for use with the Player Profile endpoint.


Historical Stats by Game

To retrieve historical game statistics use the MLB game feeds. Depending on your use case, you may need the Game Boxscore, Game Play-by-Play, Game Pitch Metrics, Game Summary, or Game Extended Summary feeds.

To retrieve game statistics for the entire 2021 MLB regular season, use the Game Summary or Game Extended Summary feeds.

To build these requests, we need the unique game.id for each game in the 2021 season. These IDs can be discovered through the League Schedule, Daily Schedule, and Daily Summary feeds, including postseason games when applicable.

Use the Schedule feeds to discover game dates, start times, and game.id values, and use game-level feeds to retrieve results and statistics.

<league xmlns="http://feed.elasticstats.com/schema/baseball/v8/schedule.xsd" alias="MLB" name="Major League Baseball" id="2fa448bc-fc17-4d3d-be03-e60e080fdc26">
  <season-schedule id="b2ca66fa-ef41-4c1c-b247-69f54282b881" year="2021" type="REG">
    <games>
      <game id="ffe19914-1c07-4a45-a350-51d07bcac9b7" status="closed" coverage="full" game_number="2" day_night="N" scheduled="2021-05-27T23:05:00+00:00" home_team="d89bed32-3aee-4407-99e3-4103641b999a" away_team="c874a065-c115-4e7d-b0f0-235584fb0e6f" attendance="9020" duration="2:07" double_header="false" entry_mode="STOMP" reference="634003">
        <venue name="Nationals Park" market="Washington" capacity="41376" surface="grass" address="1500 South Capitol Street SE" city="Washington" state="DC" zip="20003" country="USA" id="bb062fb1-e268-412e-b3d2-2ddb6acc1822" field_orientation="N" stadium_type="outdoor" time_zone="US/Eastern">
          <location lat="38.8730933" lng="-77.0075727"/>
        </venue>
        <home name="Nationals" market="Washington" abbr="WSH" id="d89bed32-3aee-4407-99e3-4103641b999a" win="21" loss="25"/>
        <away name="Reds" market="Cincinnati" abbr="CIN" id="c874a065-c115-4e7d-b0f0-235584fb0e6f" win="22" loss="26"/>
        <broadcasts>
          <broadcast network="MLB Network" type="TV" locale="Home"/>
        </broadcasts>
      </game>
      <game id="ffb95495-a24b-4c5e-b6dc-6d89214e05fe" status="closed" coverage="full" game_number="1" day_night="D" scheduled="2021-07-08T20:10:00+00:00" home_team="43a39081-52b4-4f93-ad29-da7f329ea960" away_team="a09ec676-f887-43dc-bbb3-cf4bbaee9a18" attendance="17524" duration="2:27" double_header="false" entry_mode="STOMP" reference="633315">
        <venue name="T-Mobile Park" market="Seattle" capacity="47929" surface="grass" address="1516 First Avenue South" city="Seattle" state="WA" zip="98134" country="USA" id="f1c03dac-3c0f-437c-a325-8d5702cd321a" field_orientation="NE" stadium_type="retractable" time_zone="US/Pacific">
          <location lat="47.5899037" lng="-122.3337561"/>
        </venue>
        <home name="Mariners" market="Seattle" abbr="SEA" id="43a39081-52b4-4f93-ad29-da7f329ea960" win="46" loss="42"/>
        <away name="Yankees" market="New York" abbr="NYY" id="a09ec676-f887-43dc-bbb3-cf4bbaee9a18" win="44" loss="42"/>
        <broadcasts>
          <broadcast network="MLB Network" type="TV" locale="Home"/>
        </broadcasts>
      </game>
      <game id="ffb34bce-d03d-4aa3-a066-e4e975833f55" status="closed" coverage="full" game_number="1" day_night="N" scheduled="2021-05-16T00:10:00+00:00" home_team="29dd9a87-5bcc-4774-80c3-7f50d985068b" away_team="c874a065-c115-4e7d-b0f0-235584fb0e6f" attendance="20136" duration="4:10" double_header="false" entry_mode="STOMP" reference="634148">
        <venue name="Coors Field" market="Colorado" capacity="50144" surface="grass" address="2001 Blake Street" city="Denver" state="CO" zip="80205" country="USA" id="85dd5cd6-7324-4b52-a1cc-68f816d0cdce" field_orientation="N" stadium_type="outdoor" time_zone="US/Mountain">
          <location lat="39.7559779" lng="-104.9933491"/>
        </venue>
        <home name="Rockies" market="Colorado" abbr="COL" id="29dd9a87-5bcc-4774-80c3-7f50d985068b" win="15" loss="25"/>
        <away name="Reds" market="Cincinnati" abbr="CIN" id="c874a065-c115-4e7d-b0f0-235584fb0e6f" win="18" loss="19"/>
        <broadcasts>
          <broadcast network="SportsNet RM" type="TV" locale="Home"/>
        </broadcasts>
      </game>
      <game id="ff9f12f4-1ae1-4412-b833-14b3b1004611" status="closed" coverage="full" game_number="1" day_night="N" scheduled="2021-06-08T23:05:00+00:00" home_team="481dfe7e-5dab-46ab-a49f-9dcc2b6e2cfd" away_team="ef64da7f-cfaf-4300-87b0-9313386b977c" attendance="9047" duration="2:55" double_header="false" entry_mode="STOMP" reference="633772">
        <venue name="PNC Park" market="Pittsburgh" capacity="38753" surface="grass" address="115 Federal Street" city="Pittsburgh" state="PA" zip="15212" country="USA" id="61314394-c8b8-411e-b891-ca41285d5362" field_orientation="E" stadium_type="outdoor" time_zone="US/Eastern">
          <location lat="40.4471507" lng="-80.0064087"/>
        </venue>
        <home name="Pirates" market="Pittsburgh" abbr="PIT" id="481dfe7e-5dab-46ab-a49f-9dcc2b6e2cfd" win="23" loss="36"/>
        <away name="Dodgers" market="Los Angeles" abbr="LAD" id="ef64da7f-cfaf-4300-87b0-9313386b977c" win="35" loss="25"/>
        <broadcasts>
          <broadcast network="SportsNet PT" type="TV" locale="Home"/>
        </broadcasts>
      </game>

Use each game.id returned in the schedule to retrieve game-level statistics using feeds such as Game Summary, Boxscore, or Play-by-Play.

To detect statistical updates to completed games or past seasons, use the Daily Change Log.