tennis-data
ATP and WTA tennis data via ESPN public endpoints — tournament scores, season calendars, player rankings, player profiles, and news. Zero config, no API keys. Use when: user asks about tennis scores, match results, tournament draws, ATP/WTA rankings, tennis player info, or tennis news. Don't use when: user asks about other sports — use football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). For betting odds use polymarket or kalshi. For news use sports-news. Don't use for live point-by-point data — scores update after each set/match.
How do I install this agent skill?
npx skills add https://github.com/machina-sports/sports-skills --skill tennis-dataIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The tennis-data skill is safe. It provides a set of tools to query ATP and WTA tennis data from public ESPN endpoints, including scores, rankings, and calendars. No security risks such as code execution, data exfiltration, or prompt injection were detected.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
- Runlayerpass
5 files scanned · No issues
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
Tennis Data (ATP + WTA)
Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills tennis get_scoreboard --tour=atp
sports-skills tennis get_rankings --tour=wta
sports-skills tennis get_calendar --tour=atp --year=2026
CRITICAL: Before Any Query
CRITICAL: Before calling any data endpoint, verify:
- The
tourparameter is specified (atporwta) — there is no default. - Year is derived from the system prompt's
currentDate— never hardcoded.
The tour Parameter
Most commands require --tour=atp or --tour=wta:
- ATP: Men's professional tennis tour
- WTA: Women's professional tennis tour
If the user doesn't specify, ask which tour or show both by calling the command twice.
Commands
| Command | Description |
|---|---|
get_scoreboard | Live/recent tournament scores for a tour |
get_rankings | ATP or WTA player rankings |
get_calendar | Full season tournament calendar |
get_player_info | Individual tennis player profile |
get_news | Tennis news articles |
See references/api-reference.md for full parameter lists and return shapes.
Workflows
Live Tournament Check
get_scoreboard --tour=<atp|wta>- Present current matches by round.
- For player info, use
get_player_info --player_id=<id>.
Rankings Lookup
get_rankings --tour=<atp|wta> --limit=20- Present rankings with points and trend.
Season Calendar
get_calendar --tour=<atp|wta> --year=<year>- Filter for specific tournament.
Examples
Example 1: Live matches User says: "What ATP matches are happening right now?" Actions:
- Call
get_scoreboard(tour="atp")Result: Current tournament matches organized by round with scores and status
Example 2: Women's rankings User says: "Show me the WTA rankings" Actions:
- Call
get_rankings(tour="wta", limit=20)Result: Top 20 WTA players with rank, name, points, and trend
Example 3: Upcoming Grand Slam date User says: "When is the French Open this year?" Actions:
- Derive year from
currentDate - Call
get_calendar(tour="atp", year=<derived_year>) - Search results for "Roland Garros" (the French Open's official name) Result: French Open dates, location (Paris), and surface (clay)
Commands that DO NOT exist — never call these
— does not exist. Useget_matchesget_scoreboardfor current match scores.— does not exist. Tournament draw data is not available via this API.get_draw— does not exist. Head-to-head records are not available via this API.get_head_to_head— does not exist. Tennis usesget_standingsget_rankings, not standings.— does not exist. ESPN publishes no per-match statistics for tennis (aces, double faults, break points): scoreboardget_match_statsstatisticslists are empty and the per-match stats endpoint returns "No competitor stats found", even for Grand Slam finals. Only set scores are available.
If a command is not listed in the Commands table above, it does not exist.
Troubleshooting
Error: get_scoreboard returns no matches
Cause: Tennis tournaments run specific weeks; no tournament may be scheduled this week
Solution: Call get_calendar(tour=...) to find when the next event is scheduled
Error: Rankings are empty Cause: Rankings update weekly on Mondays; there may be a brief update window Solution: The command auto-retries previous weeks. If still empty, retry in a few minutes
Error: Player profile fails
Cause: Player ID is incorrect
Solution: Use get_rankings to find player IDs from the current rankings list, or verify via ESPN tennis URLs
Error: Scores seem delayed or don't update live
Cause: Scores update after each set/match is completed, not point-by-point
Solution: This is expected behavior. Refresh get_scoreboard periodically for updated set scores
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/machina-sports/sports-skills/tennis-data">View tennis-data on skillZs</a>