API Reference

Player Profiles & Career Stats

Core player routes use a numeric ID. Use these for profile, stats, matches, surface, and filters. Extra endpoints at the bottom (career statistics, name search, status, next match, photos) are not replacements for the core routes.

โ„น๏ธ
Player ID or name
  • Every player route on this page accepts the numeric player ID (for example 68074) or the display name (Carlos Alcaraz); both return the same response. Names match within the tour in the path; a name shared by several players returns 400 listing their IDs, so prefer IDs when you have them.
  • Hyphenated slugs such as alcaraz-carlos are not names: they find no player.
  • GET /tennis/v2/search?search=Carlos%20Alcaraz returns names, not IDs. Take numeric IDs from rankings, fixtures, or /tennis/v2/{atp|wta}/player.

Players List

โš ๏ธ
Default list is alphabetical Aโ†’Z

Page 1 of GET /player starts at sparse / ITF rows (empty names can appear). For confidence in examples use Rankings or Player Profile with a known ID (e.g. Sinner 47275, Alcaraz 68074). The sample below shows top players for illustration.

GET/tennis/v2/{atp|wta}/player
This example uses atp. Use wtafor the women's dataset.Returns a paginated list of players on the selected tour, including each player's numeric ID, display name, country, and current ranking snapshot. Sorted alphabetically by name (a full directory); use the rankings endpoints for top players, or search to find one player's ID. Add filter=PlayerGroup:singles to skip doubles pairs.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extra objects to add. Available: country โ€” adds a full country object to each player.
Example: include=country
filterNostring
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • PlayerCountry:{ESP,ITA} โ€” filter by 3-letter country acronym
Example:filter=PlayerGroup:singles;PlayerCountry:ESP,ITA
pageSizeNointeger
Results per page. When omitted, the endpoint's own default applies (100 on most list endpoints; some use 50 or 500), and the response's pageSize shows the value used. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player?filter=PlayerGroup:singles&pageSize=10' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerNumeric player ID for core player and fixture routes.
namestringDisplay name. URL-encode this on name-based /profile routes.
countryAcrstring3-letter country code, e.g. ESP.
currentRankintegerCurrent singles ranking position, or null if unranked.
pointsintegerCurrent ranking points, or null if unranked.
progressintegerPlaces gained or lost versus the previous list (negative = dropped).
data[].birthdaynullDate of birth (ISO-8601), or null when unknown.
data[].heightnullHeight in cm, or null when unknown.
data[].wikidata_idstringWikidata ID of the player, or empty string.
data[].countryobjectCountry: { name, acronym }.
data[].country.namestringCountry name.
data[].country.acronymstringThree-letter country code.
data[].informationnullBiography details (turned pro, height/weight, birthplace, residence, plays, social links), or null.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Player Profile by ID

GET/tennis/v2/{atp|wta}/player/profile/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns full profile details for one player, by numeric ID or display name (both return the same profile).

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras to load. Available:
  • form โ€” appends recent form as a form array (e.g.["w","l","w"])
  • ranking โ€” appends curRank and bestRank objects with ranking history data
  • country โ€” appends a full country object (name, acronym, flag) to the player
Example: include=form,ranking,country
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/profile/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataobjectThe player profile object.
idintegerNumeric player ID.
namestringDisplay name.
birthdaystringDate of birth as ISO-8601.
countryAcrstring3-letter country code.
currentRank / points / progressintegerLatest official ranking snapshot.
playerStatusstringe.g. Active.
informationobjectBio: turnedPro, height, weight, plays, coach, social links.
countryobjectPresent when include contains country: name and acronym.
data.playerStatusstringCareer status: Active or Retired.
data.coachstringCoach name, or null.
data.idnumberNumeric ID of this item (see the parent object: match, player, tournament, live event, โ€ฆ).
data.namestringDisplay name.
data.birthdaystringDate of birth (ISO-8601), or null when unknown.
data.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
data.currentRanknumberCurrent singles ranking position from the latest ranking list (same source as the ranking endpoints), or null.
data.progressnumberRanking positions gained (+) or lost (โˆ’) in the latest ranking week.
data.pointsnumberRanking points from the latest ranking list (same value as the ranking endpoints).
data.heightnullHeight in cm, or null when unknown.
data.wikidata_idnullWikidata ID of the player, or empty string.
data.countryobjectCountry: { name, acronym }.
data.country.namestringCountry name.
data.country.acronymstringThree-letter country code.
data.informationobjectBiography details (turned pro, height/weight, birthplace, residence, plays, social links), or null.
data.information.idnumberNumeric ID of this item (see the parent object: match, player, tournament, live event, โ€ฆ).
data.information.turnedProstringYear the player turned professional (string).
data.information.weightstringWeight in kg (string).
data.information.heightstringHeight in cm, or null when unknown.
data.information.birthplacestringPlace of birth.
data.information.residencestringCurrent residence.
data.information.playsstringHandedness and backhand, e.g. "Right-Handed, Two-Handed Backhand".
data.information.coachstringCoach name, or null.
data.information.sitenullOfficial website URL, or null.
data.information.twitterstringSocial profile link as stored; some rows hold an ATP profile URL instead.
data.information.pagestringProfile page URL on an external site as stored (empty when unknown). Not a page number.
data.information.instagramstringInstagram profile URL.
data.information.facebookstringFacebook page URL.
data.rankingDatestringDate of the ranking list that currentRank and points come from.

Player Titles

GET/tennis/v2/{atp|wta}/player/titles/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns a player's finals record grouped by tournament level (ITF, Challenger, main tour, Masters, Grand Slam and more): titles won and finals lost at each level. For the list of individual finals, use Player Finals by ID. No pagination.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/titles/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayOne row per tournament level.
tourRankIdintegerLevel ID (0 = ITF $10K, 1 = Challenger/ITF >$10K, 4 = Grand Slam, โ€ฆ).
tourRankstringLevel name.
titlesWon / titlesLoststringFinals won and lost at that level.

Player Match Stats by ID

GET/tennis/v2/{atp|wta}/player/match-stats/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns aggregated match statistics for a player (win/loss records, ace counts, break point stats, etc.)

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/match-stats/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataobjectResponse payload: the list or object documented in the rows below.
data.serviceStatsobjectServe statistics totals.
data.serviceStats.acesGmnumberAces served. Counted over the matches in this selection.
data.serviceStats.doubleFaultsGmnumberDouble faults. Counted over the matches in this selection.
data.serviceStats.firstServeGmnumberFirst serves in. Counted over the matches in this selection.
data.serviceStats.firstServeOfGmnumberFirst-serve attempts. Counted over the matches in this selection.
data.serviceStats.winningOnFirstServeGmnumberPoints won on first serve. Counted over the matches in this selection.
data.serviceStats.winningOnFirstServeOfGmnumberPoints played on first serve. Counted over the matches in this selection.
data.serviceStats.winningOnSecondServeGmnumberPoints won on second serve. Counted over the matches in this selection.
data.serviceStats.winningOnSecondServeOfGmnumberPoints played on second serve. Counted over the matches in this selection.
data.rtnStatsobjectReturn statistics: the opponents' serve totals in the player's matches.
data.rtnStats.acesGmnumberAces served. Counted over the matches in this selection.
data.rtnStats.doubleFaultsGmnumberDouble faults. Counted over the matches in this selection.
data.rtnStats.firstServeGmnumberFirst serves in. Counted over the matches in this selection.
data.rtnStats.firstServeOfGmnumberFirst-serve attempts. Counted over the matches in this selection.
data.rtnStats.winningOnFirstServeGmnumberPoints won on first serve. Counted over the matches in this selection.
data.rtnStats.winningOnFirstServeOfGmnumberPoints played on first serve. Counted over the matches in this selection.
data.rtnStats.winningOnSecondServeGmnumberPoints won on second serve. Counted over the matches in this selection.
data.rtnStats.winningOnSecondServeOfGmnumberPoints played on second serve. Counted over the matches in this selection.
data.breakPointsServeStatsobjectBreak points on serve: faced and saved.
data.breakPointsServeStats.breakPointFacedGmnumberBreak points faced on serve. Counted over the matches in this selection.
data.breakPointsServeStats.breakPointSavedGmnumberBreak points saved on serve. Counted over the matches in this selection.
data.breakPointsRtnStatsobjectBreak points on return: chances and converted.
data.breakPointsRtnStats.breakPointChanceGmnumberBreak-point chances on return. Counted over the matches in this selection.
data.breakPointsRtnStats.breakPointWonGmnumberBreak points converted on return. Counted over the matches in this selection.

Player Past Matches by ID

GET/tennis/v2/{atp|wta}/player/past-matches/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns completed match results for a player, most recent first. On these rows player1 is the winner. odd1 / odd2 are Marathonbet's pre-match prices for player1 / player2; when the stored values were null they are filled from the Marathonbet odds archive by player ID. Doubles sides also carry members: [{id, name}] for the two players (id null when the name is not unique).

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extra objects to add. round returns the human-readable tournament round associated with roundId, for example Quarter-Final, Semi-Final or Final (full lookup: GET /tennis/v2/round). Also tournament,tournament.court, tournament.rank, tournament.country,stat (per-match serve & return stats).
Example:include=round,tournament.court,stat
filterNostring
Semicolon-separated filters in Key:value format. Available filters:
  • GameYear:{2024,2025} โ€” filter by year(s)
  • GameRound:{1,2} โ€” filter by round ID(s)
  • GameCourt:{1,2} โ€” court ID(s) from GET /court (1 Hard, 2 Clay, 3 I.hard, 4 Carpet, 5 Grass)
  • TourRank:{4} โ€” rank_id from GET /ranking (Grand Slam is 4)
  • PlayerGroup:singles โ€” singles, doubles or both
  • GameTour:{20340} โ€” filter by tournament ID(s)
Example: filter=GameYear:2025;GameCourt:2. Unknown filter names return 400 listing the supported ones.
pageSizeNointeger
Results per page. When omitted, the endpoint's own default applies (100 on most list endpoints; some use 50 or 500), and the response's pageSize shows the value used. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/past-matches/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player ยท Tournament.

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerCompleted-match archive ID (not a live event id). Not permanent: completed matches are renumbered when the results archive is reloaded. A recent result's id usually changes within about a day, and an old id can later belong to a different match. To store or link a match, keep its liveMatchId instead (player1Id-player2Id-tournamentId-roundId, built from this row), which /tennis/v2/matches/{matchId} accepts with the players in either order.
datestringMatch date/time as ISO-8601. Exception: for lower-level events (TourRank 0 ITF $10K and TourRank 1 Challenger/ITF > $10K) from 2005โ€“2015, only the tournament start date is available, so every match of that draw carries the tournament start date; order those matches by roundId.
resultstringScore string from the winner's (player1's) side, e.g. 6-4 6-3. Retirements and walkovers carry ret. / w/o in the score.
player1Id / player2IdintegerOn completed matches, player1 is always the winner and player2 the loser.
tournamentId / roundIdintegerEvent edition and round.
odd1 / odd2string | nullMarathonbet pre-match match-winner prices: odd1 is player1's price, odd2 player2's. When the stored values were null (the archive lists the pair the other way round, e.g. winner first), they are filled from the Marathonbet odds archive, matched by player ID. null when Marathonbet has no price; other bookmakers and markets: links.odds (/matches/{matchId}/odds). Often null on older matches.
player1 / player2objectid, name, countryAcr. Doubles sides (name A/B) also carry members: [{ id, name }, { id, name }], the two players resolved by exact name; id is null when no player, or more than one, has that name.
data[].matchIdstringMatch ID (same value as id on core match rows).
data[].match_winnernumberPlayer ID of the match winner.
data[].result_typestringHow the match ended: completed, retired, walkover or default.
data[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
data[].tournamentobjectTournament object (id, name, date, level, surface, country, โ€ฆ).
data[].tournament.idnumberTournament season ID.
data[].tournament.namestringTournament name.
data[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, โ€ฆ
data[].tournament.datestringTournament start date (ISO-8601 UTC).
data[].tournament.rankIdnumberTournament level ID (TourRank, see GET /tennis/v2/ranking): 0 ITF $10K, 1 Challenger/ITF > $10K, 2 Main tour, 3 Masters, 4 Grand Slam, 5 Davis/Fed Cup, 7 Tour finals, โ€ฆ
data[].tournament.countryAcrstringThree-letter country code of the tournament.
data[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data[].tournament.ranknullTournament level: { id, name }.
data[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.
data[].oddsAvailablebooleantrue when the odds archive has pre-match prices for this match; links.odds then returns them (both bookmakers).
data[].linksobjectReady-made URLs for this match's detail routes.
data[].links.oddsstringURL of the archived pre-match odds for this match (both bookmakers); present when oddsAvailable is true.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Player Surface Summary by ID

GET/tennis/v2/{atp|wta}/player/surface-summary/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns win/loss records broken down by court surface (hard, clay, grass, carpet, indoor hard)

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/surface-summary/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].yearnumberSeason year.
data[].surfacesarrayCourt-surface filter options or per-surface rows.
data[].surfaces[]objectOne item of `data[].surfaces`; its fields are listed below.
data[].surfaces[].courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, โ€ฆ
data[].surfaces[].courtstringCourt-surface name.
data[].surfaces[].courtWinsnumberMatches won on this surface.
data[].surfaces[].courtLossesnumberMatches lost on this surface.

Player Performance Breakdown by ID

GET/tennis/v2/{atp|wta}/player/perf-breakdown/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns granular performance metrics including serve, return, and pressure statistics.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/perf-breakdown/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Returns { data: {...} } with serve, return, pressure, and situational win-rate fields โ€” similar to H2H Stats. The exact keys vary by player. Returns { data: null } if no performance data is available.

Response Properties

FieldTypeDescription
dataobjectResponse payload: the list or object documented in the rows below.
data.{year}objectSeason breakdown for this year (keys are years; dynamic).
data.{year}.courtobjectWin/loss by surface, keyed by court ID.
data.{year}.court.{courtId}numberWin/loss on this surface: w, l (aw, al = all levels).
data.{year}.court.{courtId}.wnumberMatches won.
data.{year}.court.{courtId}.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.court.{courtId}.lnumberMatches lost.
data.{year}.court.{courtId}.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.roundobjectWin/loss by round, keyed by round ID.
data.{year}.round.{roundId}objectWin/loss in this round: w, l (aw, al = all levels).
data.{year}.round.{roundId}.wnumberMatches won.
data.{year}.round.{roundId}.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.round.{roundId}.lnumberMatches lost.
data.{year}.round.{roundId}.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rankobjectRecord against ranked opponents: top1 โ€ฆ top100.
data.{year}.rank.top1objectRecord against world No. 1: aw = wins, al = losses.
data.{year}.rank.top1.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top1.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rank.top5objectRecord against top-5 opponents: aw = wins, al = losses.
data.{year}.rank.top5.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top5.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rank.top10objectRecord against top-10 opponents: aw = wins, al = losses.
data.{year}.rank.top10.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top10.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rank.top20objectRecord against top-20 opponents: aw = wins, al = losses.
data.{year}.rank.top20.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top20.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rank.top50objectRecord against top-50 opponents: aw = wins, al = losses.
data.{year}.rank.top50.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top50.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.rank.top100objectRecord against top-100 opponents: aw = wins, al = losses.
data.{year}.rank.top100.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.rank.top100.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.levelobjectWin/loss by tournament level (aw = wins, al = losses, all levels counted).
data.{year}.level.mastersobjectMasters record.
data.{year}.level.masters.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.masters.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.tourFinalsobjectTour Finals record.
data.{year}.level.tourFinals.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.tourFinals.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.mainTourobjectMain-tour record.
data.{year}.level.mainTour.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.mainTour.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.grandSlamobjectGrand Slam record.
data.{year}.level.grandSlam.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.grandSlam.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.cupsobjectDavis/Fed Cup record.
data.{year}.level.cups.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.cups.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.futuresobjectITF/Futures record.
data.{year}.level.futures.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.futures.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.challengersobjectChallenger record.
data.{year}.level.challengers.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.challengers.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.level.totalobjectAll tournament levels combined: aw = wins, al = losses.
data.{year}.level.total.awnumberMatches won including all levels (ITF, Challenger, qualifying); w excludes them.
data.{year}.level.total.alnumberMatches lost including all levels (ITF, Challenger, qualifying); l excludes them.
data.{year}.levelFinalsobjectFinals won (w) and lost (l) by tournament level.
data.{year}.levelFinals.mastersobjectMasters record.
data.{year}.levelFinals.masters.wnumberMatches won.
data.{year}.levelFinals.masters.lnumberMatches lost.
data.{year}.levelFinals.tourFinalsobjectTour Finals record.
data.{year}.levelFinals.tourFinals.wnumberMatches won.
data.{year}.levelFinals.tourFinals.lnumberMatches lost.
data.{year}.levelFinals.mainTourobjectMain-tour record.
data.{year}.levelFinals.mainTour.wnumberMatches won.
data.{year}.levelFinals.mainTour.lnumberMatches lost.
data.{year}.levelFinals.grandSlamobjectGrand Slam record.
data.{year}.levelFinals.grandSlam.wnumberMatches won.
data.{year}.levelFinals.grandSlam.lnumberMatches lost.
data.{year}.levelFinals.cupsobjectDavis/Fed Cup record.
data.{year}.levelFinals.cups.wnumberMatches won.
data.{year}.levelFinals.cups.lnumberMatches lost.
data.{year}.levelFinals.futuresobjectITF/Futures record.
data.{year}.levelFinals.futures.wnumberMatches won.
data.{year}.levelFinals.futures.lnumberMatches lost.
data.{year}.levelFinals.challengersobjectChallenger record.
data.{year}.levelFinals.challengers.wnumberMatches won.
data.{year}.levelFinals.challengers.lnumberMatches lost.
data.{year}.levelFinals.totalobjectFinals at all levels combined: w = won, l = lost.
data.{year}.levelFinals.total.wnumberMatches won.
data.{year}.levelFinals.total.lnumberMatches lost.

Player Finals by ID

GET/tennis/v2/{atp|wta}/player/finals/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns all finals appearances (won and lost) for a player.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.

Query Parameter

ParameterRequiredTypeDescription
filterNostring
Semicolon-separated filters in Key:value format. Available filters:
  • GameYear:{2024,2025} โ€” filter by year(s)
  • GameRound:{1,2} โ€” filter by round ID(s)
  • GameCourt:{1,2} โ€” court ID(s) from GET /court (1 Hard, 2 Clay, 3 I.hard, 4 Carpet, 5 Grass)
  • TourRank:{4} โ€” rank_id from GET /ranking (Grand Slam is 4)
  • PlayerGroup:singles โ€” singles, doubles or both
  • GameTour:{20340} โ€” filter by tournament ID(s)
Example: filter=GameYear:2024,2025;TourRank:4
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/finals/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Returns { data: [...] } โ€” same match record structure as Past Matches. Only final-round matches are included (roundId = 12 for standard events, roundId = 16 for Tour Finals round-robin). Includes tournament prize field and optional country object for the host nation.

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player ยท Tournament.

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, โ€ฆ).
data[].matchIdstringMatch ID (same value as id on core match rows).
data[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0โ€“3 are qualifying rounds.
data[].player1IdnumberNumeric ID of player 1.
data[].player2IdnumberNumeric ID of player 2.
data[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data[].match_winnernumberPlayer ID of the match winner.
data[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data[].result_typestringHow the match ended: completed, retired, walkover or default.
data[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data[].odd1nullOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data[].odd2nullPre-match/closing odds retained for player 2, or null when not available.
data[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
data[].tournamentobjectTournament object (id, name, date, level, surface, country, โ€ฆ).
data[].tournament.idnumberTournament season ID.
data[].tournament.namestringTournament name.
data[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, โ€ฆ
data[].tournament.datestringTournament start date (ISO-8601 UTC).
data[].tournament.rankIdnumberTournament level ID (TourRank, see GET /tennis/v2/ranking): 0 ITF $10K, 1 Challenger/ITF > $10K, 2 Main tour, 3 Masters, 4 Grand Slam, 5 Davis/Fed Cup, 7 Tour finals, โ€ฆ
data[].tournament.countryAcrstringThree-letter country code of the tournament.
data[].tournament.prizestringPrize money as shown by the source, e.g. "$48.9M" (string), or null.
data[].tournament.courtobjectCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data[].tournament.court.idnumberCourt-surface ID.
data[].tournament.court.namestringCourt surface name, e.g. Hard, Clay, Grass, I.hard.
data[].tournament.rankobjectTournament level: { id, name }.
data[].tournament.rank.idnumberTournament level ID (TourRank).
data[].tournament.rank.namestringTournament level name, e.g. "Main tour".
data[].tournament.countryobjectCountry of the tournament: three-letter code, or { name, acronym }.
data[].tournament.country.namestringCountry name.
data[].tournament.country.acronymstringThree-letter country code.

Interesting H2H for Player by ID

GET/tennis/v2/{atp|wta}/player/interesting-h2h/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns notable head-to-head records for a player (most wins, biggest rivals, etc.). On every row the requested player is player1.
โ„น๏ธ
Old spelling still works

The original misspelled path /player/intersting-h2h/{player_id} keeps working for existing integrations; both return the same response.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/interesting-h2h/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player.

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player1.winsnumberHead-to-head wins of player 1 against player 2 (integer).
data[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
data[].player2.winsnumberHead-to-head wins of player 2 against player 1 (integer).

Player Filter Options by ID

GET/tennis/v2/{atp|wta}/player/filter/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns available filter categories and metadata for a player (used to build UI filter panels)

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/filter/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataobjectResponse payload: the list or object documented in the rows below.
data.roundsarrayRound filter options.
data.rounds[]objectOne item of `data.rounds`; its fields are listed below.
data.rounds[].roundIdnumberRound ID.
data.rounds[].roundstringRound label.
data.courtsarrayCourt-surface filter options.
data.courts[]objectOne item of `data.courts`; its fields are listed below.
data.courts[].courtIdnumberCourt-surface ID.
data.courts[].courtstringCourt-surface name.
data.tournamentsarrayTournaments.
data.tournaments[]objectOne item of `data.tournaments`; its fields are listed below.
data.tournaments[].tournamentIdnumberTournament season ID.
data.tournaments[].tournamentstringTournament name.
data.tournaments[].tournamentDatestringTournament start date (ISO-8601).
data.tournamentRanksarrayTournament levels the player has played: rankId, rank.
data.tournamentRanks[]objectOne item of `data.tournamentRanks`; its fields are listed below.
data.tournamentRanks[].rankIdnumberTournament level ID.
data.tournamentRanks[].rankstringTournament level name.
data.gameYearsarraySeasons in which the player has matches (newest first).

Player Tournament Record

GET/tennis/v2/{atp|wta}/player/tournament-record/{player_id}/{tournament_id}
This example uses atp. Use wtafor the women's dataset.Returns a player's career record at a specific tournament, one entry per year.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.
tournament_idYesinteger
Any season ID from that tournament family. All historical editions of the same event are included.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/player/tournament-record/68074/21317' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].yearnumberSeason year.
data[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data[].tournamentNamestringTournament display name.
data[].bestRoundIdnumberRound ID of the furthest round reached.
data[].bestRoundstringFurthest round reached, e.g. "Second", "Final".
data[].winsnumberWins (see the endpoint description for what is counted).
data[].lossesnumberLosses.

Extra player endpoints

These are not the same as the core profile, stats, or match routes above. Use them for career statistics, player search by name, status, the next scheduled match, or photos.

Player Career Statistics

GET/tennis/v2/profile/{player_id_or_name}/statistics
Retrieve a player's comprehensive career statistics, including recent match results, current and highest rankings, performance across tournament categories, overall win/loss record, favorite playing surface, and career titles and finals.

Path Parameter

ParameterRequiredTypeDescription
player_id_or_nameYesstring
Display name (Carlos Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
typeNostring
Use with a numeric player ID to choose the men's or women's player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name.
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/profile/Jannik%20Sinner/statistics' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
recentGamesarrayLast 10 results as w or l (most recent first).
currentRankintegerCurrent singles ranking, or null if unranked.
bestRank.position / bestRank.dateobjectCareer-high rank and the date it was reached.
mainTours / tourFinals / master / grandSlam / cups / futures / challengers / totalobjectWin/loss objects for that category.
favouriteCourtobjectwins, losses, surfaceId, surface.
totalTitles / totalTitlesWon / totalFinalsWonintegerCareer title counts.
bestRankobjectCareer-high ranking: position and the date it was first reached.
favouriteCourt.winsnumberWins (see the endpoint description for what is counted).
favouriteCourt.lossesnumberLosses.
favouriteCourt.surfaceIdnumberCourt-surface ID (same values as courtId).
favouriteCourt.surfacestringCourt surface name.
GET/tennis/v2/profile/search/{name}/{atp|wta}
This example uses atp. Use wtafor the women's dataset.Search for tennis players by surname and tour type (atp/wta), returning a list of matching player names.

Path Parameter

ParameterRequiredTypeDescription
nameYesstring
Player display name (URL-encoded).
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.

Query Parameter

ParameterRequiredTypeDescription
pageNointeger
Page number, starting at 1. pageNo is accepted as an alias on every route. Example: page=1
limitNointeger
Results per page. pageSize is accepted as an alias on every route. Default varies by endpoint. Example: limit=10
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/profile/search/Sinner/atp' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
[]array<string>Matching player display names (plain strings, not objects). Use a name with the profile routes, or search /tennis/v2/search for IDs.

Player Status

GET/tennis/v2/profile/{player_id_or_name}/player-status
Retrieve the current status of a tennis player, such as whether they are Active or Inactive.

Path Parameter

ParameterRequiredTypeDescription
player_id_or_nameYesstring
Display name (Carlos Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
typeNostring
Use with a numeric player ID to choose the men's or women's player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/profile/Jannik%20Sinner/player-status' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
statusstringCurrent player status, e.g. Active or Inactive.

Player Upcoming Match

โ„น๏ธ
Time-bound example

Returns rows only while the player has a match on the schedule; otherwise the list is empty ([]). The example (Daniil Medvedev, Almaty, October 2026) is empty once his Almaty run ends. For a player with a current match, take player1 / player2 from Today's Fixtures (/tennis/v2/{atp|wta}/fixtures).

GET/tennis/v2/profile/{player_id_or_name}/upcoming
Returns the player's next scheduled match if one is available.

Path Parameter

ParameterRequiredTypeDescription
player_id_or_nameYesstring
Display name (Carlos Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
typeNostring
Use with a numeric player ID to choose the men's or women's player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/profile/Daniil%20Medvedev/upcoming' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player ยท Tournament.

FieldTypeDescription
[]objectOne item of the response; its fields are listed below.
[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
[].tournamentobjectTournament object (id, name, date, level, surface, country, โ€ฆ).
[].tournament.idnumberTournament season ID.
[].tournament.namestringTournament name.
[].tournament.datestringTournament start date (ISO-8601 UTC).
[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0โ€“3 are qualifying rounds.
[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
[].player1.namestringPlayer 1 name.
[].player1.seedstringTournament seed as a string, or null when unseeded.
[].player1.oddstringPre-match match-winner odds for this player (decimal), as a string; null when not available.
[].player1.countryAcrstringPlayer 1 country code.
[].player1.imagestringPlayer photo path on this API (append to the base URL).
[].player1.image_p_namestringPlayer photo path keyed by player name (alternative to image).
[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
[].player2.namestringPlayer 2 name.
[].player2.seednullTournament seed as a string, or null when unseeded.
[].player2.oddstringPre-match match-winner odds for this player (decimal), as a string; null when not available.
[].player2.countryAcrstringPlayer 2 country code.
[].player2.imagestringPlayer photo path on this API (append to the base URL).
[].player2.image_p_namestringPlayer photo path keyed by player name (alternative to image).
[].h2hstringCareer head-to-head as "player1Wins-player2Wins", e.g. "4-1".

Player Image (JPEG)

GET/tennis/v2/ms-api/uploads/Photo/{atp|wta}/{player_id}.jpg
This example uses atp. Use wtafor the women's dataset.Returns the player photograph as a JPEG. Use the image path from a profile or H2H payload โ€” the file name is the player id padded to five digits (Carlos Alcaraz is 68074.jpg). HTTP 200 with Content-Type image/jpeg; the body is the image, not JSON.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesstring
Five-digit player id in the file name. Example: 68074 (id 68074, Carlos Alcaraz).
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/uploads/Photo/atp/68074.jpg' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Successful responses are JPEG bytes (Content-Type: image/jpeg), the same image shown in the RapidAPI Image tab.

Response Properties

FieldTypeDescription
Content-Typestringimage/jpeg
BodybinaryThe photograph. Do not parse this response as JSON.