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:
- Sport Events Created — Returns IDs for sport events created in the last 24 hours.
- Sport Events Removed — Returns IDs for sport events removed (e.g., due to entry errors). These remain available for 2 weeks.
- Sport Events Updated — Returns IDs for sport events updated in the last 24 hours.
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.
-
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" } ] }
-
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"/>
-
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.
-
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.
-
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" } ] }
-
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.
-
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).
-
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" } ] }
-
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. -
Map the response against your previously stored stats, event timelines, and scores.
-
Update your platform to reflect any changes.
Updated 2 days ago