Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Live Match Tracking

Use this guide to access live tennis match updates, including scores, statistics, and play-by-play events.

Prerequisite: Confirm Season Availability and Coverage

Understanding which seasons are available—and what level of data coverage is provided—is essential for making reliable and accurate API calls.

  • Use the Seasons feed to view all available seasons for each competition in the API.
  • Reference the Coverage Matrix to determine the depth of coverage by competition tier.

You can also use the following feeds to see coverage information ahead of matches, including whether serve outcomes, extended stats, and play-by-play data are available, as well as whether scores are delivered live or only after the match:

🎾

Understanding Competitions and Seasons

  • A Competition in tennis refers to a professional tournament or tour event, such as the Australian Open, Wimbledon, or ATP 1000 – Indian Wells. Each competition has a unique competition_id.
  • A Season represents a specific edition of a competition, usually aligned with a calendar year or event date (e.g., Wimbledon 2025). Each season has a unique season_id and includes all matches, players, and results for that instance of the competition.

Available Match Statistics

For a list of match stats we provide, see our Tennis Statistics Summary page.


Getting Started: Access Match Schedules

Follow the steps below to access match schedules. For more details, see the Match Schedules integration scenario.

  1. Find the sport_event ID by querying one of the following Schedule feeds:

  2. Use the sport_event ID to access live data from any of the following push and RESTful feeds when the match is about to start or live. The table below shows which feeds correspond to each data type:

    Data Type

    Sport Event Feeds (RESTful)

    Live Feeds (RESTful)

    Push Feeds

    Timeline (Play-by-Play) Data

    Sport Event Timeline


    Push Events

    Match Statistics


    Push Statistics

    Note: All feeds include score updates.

    ⏲️

    Check Update Frequencies for REST Endpoints

    The Update Frequencies page outlines how often data is refreshed and provides recommended call intervals for each REST endpoint. Use it to optimize your polling strategy before, during, and after matches while avoiding unnecessary requests.

    👍

    Understand Data Points and Match Status Workflows

    Although some endpoints provide the same type of data overall, they differ in the specific data points returned. Use the Data Points table for each endpoint (e.g., Sport Event Timeline) to see all possible fields and definitions.

    See the Match Status Workflow page** to understand how a match progresses live and how its status impacts the data returned.



Accessing Live Data


Timeline (Play-by-Play) Data

Play-by-play data provides a detailed, sequential account of every point in a match, including serves, and scoring events. This data is useful for analyzing match flow, and player performance in real time.

You can use the following feeds to access play-by-play data:

  • Sport Event Timeline - The most comprehensive live data feed, returning detailed information for a specific match using its unique sport_event ID.

  • Push Events - Provides a continuous stream of timeline data for all matches currently live, with query filtering options to target specific matches. Always keep a RESTful backup to track matches in case a Push feed disconnects, since you won’t resume where you left off. For details, see Push Feeds.

  • Live Timelines and Live Timelines Delta - RESTful alternatives to the Sport Event Timeline that don’t require sport_event IDs in advance, but instead return data for all matches currently live.

You can use play-by-play data to render immersive visuals that represent the live game by mapping serve events and outcomes directly onto a court graphic.

For example, fields like server, first_serve_fault (to identify a Second Serve when true), and result can drive ball animations, while competitors.name and country_code provide player labels and flags.

You can also generate a score bug and point-by-point timelines by using fields such as period_scores, point_type, and result (e.g., an ACE) to track scoring events within each game. Combine these with competitors.name and match_status to render the score progression and highlight key moments for each player.


Match Statistics

Match statistics include quantifiable data points from a tennis match, such as aces, double faults, first-serve percentage, break points won, and overall player performance comparisons.

You can use the following fields to access match statistics:

  • Sport Event Summary - Returns detailed statistics for a specific match using its unique sport_event ID.

  • Sport Event Timeline - This endpoint also returns the same match statistics as the Sport Event Summary endpoint in addition to play-by-play data.

  • Push Statistics - Provides a continuous stream of statistics data for all matches currently live, with query filtering options to target specific matches. Always keep a RESTful backup to track matches in case a Push feed disconnects, since you won’t resume where you left off. For details, see Push Feeds

  • Live Summaries - A RESTful alternative to the Sport Event Summary that doesn't require sport_event IDs in advance, but instead return statistics for all matches currently live.

You can use match statistics data to render a head-to-head stats view like below using using totals such as service_points_won, receiver_points_won, games_won, and tiebreaks_won.



Monitoring Post-Match Updates

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



Doubles (Team) IDs

In the Tennis API, doubles teams are represented as a single competitor with their own id, name, and abbreviation (e.g., "Cerundolo F / Duran G", "C/D"). Inside that competitor, the players array lists the two individual athletes with their own id, name, country, and abbreviation.

			<competitors>
				<competitor id="sr:competitor:1266321" name="Cerundolo F / Duran G" abbreviation="C/D" qualifier="home">
					<players>
						<player id="sr:competitor:255595" name="Cerundolo, Francisco" country="Argentina" country_code="ARG" abbreviation="CER"/>
						<player id="sr:competitor:43319" name="Duran, Guillermo" country="Argentina" country_code="ARG" abbreviation="DUR"/>
					</players>
				</competitor>
        "competitors": [
          {
            "id": "sr:competitor:1266321",
            "name": "Cerundolo F / Duran G",
            "abbreviation": "C/D",
            "qualifier": "home",
            "players": [
              {
                "id": "sr:competitor:255595",
                "name": "Cerundolo, Francisco",
                "country": "Argentina",
                "country_code": "ARG",
                "abbreviation": "CER"
              },
              {
                "id": "sr:competitor:43319",
                "name": "Duran, Guillermo",
                "country": "Argentina",
                "country_code": "ARG",
                "abbreviation": "DUR"
              }
            ]
          },

This allows you to treat the team as one unit for brackets and scoring while still accessing player-level details. You can also use the doubles team’s competitor.id to pull their profile and retrieve ranking information from the Competitor Profile endpoint.



Game State Samples

Click the links below for sample data of Sport Event feeds by match sate. If the match_status differs, it is indicated after the hyphen.