Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Pulling Schedules and Results

This scenario walks from nothing to a full schedule and results store: find the competition, pick the season, pull its games, and keep the current day fresh.

This scenario is commonly used to:

  • Render season and daily schedule pages
  • Power results tickers and score archives
  • Resolve the competition, season, and game IDs that drive every other feed


Relevant Feeds

FeedPurpose
CompetitionsEvery covered competition, with its ID
Competition SeasonsThe seasons available for one competition
SeasonsThe same season records across every competition in one call
Season SummariesEvery game of a season with status, line score, and statistics
Daily SummariesEvery game on one UTC date, across all competitions
Competitor SummariesOne team's recent and upcoming games
Competitor vs CompetitorHead-to-head history and scheduled meetings


High-Level Workflow

High-Level WorkflowDiscover once, backfill the season, refresh the day
DiscoverCompetitions→Competition Seasonscompetition and season IDs
BackfillSeason Summarieswalk start/limit, pages of 200
Daily loopDaily SummariesUTC date; fetch both surrounding dates
Team view (optional)Competitor SummariesCompetitor vs Competitorone team's slate and head-to-heads
Dashed pills are optional. Cadences come from the Best Practices section at the end of this page.


Integration Steps


1. Find the competition

Call Competitions once and store the IDs you care about; the list is shown trimmed on the Overview page. MLB is sr:competition:109.


2. Pick the season

Competition Seasons lists the seasons available for one competition (up to three: the current season and the two before it). The MLB response, in full:

GET https://api.sportradar.com/baseball/trial/v2/en/competitions/sr:competition:109/seasons.json
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-21T17:36:45+00:00",
  "seasons": [
    {
      "id": "sr:season:112588",
      "name": "MLB 2024",
      "start_date": "2024-03-20",
      "end_date": "2024-10-31",
      "year": "2024",
      "competition_id": "sr:competition:109"
    },
    {
      "id": "sr:season:125735",
      "name": "MLB 2025",
      "start_date": "2025-03-18",
      "end_date": "2025-11-02",
      "year": "2025",
      "competition_id": "sr:competition:109"
    },
    {
      "id": "sr:season:134469",
      "name": "MLB 2026",
      "start_date": "2026-03-25",
      "end_date": "2026-11-01",
      "year": "2026",
      "competition_id": "sr:competition:109"
    }
  ]
}

The Seasons feed returns the same records across every competition in one call, useful for a first sync.


3. Pull the season's games

Season Summaries returns every game of the season with its status, line score, and (for played games) statistics, paging at up to 200 games; walk start as described in API Basics. One game from the first page, with the statistics block omitted here for space:

{
  "generated_at": "2026-07-21T17:49:44+00:00",
  "summaries": [
    {
      "sport_event": {
        "id": "sr:sport_event:63290531",
        "start_time": "2026-03-26T00:05:00+00:00",
        "start_time_confirmed": true,
        "competitors": [
          {
            "id": "sr:competitor:3634",
            "name": "San Francisco Giants",
            "country": "USA",
            "country_code": "USA",
            "abbreviation": "SF",
            "qualifier": "home",
            "gender": "male"
          },
          {
            "id": "sr:competitor:3654",
            "name": "New York Yankees",
            "country": "USA",
            "country_code": "USA",
            "abbreviation": "NYY",
            "qualifier": "away",
            "gender": "male"
          }
        ]
      },
      "sport_event_status": {
        "status": "closed",
        "match_status": "ended",
        "home_score": 0,
        "away_score": 7,
        "winner_id": "sr:competitor:3654",
        "period_scores": [
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 1
          },
          {
            "home_score": 0,
            "away_score": 5,
            "type": "regular_period",
            "number": 2
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 3
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 4
          },
          {
            "home_score": 0,
            "away_score": 2,
            "type": "regular_period",
            "number": 5
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 6
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 7
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 8
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 9
          }
        ]
      }
    }
  ]
}

For calendar products, Season Links adds bracket structure for cup seasons; league seasons like MLB return their stage and group structure through Season Info instead (see Fundamentals).


4. Keep the current day fresh

Daily Summaries returns every baseball game on one UTC date, across all competitions your key covers: a single July date returned 154 games spanning MLB, NPB, KBO League, Mexican League, and a dozen development leagues. Two entries, one already closed in Japan and one not yet started in the US:

GET https://api.sportradar.com/baseball/trial/v2/en/schedules/2026-07-21/summaries.json
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-21T17:45:58+00:00",
  "summaries": [
    {
      "sport_event": {
        "id": "sr:sport_event:66776874",
        "start_time": "2026-07-21T09:00:00+00:00",
        "sport_event_context": {
          "competition": {
            "id": "sr:competition:1036",
            "name": "NPB",
            "gender": "men"
          },
          "season": {
            "id": "sr:season:137942",
            "name": "NPB 2026",
            "start_date": "2026-03-27",
            "end_date": "2026-11-02",
            "year": "2026",
            "competition_id": "sr:competition:1036"
          }
        },
        "competitors": [
          {
            "id": "sr:competitor:22108",
            "name": "Hanshin Tigers",
            "country": "Japan",
            "country_code": "JPN",
            "abbreviation": "HAN",
            "qualifier": "home",
            "gender": "male"
          },
          {
            "id": "sr:competitor:67110",
            "name": "Yokohama Dena Baystars",
            "country": "Japan",
            "country_code": "JPN",
            "abbreviation": "YOK",
            "qualifier": "away",
            "gender": "male"
          }
        ]
      },
      "sport_event_status": {
        "status": "closed",
        "match_status": "aet",
        "home_score": 2,
        "away_score": 1,
        "home_normaltime_score": 1,
        "away_normaltime_score": 1,
        "winner_id": "sr:competitor:22108",
        "period_scores": [
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 1
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 2
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 3
          },
          {
            "home_score": 0,
            "away_score": 1,
            "type": "regular_period",
            "number": 4
          },
          {
            "home_score": 1,
            "away_score": 0,
            "type": "regular_period",
            "number": 5
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 6
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 7
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 8
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "regular_period",
            "number": 9
          },
          {
            "home_score": 0,
            "away_score": 0,
            "type": "overtime",
            "number": 10
          },
          {
            "home_score": 1,
            "away_score": 0,
            "type": "overtime",
            "number": 11
          }
        ],
        "decided_inning": 11
      }
    },
    {
      "sport_event": {
        "id": "sr:sport_event:63299165",
        "start_time": "2026-07-21T22:40:00+00:00",
        "sport_event_context": {
          "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"
          }
        ]
      },
      "sport_event_status": {
        "status": "not_started",
        "match_status": "not_started"
      }
    }
  ]
}

Because dates are UTC, a US evening game lands on the following UTC date; fetch both surrounding dates when you render a local-time schedule.


5. Handle schedule changes

Games move. A postponed game reports:

{
  "sport_event": {
    "id": "sr:sport_event:71759852",
    "competitors": [
      {
        "id": "sr:competitor:443548",
        "name": "White Sox",
        "country": "Dominican Republic",
        "country_code": "DOM",
        "abbreviation": "WHS",
        "qualifier": "home",
        "gender": "male"
      },
      {
        "id": "sr:competitor:905939",
        "name": "Dsl Pirates Black",
        "country": "Dominican Republic",
        "country_code": "DOM",
        "abbreviation": "DSL",
        "qualifier": "away",
        "gender": "male"
      }
    ]
  },
  "sport_event_status": {
    "status": "postponed",
    "match_status": "postponed"
  }
}

Track these transitions with the change feeds rather than re-pulling whole seasons; see Monitoring Data Changes.


6. Team-scoped schedules

For a single team's slate, Competitor Summaries returns its recent and upcoming games, and Competitor vs Competitor returns the head-to-head history plus scheduled meetings. The next Guardians and Twins meeting, from the head-to-head feed:

{
  "generated_at": "2026-07-21T17:50:27+00:00",
  "competitors": [
    {
      "id": "sr:competitor:3650",
      "name": "Cleveland Guardians",
      "country": "USA",
      "country_code": "USA",
      "abbreviation": "CLE",
      "gender": "male"
    },
    {
      "id": "sr:competitor:3649",
      "name": "Minnesota Twins",
      "country": "USA",
      "country_code": "USA",
      "abbreviation": "MIN",
      "gender": "male"
    }
  ],
  "next_meetings": [
    {
      "sport_event": {
        "id": "sr:sport_event:63303131",
        "start_time": "2026-09-13T18:10:00+00:00",
        "competitors": [
          {
            "id": "sr:competitor:3649",
            "name": "Minnesota Twins",
            "country": "USA",
            "country_code": "USA",
            "abbreviation": "MIN",
            "qualifier": "home",
            "gender": "male"
          },
          {
            "id": "sr:competitor:3650",
            "name": "Cleveland Guardians",
            "country": "USA",
            "country_code": "USA",
            "abbreviation": "CLE",
            "qualifier": "away",
            "gender": "male"
          }
        ]
      }
    }
  ]
}


Common Use Cases

Typical builds on this workflow include:

  • A season schedule page with day, week, and month views
  • A results archive searchable by team or date
  • A "today's games" module spanning multiple leagues
  • A team page schedule strip with recent form and upcoming opponents


Best Practices

  • Re-pull Season Summaries daily during the season to pick up schedule changes and finalized statistics, or drive re-pulls from Sport Events Updated
  • Poll Daily Summaries every few minutes on game days for a scores page; for pitch-level freshness use the live feeds instead, see Tracking Live Games
  • Refresh Competitions and Competition Seasons weekly; they change at season boundaries
  • Treat a postponed game as the same record, not a new one: the ID persists through the reschedule

Did this page help you?