Tennis Scores & Fixtures API - ATP, WTA, ITF
Pricing
from $1.00 / 1,000 results
Tennis Scores & Fixtures API - ATP, WTA, ITF
[💰 $1.00 / 1K] Get ATP, WTA, Challenger and ITF scores and fixtures, refreshed approximately hourly for live matches and twice daily for upcoming fixtures. Filter by player or tournament, track changes and send webhook alerts. No external API key required.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Fetch Finch
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Get ATP, WTA, Challenger and ITF scores and fixtures, refreshed approximately hourly for live matches and twice daily for upcoming fixtures. Filter by player or tournament, track changes and send webhook alerts. No external API key required.
What you can collect
- Live tennis match snapshots and scores
- Upcoming ATP and WTA fixtures, including Challenger and ITF-level events available in the feed
- Singles and doubles matches
- Player, tournament, round, status, score and scheduled start-time data
- Stable match IDs for integrations and recurring monitoring
- Cache freshness metadata on every result
This is a cached sports-data API, not a real-time scoring service. A live record can be up to approximately one refresh interval old, and coverage varies by tour, tournament and match.
Quick start
Current live matches
{"mode": "liveMatches","emit": "all","maxItems": 100}
Upcoming fixtures
{"mode": "upcomingMatches","date": "","formats": ["singles"],"maxItems": 200}
An empty date returns all upcoming fixtures currently in the cache. To target one day, provide the desired UTC date in YYYY-MM-DD format; do not reuse a date from this README.
Find matches involving a player
{"mode": "allCachedMatches","playerQuery": "Sinner","emit": "all","maxItems": 100}
Monitor match changes
Set a stable monitorId and schedule the Actor with the same input. The Actor remembers the previous snapshot and can emit only new or changed matches.
{"mode": "liveMatches","playerQuery": "Sinner","monitorId": "sinner-live","emit": "changes","maxCacheAgeMinutes": 90}
Detected changes include:
newMatchscoreChangedstatusChangedstartTimeChangedoddsChangedwhen odds are available
The first run of a new monitor treats matching records as new. Later runs compare them with the saved monitor state.
Send webhook alerts
Provide an HTTPS endpoint to receive one JSON batch whenever matching changes are emitted.
{"mode": "liveMatches","tournamentQuery": "Montreal","monitorId": "montreal-live","emit": "changes","webhookUrl": "https://example.com/tennis-alerts","webhookSecret": "YOUR_SIGNING_SECRET"}
When webhookSecret is supplied, the request includes an X-Tennis-Monitor-Signature HMAC-SHA256 signature.
Filters
You can combine the following inputs:
mode: live matches, upcoming matches, or bothdate: UTC match date inYYYY-MM-DDformat; leave empty for all cached fixtureseventIds: match IDs returned by an earlier runplayerQuery: case-insensitive player or team nametournamentQuery: case-insensitive tournament namestatuses: in progress, not started, finished, canceled or postponedformats: singles or doublesmaxItems: maximum number of dataset matches returned
Output and timestamps
Each dataset item represents one match and includes:
- Match and source identifiers
- Tournament, season and round
- Home and away players or doubles teams
- Match status and scheduled start time
- Set, game and point score information when available
- Match format and surface when available
- Optional odds, statistics, timeline and point-by-point fields
- Monitoring change types
- Cache freshness information
Timestamp meanings:
startTime: scheduled match start supplied by the data feed, represented in ISO 8601 UTCcacheUpdatedAt: when the shared live or fixtures snapshot was refreshedscrapedAt: when the source snapshot was collected; it is not an individual browser scrape timecacheAgeSeconds: age of the snapshot when your Actor run read itisCacheStale: whether the snapshot exceeds yourmaxCacheAgeMinutesthreshold
Stale records are returned rather than silently discarded, allowing workflows to detect a delayed refresh without losing the last available snapshot.
Pricing example
The Store price is $1 per 1,000 dataset matches, plus a $0.00005 Actor-start charge. Platform usage is included in this pricing; users are not charged a separate Apify usage fee.
For a run returning 100 matches, the event charges are approximately:
- $0.100 for 100 dataset matches
- $0.00005 for the Actor start
- no separate platform-usage charge passed to the user
- Estimated event total: $0.10005
Dataset-match charges apply to records returned by your run. The managed cache refreshes are private maintenance operations and are not counted as customer dataset matches. A run that returns no matches still incurs the $0.00005 Actor-start charge.
Coverage and freshness
Live snapshots are refreshed approximately hourly. Upcoming fixtures are refreshed twice daily. These intervals may improve as demand grows.
Coverage varies by tour, tournament and match. Odds, statistics, timelines, surface information and point-by-point data are optional and can be null. Do not use this Actor where delayed or incomplete sports data could create safety-critical or financial risk.
Usage notes
- No external API credential is required from customers.
- Use
emit: "all"for complete filtered snapshots. - Use
emit: "changes"with a stablemonitorIdfor scheduled monitoring. - Check
isCacheStalewhen freshness is important to your workflow. - Use narrow filters and an appropriate
maxItemsvalue to keep datasets compact.
This Actor aggregates data supplied by independent third-party sports-data services. It is not affiliated with or endorsed by ATP, WTA, ITF or any tournament organizer.