API Reference
Tours Calendar (Men & Women)
Tournament-level schedule and calendar filters. Use this category for which events are on the calendar โ not for individual match start times (see Upcoming Matches).
Distinct from Upcoming Matches
Tours Calendar (Men & Women) returns tournaments (start/end windows, level, surface). Upcoming Matches returns individual fixtures with players and start times.
Tournament Calendar
GET
This example uses /tennis/v2/{atp|wta}/tournament/calendar/{year}atp. Use wtafor the women's dataset.Returns all tournaments scheduled in a given calendar year.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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. |
year | Yes | integer | Year Value(2026) |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extras to load. court, rank, and country are always included by default. Additional available options:
include=rating,singlesPrize |
filter | No | string | Semicolon-separated filters in Key:value format. Available filters:
filter=TourRank:4;TourCourt:2 |
since | No | string | ISO date string ( YYYY-MM-DD). When provided, only returns tournaments starting on or after this date. Useful for listing active or upcoming tournaments. Example: since=2025-05-01 |
pageSize | No | integer | Results per page. Default: 10. Maximum 500. Walk pages with pageNo until hasNextPage is false โ do not request thousands of rows in one call. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | The page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page. |
pageNo | integer | Current page, starting at 1. Also returned as page. |
pageSize | integer | Items requested for this page. Also returned as limit. Core maximum is 500. |
hasNextPage | boolean | true if another page exists. Stop when this is false or data is empty. |
id | integer | Season ID for this yearโs edition. Use it on /tournament/info/{season_id}. |
name | string | Tournament name. URL-encode this exact string on advanced draw/seed routes. |
date | string | Start date as ISO-8601. |
tier / rankId | string | tier is the display label (e.g. ATP 250). rankId is the integer from GET /ranking โ Grand Slam is 4, not 1. |
court / courtId | object | Surface object (id, name) and its ID. |
round | object | Tournament level object (id, name), e.g. Grand Slam, Masters 1000. |
country | object | Host country: acronym (3-letter code) and name. |
link | integer | Tournament link ID shared across editions (the event, not the season). |
data[].court.id | number | Court-surface ID. |
data[].court.name | string | Court-surface name, e.g. Hard, Clay, Grass, I.hard. |
data[].round.id | number | Round ID. |
data[].round.name | string | Round label, e.g. "1/4", "Final". |
data[].country.acronym | string | Three-letter country code. |
data[].country.name | string | Country name. |
page | number | Current page number (1-based). |
limit | number | Items per page. |
Active Tournaments
GET
Returns tournaments active for the requested date (or date range). There is no stored end date โ a tournament is active when its start date falls in the tennis week (MondayโSunday) containing that day, matching how Matchstat groups the calendar. If no date is supplied, uses today (UTC). Does not mean a match is live./tennis/v2/calendar/activeQuery Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
tour | No | string | Restrict by tour: atp, wta, or both (default; all is accepted as the same). Any other value returns 400. Example: tour=atp. |
level | No | string | Tournament level name from /calendar/{tour}/filters. Example: level=Grand Slam. |
surface | No | string | Court surface name (comma-separated). Example: surface=Hard,Clay. |
country | No | string | Host country 3-letter code. Example: country=USA. |
date | No | string | Anchor day YYYY-MM-DD (defaults to today). The response covers the tennis week that contains this day. Example: date=2026-09-25. |
startDate | No | string | Range start YYYY-MM-DD. Use with endDate for custom windows (e.g. this week). Example: startDate=2026-09-21. |
endDate | No | string | Range end YYYY-MM-DD. Example: endDate=2026-09-27. |
qualifying | No | boolean | Default no: main-draw / main-week events only (rows whose name contains Qualifying are omitted). Set qualifying=yes to also return qualifying event names and IDs. Accepts yes/no, true/false, 1/0. qualify is accepted as the same parameter (the response field is qualify). |
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | Tournaments whose start date falls in the resolved week or range. |
weekStart / weekEnd | string | Tennis week (MonโSun) for a single-date query. |
rangeStart / rangeEnd | string | Resolved filter window applied to tournament start dates. |
qualify | boolean | Whether Qualifying rows were included (qualifying=yes). |
count | integer | Number of tournaments in data. |
id | integer | Season ID for this yearโs edition. Use it on /tournament/info/{season_id}. |
name | string | Tournament name. URL-encode this exact string on advanced draw/seed routes. |
tour | string | atp or wta. |
date / startDate | string | Start date as ISO-8601. |
countryAcr | string | Host country 3-letter code. |
prize | string | Prize-money label when published. |
court / courtId | object | Surface object (id, name) and its ID. |
rank / rankId | object | Tournament level object (id, name) and its ID โ Grand Slam is 4. |
data[].court.id | number | Court-surface ID. |
data[].court.name | string | Court-surface name, e.g. Hard, Clay, Grass, I.hard. |
data[].rank.id | number | Tournament level ID (TourRank). |
data[].rank.name | string | Tournament level name. |
Tournament Calendar Filter Options
GET
This example uses /tennis/v2/calendar/{atp|wta}/filtersatp. Use wtafor the women's dataset.Returns all available filter options for the calendar endpoints (Tournament Calendar with Filters), including supported years, tournament levels, and court surfaces.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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. |
Response Properties
| Field | Type | Description |
|---|---|---|
years | array | Available season years (newest first). |
levels | array | Tournament-level filter options. |
levels[] | object | One item of `levels`; its fields are listed below. |
levels[].id | number | Tournament level ID (TourRank). |
levels[].name | string | Tournament level name. |
surfaces | array | Court-surface filter options or per-surface rows. |
surfaces[] | object | One item of `surfaces`; its fields are listed below. |
surfaces[].id | number | Court-surface ID. |
surfaces[].name | string | Court-surface name. |
Grand Slam Champions
Historical Grand Slam winner rows live under Results & Historical Data โ Grand Slam Champions.