Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Global Baseball Fundamentals

This page covers the concepts every Global Baseball integration uses: how the data is organized, the IDs that link it together, the three-part summary shape, game statuses, innings, and coverage declarations.



How the Data Is Organized

Everything hangs off a small hierarchy:

  • A category groups competitions by country or region (USA, Japan, International).
  • A competition is a league or tournament that recurs: MLB, NPB, the World Baseball Classic.
  • A season is one edition of a competition: MLB 2026. Season-scoped feeds (summaries, standings, competitors, players, lineups, probabilities) all key on the season ID.
  • A sport event is one game. Game-scoped feeds (summary, timeline, lineups, probabilities) key on the sport event ID.
The Entity HierarchyEach level contains the next; every ID is an sr: URN
Category country or regionsr:category:16
Competition a recurring league or tournamentsr:competition:109
Season one edition; keys the season-scoped feedssr:season:134469
Sport event one game; keys the game-scoped feedssr:sport_event:63301121
Teams (sr:competitor:) and players (sr:player:) cross-cut every level, and a venue (sr:venue:) attaches to each game; the example IDs are the MLB records used throughout this guide.

Every entity carries a Sportradar URN in the same sr: scheme used across Sportradar's General Sport APIs:

ID familyExampleIdentifies
sr:sport:sr:sport:3The sport (Baseball)
sr:category:sr:category:16Country or region grouping
sr:competition:sr:competition:109A league or tournament (MLB)
sr:season:sr:season:134469One edition (MLB 2026)
sr:sport_event:sr:sport_event:63301121One game
sr:competitor:sr:competitor:3650A team (Cleveland Guardians)
sr:player:sr:player:1721884A player (Steven Kwan)
sr:venue:sr:venue:8087A ballpark (Progressive Field)
sr:league:sr:league:99737A standings or stage group (a division, league, or pool)
sr:cup_round:sr:cup_round:2551008One round of a bracket

IDs are stable across feeds and across both packages: the sport event ID from a schedule works in the summary, timeline, lineups, and probability feeds. For the full identifier model, including the bridge to other Sportradar ID spaces, see ID Handling.



The Three-Part Summary Shape

Most feeds return games as a repeating triple: sport_event (who, when, where), sport_event_status (the outcome so far), and, where statistics are collected, statistics. This is the Sport Event Summary of a completed MLB game, trimmed to the first two parts:

{
  "generated_at": "2026-07-21T17:50:04+00:00",
  "sport_event": {
    "id": "sr:sport_event:63301121",
    "start_time": "2026-07-20T22:40:00+00:00",
    "start_time_confirmed": true,
    "sport_event_context": {
      "sport": {
        "id": "sr:sport:3",
        "name": "Baseball"
      },
      "category": {
        "id": "sr:category:16",
        "name": "USA",
        "country_code": "USA"
      },
      "competition": {
        "id": "sr:competition:109",
        "name": "MLB",
        "gender": "men"
      },
      "season": {
        "id": "sr:season:134469",
        "name": "MLB 2026",
        "start_date": "2026-03-25",
        "end_date": "2026-11-01",
        "year": "2026",
        "competition_id": "sr:competition:109"
      }
    },
    "competitors": [
      {
        "id": "sr:competitor:3650",
        "name": "Cleveland Guardians",
        "country": "USA",
        "country_code": "USA",
        "abbreviation": "CLE",
        "qualifier": "home",
        "gender": "male"
      },
      {
        "id": "sr:competitor:3649",
        "name": "Minnesota Twins",
        "country": "USA",
        "country_code": "USA",
        "abbreviation": "MIN",
        "qualifier": "away",
        "gender": "male"
      }
    ],
    "venue": {
      "id": "sr:venue:8087",
      "name": "Progressive Field",
      "capacity": 34788,
      "city_name": "Cleveland, OH",
      "city_id": "sr:city:4092",
      "country_name": "USA",
      "map_coordinates": "41.4957048, -81.6852732",
      "country_code": "USA",
      "timezone": "America/New_York"
    }
  },
  "sport_event_status": {
    "status": "closed",
    "match_status": "ended",
    "home_score": 13,
    "away_score": 4,
    "winner_id": "sr:competitor:3650",
    "period_scores": [
      {
        "home_score": 3,
        "away_score": 0,
        "type": "regular_period",
        "number": 1
      },
      {
        "home_score": 3,
        "away_score": 2,
        "type": "regular_period",
        "number": 2
      },
      {
        "home_score": 1,
        "away_score": 0,
        "type": "regular_period",
        "number": 3
      },
      {
        "home_score": 1,
        "away_score": 0,
        "type": "regular_period",
        "number": 4
      },
      {
        "home_score": 1,
        "away_score": 0,
        "type": "regular_period",
        "number": 5
      },
      {
        "home_score": 1,
        "away_score": 0,
        "type": "regular_period",
        "number": 6
      },
      {
        "home_score": 3,
        "away_score": 1,
        "type": "regular_period",
        "number": 7
      },
      {
        "home_score": 0,
        "away_score": 1,
        "type": "regular_period",
        "number": 8
      },
      {
        "home_score": 0,
        "away_score": 0,
        "type": "regular_period",
        "number": 9
      }
    ]
  }
}

Points to note:

  • sport_event_context situates the game: sport, category, competition, and season, each with its ID, so a single game record links back to every scope you can query.
  • competitors always carries exactly two teams with a qualifier of home or away.
  • sport_event_status.match_status refines status: during play it names the inning (2nd_inning) or reads pause during the break between innings; after play it reads ended.
  • period_scores is the line score: one regular_period entry per inning, in order.
  • winner_id appears once the game is decided.
  • The statistics block (omitted here) carries the box score; see Retrieving Team and Player Details.


Game Statuses

The core sport_event_status.status values:

StatusMeaning
not_startedScheduled; also what live feeds show moments before first pitch
liveIn progress; match_status names the inning
closedFinal and confirmed; statistics are complete
postponedPushed to a later date
cancelledWill not be played

Treat closed as the terminal signal for results processing; completed games report closed with match_status: ended. For a game walked through every state, including a pause between innings, see Game Status Workflow; the full enumeration, including transitional values, is documented on each feed's reference page, for example Sport Event Summary.



Innings, Extra Innings, and Ties

period_scores carries one entry per inning. A game that goes past nine innings carries more entries, each typed overtime, match_status reads overtime while those innings are played, and the header gains home_normaltime_score and away_normaltime_score: the score at the end of the ninth. This Mexican League game went 13 innings (the snippet trims period_scores to the four extra innings):

{
  "sport_event": {
    "id": "sr:sport_event:67361660",
    "competitors": [
      {
        "id": "sr:competitor:66404",
        "name": "Olmecas de Tabasco",
        "country": "Mexico",
        "country_code": "MEX",
        "abbreviation": "ODT",
        "qualifier": "home",
        "gender": "male"
      },
      {
        "id": "sr:competitor:66412",
        "name": "Tigres de Quintana Roo",
        "country": "Mexico",
        "country_code": "MEX",
        "abbreviation": "TDQ",
        "qualifier": "away",
        "gender": "male"
      }
    ]
  },
  "sport_event_status": {
    "status": "closed",
    "match_status": "ended",
    "home_score": 4,
    "away_score": 3,
    "home_normaltime_score": 3,
    "away_normaltime_score": 3,
    "winner_id": "sr:competitor:66404",
    "period_scores": [
      {
        "home_score": 0,
        "away_score": 0,
        "type": "overtime",
        "number": 10
      },
      {
        "home_score": 0,
        "away_score": 0,
        "type": "overtime",
        "number": 11
      },
      {
        "home_score": 0,
        "away_score": 0,
        "type": "overtime",
        "number": 12
      },
      {
        "home_score": 0,
        "away_score": 0,
        "type": "overtime",
        "number": 13
      }
    ],
    "decided_inning": 15
  }
}

Not every competition plays to a decision: NPB games can end level, and standings carry a draw column for them. Handle a missing winner_id on a closed game as a valid outcome, not an error; see Tracking Standings.



Seasons, Stages, and Groups

Season Info describes a season's structure as stages containing groups. MLB 2026 exposes three parallel league views of the same regular season: overall, per conference (American League, National League), and per division. Group IDs use the sr:league: family:

{
  "stages": [
    {
      "order": 1,
      "type": "league",
      "phase": "regular season",
      "start_date": "2026-03-25",
      "end_date": "2026-09-28",
      "year": "2026",
      "groups": [
        {
          "id": "sr:league:99737",
          "name": "MLB 2026"
        }
      ]
    },
    {
      "order": 1,
      "type": "league",
      "phase": "conference",
      "start_date": "2026-03-25",
      "end_date": "2026-09-28",
      "year": "2026",
      "groups": [
        {
          "id": "sr:league:99739",
          "name": "MLB 2026, American League",
          "group_name": "American League"
        },
        {
          "id": "sr:league:99747",
          "name": "MLB 2026, National League",
          "group_name": "National League"
        }
      ]
    },
    {
      "order": 1,
      "type": "league",
      "phase": "division",
      "start_date": "2026-03-25",
      "end_date": "2026-09-28",
      "year": "2026",
      "groups": [
        {
          "id": "sr:league:99741",
          "name": "MLB 2026, American League Central",
          "group_name": "American League Central"
        },
        {
          "id": "sr:league:99743",
          "name": "MLB 2026, American League East",
          "group_name": "American League East"
        },
        {
          "id": "sr:league:99745",
          "name": "MLB 2026, American League West",
          "group_name": "American League West"
        },
        {
          "id": "sr:league:99749",
          "name": "MLB 2026, National League Central",
          "group_name": "National League Central"
        },
        {
          "id": "sr:league:99751",
          "name": "MLB 2026, National League East",
          "group_name": "National League East"
        },
        {
          "id": "sr:league:99753",
          "name": "MLB 2026, National League West",
          "group_name": "National League West"
        }
      ]
    }
  ]
}

The snippet keeps each group's identity fields; in the full response, groups also list their competitors. Cup competitions use stages of type cup with pools and knockout rounds: the World Baseball Classic carries its group phase plus a cup playoffs stage whose bracket is served by Season Links; see Tracking Standings.



Coverage Declarations

Coverage varies by competition, and each season states its own coverage in the Season Info response. This is MLB 2026's, in full:

{
  "generated_at": "2026-07-21T17:49:35+00:00",
  "season": {
    "id": "sr:season:134469",
    "name": "MLB 2026",
    "start_date": "2026-03-25",
    "end_date": "2026-11-01",
    "year": "2026",
    "competition_id": "sr:competition:109",
    "sport": {
      "id": "sr:sport:3",
      "name": "Baseball"
    },
    "category": {
      "id": "sr:category:16",
      "name": "USA",
      "country_code": "USA"
    },
    "competition": {
      "id": "sr:competition:109",
      "name": "MLB",
      "gender": "men"
    }
  },
  "coverage": {
    "type": "competition",
    "competition_properties": {
      "brackets": false,
      "schedules": true,
      "standings": "post",
      "team_squads": true
    },
    "sport_event_properties": {
      "basic_play_by_play": true,
      "scores": "live"
    }
  }
}

How to read it:

  • competition_properties.standings: live means the table recalculates during play; post (as here) means it updates after games finish. NPB and KBO League seasons declare live, so the same feed behaves differently per competition.
  • competition_properties.brackets: whether the season carries bracket structures in Season Links.
  • competition_properties.team_squads: whether team rosters are maintained.
  • sport_event_properties.scores: live means scores update in real time.
  • sport_event_properties.basic_play_by_play: whether pitch-level events are collected; this also determines whether the season's games appear in the live timeline feeds. See Tracking Live Games.

Read the coverage block per season rather than assuming one competition's depth applies to another.



Season History

Season-scoped feeds serve up to three seasons per competition: the current season and the two before it. The Seasons and Competition Seasons feeds list the seasons the API serves; see Pulling Schedules and Results.


Did this page help you?