Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Monitoring Data Changes

This scenario keeps a local store current without re-crawling: one daily feed lists every player, game, and team whose data changed that day, and targeted refetches do the rest.

This scenario is commonly used to:

  • Keep a synced database of players, results, and standings current
  • Catch late corrections to closed games
  • Trigger profile refreshes only for players whose data actually changed


Relevant Feeds

FeedPurpose
Daily Change LogEverything that changed on one US Eastern day, by entity type
Player ProfileThe refetch target for players entries
Game SummaryThe refetch target for schedule and results entries
StandingsThe refetch target for standings entries


High-Level Workflow

Pull the day's log → refetch only what it lists → update the store

Daily Reconciliation LoopOne pull, four sections, targeted refetches
Pull dailyDaily Change Logplayersscheduleresultsstandings
RefetchPlayer ProfileGame SummaryStandingsonly entities the log lists
Storelocal storeskip entries whose last_modified you already hold
Past dates stay queryable: on recovery from downtime, walk the missed Eastern days in order.


Integration Steps


1. Pull the day's changes

Daily Change Log takes a date and returns what changed that day, grouped by entity type. A mid-season day, reduced to two entries per section:

GET https://api.sportradar.com/nbdl/trial/v8/en/league/2026/01/15/changes.json
x-api-key: YOUR_API_KEY
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "start_time": "2026-01-15T05:00:00Z",
  "end_time": "2026-01-16T04:59:59Z",
  "players": [
    {
      "id": "052a06be-1070-461b-9f5a-9eea0196390f",
      "full_name": "Pierre Crockrell II",
      "last_modified": "2026-01-15T06:21:35+00:00",
      "reference": "1642623"
    },
    {
      "id": "1cda8bbe-b118-4619-92e0-eb5e3c357b1b",
      "full_name": "Rahsool Diggins",
      "last_modified": "2026-01-15T15:01:40+00:00",
      "reference": "1643323"
    }
  ],
  "schedule": [
    {
      "id": "01184287-a093-4dec-af91-5ea761c40a8e",
      "season_id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "last_modified": "2026-01-16T03:32:58+00:00"
    },
    {
      "id": "1589082c-c8a8-4beb-8413-337ac35b1183",
      "season_id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "last_modified": "2026-01-16T03:25:36+00:00"
    }
  ],
  "results": [
    {
      "id": "8c35068f-b5ec-45b0-88a3-734af16e0d88",
      "season_id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "last_modified": "2026-01-15T23:07:43+00:00"
    },
    {
      "id": "1649a800-b545-459c-a386-ce5c86fc22ca",
      "season_id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "last_modified": "2026-01-16T03:18:38+00:00"
    }
  ],
  "standings": [
    {
      "id": "035ebd2d-69d9-4d73-a4b3-519f78071975",
      "name": "Blue",
      "market": "Oklahoma City",
      "last_modified": "2026-01-15T05:38:31+00:00"
    },
    {
      "id": "0a3d428b-572a-4a94-b716-8c1297c53d8e",
      "name": "Lakers",
      "market": "South Bay",
      "last_modified": "2026-01-16T04:15:05+00:00"
    }
  ]
}

The start_time and end_time window is one US Eastern day expressed in UTC (see G League API Basics). The sections:

  • players: players whose profile data changed, with id, reference, and last_modified
  • schedule: games whose scheduling data changed, each carrying its season_id
  • results: games whose result data changed (including post-game corrections), each carrying its season_id
  • standings: teams whose standings rows moved

Sections appear only when they hold entries: an off-season day can carry players alone. The reference page describes change coverage across teams, players, game statistics, schedules, and standings, so parse the response by the sections present rather than expecting a fixed set.


2. Refetch what changed

Each section maps to one refetch target:

SectionRefetch
playersPlayer Profile per listed ID
scheduleGame Summary per listed ID, or the season's Schedule on bulk days
resultsGame Summary (and Play-by-Play if you store events) per listed ID
standingsStandings once per affected season type

Use each entry's last_modified against your stored state to skip work you have already done.


3. Expect quiet days to stay small

The feed works year-round. An off-season day often carries only a handful of player edits, as on this July date:

GET https://api.sportradar.com/nbdl/trial/v8/en/league/2026/07/21/changes.json
x-api-key: YOUR_API_KEY
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "start_time": "2026-07-21T04:00:00Z",
  "end_time": "2026-07-22T03:59:59Z",
  "players": [
    {
      "id": "4d0302c4-fed2-4c93-a015-8e261f211416",
      "full_name": "Jalen Wilson",
      "last_modified": "2026-07-21T12:41:00+00:00",
      "reference": "1630592"
    },
    {
      "id": "60b42c4f-a2c6-4e0b-b3bf-cab0ae77ad66",
      "full_name": "Tyler Smith",
      "last_modified": "2026-07-21T12:14:21+00:00",
      "reference": "1641890"
    },
    {
      "id": "d92d5542-8f7e-46b7-82fb-e0a77047c966",
      "full_name": "Taelon Peter",
      "last_modified": "2026-07-21T12:17:53+00:00",
      "reference": "1643007"
    },
    {
      "id": "e1b305ff-bc34-4763-94b6-da8f980c2c43",
      "full_name": "Jett Howard",
      "last_modified": "2026-07-21T12:09:03+00:00",
      "reference": "1641724"
    }
  ]
}

4. Backfill missed days

Past dates remain queryable long after the fact, so an integration that was down for a day pulls the missed dates on recovery rather than re-crawling the league.



Common Use Cases

Typical builds on this workflow include:

  • A nightly sync job: pull the change log after the Eastern day ends, refetch per section, sleep
  • A corrections monitor that re-pulls closed games listed under results
  • A profile cache invalidated per player from the players section


Best Practices

  • Pull once daily after the Eastern day closes, plus every few hours intraday if you need same-day corrections
  • Refetch only listed entities; the change log's purpose is to make full re-crawls unnecessary
  • On recovery from downtime, walk the missed dates in order before resuming the daily cadence
  • Pair with Daily Transfers for roster movement; the change log tracks data edits, while transfers track transactions

Did this page help you?