Update Frequencies
Every API call spends quota, so match your polling cadence to how often each feed actually changes. This page gives the cache behavior (TTL) of every Tennis API feed, how the underlying data updates, and a recommended pull cadence for live and non-live situations.
TTL Is a Cache Floor, Not a Poll RateA feed's TTL is how long a response is served from cache before it can refresh: it is the fastest a poll could ever see new data, not an instruction to poll that fast. Several feeds carry a short TTL while their data changes far less often. Choose your cadence from the Data Updates column and your product's needs, and treat the TTL as a lower bound.
Live coverage noteThe live cadences below apply to matches whose coverage includes live scores and play-by-play. For lower-tier competitions, score updates may arrive only post-match; see Data Coverage and Tiers.
Frequency Chart: Tennis API
| Feed | TTL (cache) | Data updates | Recommended pull (non-live) | Recommended pull (live) |
|---|---|---|---|---|
| Competitions / Competitions by Category / Competition Info | 5 minutes | As competitions are added or renamed | Daily | n/a |
| Competition Seasons / Seasons | 5 minutes | As editions are added (rolling window) | Daily | n/a |
| Complexes | 5 minutes | Rarely | Weekly | n/a |
| Rankings / Race Rankings / Doubles rankings | 5 minutes | Weekly (Mondays), plus corrections | Daily; Mondays after publication | n/a |
| Competitor Profile / Competitor Summaries / Doubles Competitions Played | 5 minutes | After each match a competitor plays | Daily, or after tracked matches close | n/a |
| Competitor vs Competitor | 1 minute | After each meeting between the pair | Before displaying a head-to-head | n/a |
| Season Info / Season Competitors / Season Links / Season Summaries | 5 minutes | Through a season as draws fill and matches complete | Daily pre-season; hourly during an event | 10 to 15 minutes during play windows |
| Season Standings | 10 seconds | After each round-robin match | Daily | 1 to 5 minutes during ties |
| Season Probabilities | 1 minute | As markets move | Daily | n/a |
| Daily Summaries | 5 minutes | Through the day as matches complete | Every 1 to 4 hours | 10 to 15 minutes on match days |
| Live Summaries / Live Timelines / Live Timelines Delta | 1 second | Point by point during live play | n/a (empty when nothing is live) | 1 to 3 seconds |
| Sport Event Summary (live match) | 1 second | Point by point | n/a | 1 to 3 seconds for the featured match |
| Sport Event Summary / Timeline (closed match) | 6 minutes | Post-match corrections, then stable | Once at closed, re-pull next day for corrections | n/a |
| Sport Events Created | 5 minutes | As fixtures are created | Daily | n/a |
| Sport Events Updated / Removed | 1 minute | As fixtures change or are removed | Every 1 to 4 hours | Hourly |
| Competitor Merge Mappings | 5 minutes | As merges occur | Daily | n/a |
Frequency Chart: Tennis Probabilities API
| Feed | TTL (cache) | Data updates | Recommended pull (non-live) | Recommended pull (live) |
|---|---|---|---|---|
| Live Probabilities | 1 second | Point by point for covered live matches | n/a | 1 to 3 seconds |
| Sport Event Probabilities | 1 second | As the pre-match market moves, then in play | Hourly pre-match | 1 to 3 seconds |
| Timeline Probabilities | 1 second | As probability points are appended | Once after closed | n/a |
| Season Outright Probabilities | 1 minute | As outright markets move | Daily when published | n/a |
| Sport Event Upcoming Probabilities | n/a (not cached) | With the upcoming window | Hourly | n/a |
The recommended pull columns are guidance to build from, not entitlements; tune them to your quota and product.
Reading TTL from Responses
Every response carries its cache policy in the cache-control header:
cache-control: max-age=1, public, s-maxage=1max-age is the TTL in seconds. If you see no-cache, private on a feed that normally carries a max-age, treat it as transient and rely on the recurring value.
Keeping a Store in Sync
Three feeds exist to reconcile your store without re-pulling everything: Sport Events Created (new fixtures, with created_at), Sport Events Updated (changed fixtures), and Sport Events Removed (deleted fixtures). Pair them with Competitor Merge Mappings for player identity changes. The full workflow is in Monitoring Data Changes.
Best Practices
- Drive live polling off match status: ramp up when a tracked match goes
live, and stop atclosed. See Match Status Workflow. - Poll the three live feeds only while something is live; each returns an empty envelope on a quiet day.
- Rankings publish weekly: a Monday refresh plus a daily safety pull covers them without waste.
- On HTTP 429, slow your request rate and retry, increasing the wait between attempts.
- Re-pull a closed match's summary and timeline the following day: post-match corrections are part of coverage for most tiers.
Updated 2 days ago
