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.
Every entity carries a Sportradar URN in the same sr: scheme used across Sportradar's General Sport APIs:
| ID family | Example | Identifies |
|---|---|---|
sr:sport: | sr:sport:3 | The sport (Baseball) |
sr:category: | sr:category:16 | Country or region grouping |
sr:competition: | sr:competition:109 | A league or tournament (MLB) |
sr:season: | sr:season:134469 | One edition (MLB 2026) |
sr:sport_event: | sr:sport_event:63301121 | One game |
sr:competitor: | sr:competitor:3650 | A team (Cleveland Guardians) |
sr:player: | sr:player:1721884 | A player (Steven Kwan) |
sr:venue: | sr:venue:8087 | A ballpark (Progressive Field) |
sr:league: | sr:league:99737 | A standings or stage group (a division, league, or pool) |
sr:cup_round: | sr:cup_round:2551008 | One 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_contextsituates the game: sport, category, competition, and season, each with its ID, so a single game record links back to every scope you can query.competitorsalways carries exactly two teams with aqualifierofhomeoraway.sport_event_status.match_statusrefinesstatus: during play it names the inning (2nd_inning) or readspauseduring the break between innings; after play it readsended.period_scoresis the line score: oneregular_periodentry per inning, in order.winner_idappears once the game is decided.- The
statisticsblock (omitted here) carries the box score; see Retrieving Team and Player Details.
Game Statuses
The core sport_event_status.status values:
| Status | Meaning |
|---|---|
not_started | Scheduled; also what live feeds show moments before first pitch |
live | In progress; match_status names the inning |
closed | Final and confirmed; statistics are complete |
postponed | Pushed to a later date |
cancelled | Will 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:livemeans the table recalculates during play;post(as here) means it updates after games finish. NPB and KBO League seasons declarelive, 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:livemeans 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.
Updated about 6 hours ago
