Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Track Tennis API Updates

Learn how to track daily changes to the Tennis API without depleting your call limits.

Introduction

Because tennis is dynamic and schedules can shift frequently, keeping your data in sync requires monitoring update feeds. Matches may change due to schedule adjustments, post-match stat revisions, or the addition and removal of events. To help you track these updates without depleting your call limits, the API provides three key endpoints:

For example, using the Sport Events Updated feed, you can monitor changes by referencing the returned sport_event_id and cross-checking it against other feeds. This allows you to pinpoint revisions like corrected scores, updated stats, or event corrections by comparing the new data with what you have stored.

Note: These are distinct from development updates to the API itself (e.g., new endpoints, data points, or data types). For those, see the change log.


Sport Event Update Scenarios


New Matches

Use the Sport Events Created feed to track the creation of new matches in the last 24 hours. Tracking these updates ensures your platform stays aligned with live competition data.

📋 Why New Matches May Be Created
  • Start of a tournament or competition — When the draw is released, all first-round matches are created in the API.
  • Completion of qualifying rounds — Qualifier winners are slotted into the main draw, generating new matchups.
  • Addition of lucky losers — If a player withdraws before play begins, a lucky loser (a player who lost in qualifying) is added to the draw, creating or updating matches.
  • Schedule adjustments or court changes — New matches may be created if scheduling errors or venue shifts occur.
  • Data corrections — Missing or misconfigured matchups are added or replaced when corrections are made.
  • Exhibition or special matches — Occasionally added within a competition if they’re tracked as part of the event.
  1. Call the Sport Events Created endpoint using the recommended call frequency. If sport events have been created, it will return something like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <sport_events_created
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generated_at="2025-09-02T14:50:51+00:00"
    	xmlns="http://schemas.sportradar.com/sportsapi/tennis/v3" xsi:schemaLocation="http://schemas.sportradar.com/sportsapi/tennis/v3 https://schemas.sportradar.com/sportsapi/tennis/v3/schemas/sport_events_created.xsd">
    	<sport_event_created id="sr:sport_event:63444473" active_season="true" created_at="2025-09-01T15:40:32+00:00"/>
    	<sport_event_created id="sr:sport_event:63444475" active_season="true" created_at="2025-09-01T15:40:32+00:00"/>
    	<sport_event_created id="sr:sport_event:63444477" active_season="true" created_at="2025-09-01T15:40:32+00:00"/>
    {
      "generated_at": "2025-09-02T14:50:05+00:00",
      "sport_events_created": [
        {
          "id": "sr:sport_event:63444473",
          "active_season": true,
          "created_at": "2025-09-01T15:40:32+00:00"
        },
        {
          "id": "sr:sport_event:63444475",
          "active_season": true,
          "created_at": "2025-09-01T15:40:32+00:00"
        },
        {
          "id": "sr:sport_event:63444477",
          "active_season": true,
          "created_at": "2025-09-01T15:40:32+00:00"
        }
      ]
    }
  2. Verify if the match is from an active season. If so, call the Sport Event Timeline or Sport Event Summary endpoint using the returned sport_event_id to determine the season the match belongs to.

    {
      "generated_at": "2025-09-02T16:27:19+00:00",
      "sport_event": {
        "id": "sr:sport_event:63444473",
        "start_time": "2025-09-02T15:00:00+00:00",
        "start_time_confirmed": true,
        "sport_event_context": {
          "sport": {
            "id": "sr:sport:5",
            "name": "Tennis"
          },
          "category": {
            "id": "sr:category:72",
            "name": "Challenger"
          },
          "competition": {
            "id": "sr:competition:3813",
            "name": "ATP Challenger Seville, Spain Men Singles",
            "parent_id": "sr:competition:3811",
            "type": "singles",
            "gender": "men"
          },
          "season": {
            "id": "sr:season:131327",
            "name": "ATP Challenger Seville, Spain Men Singles 2025",
            "start_date": "2025-08-31",
            "end_date": "2025-09-07",
            "year": "2025",
            "competition_id": "sr:competition:3813"
          }
        }
      }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <sport_event_timeline
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generated_at="2025-09-02T16:29:42+00:00"
    	xmlns="http://schemas.sportradar.com/sportsapi/tennis/v3" xsi:schemaLocation="http://schemas.sportradar.com/sportsapi/tennis/v3 https://schemas.sportradar.com/sportsapi/tennis/v3/schemas/sport_event_timeline.xsd">
    	<sport_event id="sr:sport_event:63444473" start_time="2025-09-02T15:00:00+00:00" start_time_confirmed="true" estimated="true">
    		<sport_event_context>
    			<sport id="sr:sport:5" name="Tennis"/>
    			<category id="sr:category:72" name="Challenger"/>
    			<competition id="sr:competition:3813" name="ATP Challenger Seville, Spain Men Singles" parent_id="sr:competition:3811" type="singles" gender="men"/>
    			<season id="sr:season:131327" name="ATP Challenger Seville, Spain Men Singles 2025" start_date="2025-08-31" end_date="2025-09-07" year="2025" competition_id="sr:competition:3813"/>
  3. Check the returned matches against tournaments you are already tracking. For example, use the Season Links endpoint to confirm whether these matches align with your active tournaments.

  4. Update your platform accordingly. If the match is not part of an active season, you can disregard it.


Deleted Matches

Use the Sport Events Removed endpoint to track the removal of existing matches in the last 24 hours. Matches may be removed if they are no longer scheduled to be played in a tournament, or if they were originally created by mistake.

📋 Why Matches May Be Removed
  • Player withdrawals — A player pulls out of a tournament before the match is played.
  • Schedule corrections — A match was incorrectly added or duplicated and needs to be removed.
  • Data entry errors — Mistaken or invalid match records are purged from the feed.
  • Tournament restructuring — Changes to draws or formats require matches to be removed.
  1. Call the Sport Events Removed endpoint using the recommended call frequency. If sport events have been removed, it will return something like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <sport_events_removed
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generated_at="2025-09-02T15:29:55+00:00"
    xmlns="http://schemas.sportradar.com/sportsapi/tennis/v3" xsi:schemaLocation="http://schemas.sportradar.com/sportsapi/tennis/v3 https://schemas.sportradar.com/sportsapi/tennis/v3/schemas/sport_events_removed.xsd">
    <sport_event_removed id="sr:sport_event:56812233"/>
    <sport_event_removed id="sr:sport_event:63403209"/>
    <sport_event_removed id="sr:sport_event:63402909"/>
    <sport_event_removed id="sr:sport_event:63330687"/>
    </sport_events_removed>
    
    {
      "generated_at": "2025-09-02T15:28:14+00:00",
      "sport_events_removed": [
        {
          "id": "sr:sport_event:56812233"
        },
        {
          "id": "sr:sport_event:63403209"
        },
        {
          "id": "sr:sport_event:63402909"
        },
        {
          "id": "sr:sport_event:63330687"
        }
      ]
    }
  2. Check the removed matches against the tournaments you are currently tracking, for example by using the Season Links endpoint, to confirm whether these matches should be removed from your system.

  3. Update your platform by removing any stored matches that match the returned sport_event.id values. Once removed, these matches will no longer appear in future schedule or summary feeds, so it’s important to purge them to avoid displaying invalid fixtures.


Updated Matches

Using the Sport Events Updated feed, you can monitor changes by referencing the returned sport_event_id and cross-checking it against other feeds. This allows you to pinpoint revisions such as corrected scores, updated stats, or event corrections by comparing the new data with what you have stored.

📋 Why Matches May Be Updated
  • Score corrections — Adjustments to set or game scores after review.
  • Stat revisions — Updates to player or team statistics (e.g., aces, double faults).
  • Event corrections — Fixes to event details such as venue, start time, or competitors.
  • Match status changes — Transitions between statuses (e.g., from live to ended, or delayed to live).
  1. Call the Sport Events Updated endpoint using the recommended call frequency. If sport events have been updated, it will return something like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <sport_events_updated
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generated_at="2025-09-02T16:10:13+00:00"
    	xmlns="http://schemas.sportradar.com/sportsapi/tennis/v3" xsi:schemaLocation="http://schemas.sportradar.com/sportsapi/tennis/v3 https://schemas.sportradar.com/sportsapi/tennis/v3/schemas/sport_events_updated.xsd">
    	<sport_event_updated id="sr:sport_event:63444473" updated_at="2025-09-02T16:09:35+00:00"/>
    	<sport_event_updated id="sr:sport_event:63444479" updated_at="2025-09-02T16:09:35+00:00"/>
    	<sport_event_updated id="sr:sport_event:63402009" updated_at="2025-09-02T16:09:34+00:00"/>
    {
      "generated_at": "2025-09-02T16:08:55+00:00",
      "sport_events_updated": [
        {
          "id": "sr:sport_event:63327433",
          "updated_at": "2025-09-02T16:08:33+00:00"
        },
        {
          "id": "sr:sport_event:63375767",
          "updated_at": "2025-09-02T16:08:32+00:00"
        },
        {
          "id": "sr:sport_event:63444477",
          "updated_at": "2025-09-02T16:08:32+00:00"
        }
      ]
    }
  2. Fetch only the impacted matches by using the returned sport_event_id with the Sport Event Timeline and Sport Event Summary endpoints. This ensures you update only what changed without re-pulling full season data.

  3. Map the response against your previously stored stats, event timelines, and scores.

  4. Update your platform to reflect any changes.