{
  "openapi": "3.0.1",
  "info": {
    "title": "Tennis Scraper - Live Scores, Stats, Point-by-Point & Odds",
    "description": "Tennis scores, results and fixtures for ATP, WTA, Challenger and ITF: match statistics for each set, point-by-point, odds from every bookmaker with opening prices, head-to-head, player profiles and rankings. Ask by date, player or tournament; no ids needed.",
    "version": "0.1",
    "x-build-id": "w4c9lFnQ2cem81iOc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~tennis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-tennis-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/akhil_rajesh~tennis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-tennis-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/akhil_rajesh~tennis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-tennis-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to get",
            "enum": [
              "matches",
              "players",
              "tournaments",
              "rankings"
            ],
            "type": "string",
            "description": "Matches: matches by day (7 days back or forward) or live now. Players: a player's profile and recent matches. Tournaments: every match of a tournament season, with rounds, back to 2004. Rankings: ATP and WTA ranking lists.",
            "default": "matches"
          },
          "date": {
            "title": "Date",
            "type": "string",
            "description": "Matches mode: 'today', 'yesterday', 'tomorrow' or a date such as 2026-09-25 (UTC). Up to 7 days back or forward.",
            "default": "today"
          },
          "days": {
            "title": "Number of days",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Matches mode: how many days from the date. 3 with date 'yesterday' reads yesterday, today and tomorrow.",
            "default": 1
          },
          "status": {
            "title": "Match status",
            "type": "array",
            "description": "Keep only live, finished or scheduled matches. Empty keeps all. 'live' alone reads what's on court now, whatever the date says.",
            "items": {
              "type": "string",
              "enum": [
                "live",
                "finished",
                "scheduled"
              ],
              "enumTitles": [
                "Live now",
                "Finished",
                "Scheduled"
              ]
            },
            "default": []
          },
          "tours": {
            "title": "Tours",
            "type": "array",
            "description": "Keep only these tours. Empty keeps all. Team competitions give the ties between teams; their single matches are listed under ATP or WTA.",
            "items": {
              "type": "string",
              "enum": [
                "atp",
                "wta",
                "atp-challenger",
                "wta-125",
                "itf-men",
                "itf-women",
                "teams",
                "exhibition",
                "other"
              ],
              "enumTitles": [
                "ATP",
                "WTA",
                "ATP Challenger",
                "WTA 125",
                "ITF men",
                "ITF women",
                "Team competitions (Davis Cup, Laver Cup...)",
                "Exhibitions",
                "Other"
              ]
            },
            "default": []
          },
          "matchType": {
            "title": "Singles or doubles",
            "enum": [
              "singles",
              "doubles",
              "both"
            ],
            "type": "string",
            "description": "Singles, doubles or both.",
            "default": "singles"
          },
          "players": {
            "title": "Players",
            "type": "array",
            "description": "Matches mode: keep only matches with these players. Players mode: the players to look up. A surname, with the first name if you like ('Sinner', 'Coco Gauff', 'J. Sinner'), or a Flashscore player link.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tournaments": {
            "title": "Tournaments",
            "type": "array",
            "description": "Matches mode: keep only these tournaments (part of the name, e.g. 'Beijing', or a tournament link). Tournaments mode: the tournaments to read, by name ('Wimbledon') or Flashscore tournament link; a link to one season ('…/wimbledon-2024/') reads that season.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "matchUrls": {
            "title": "Match links",
            "type": "array",
            "description": "Matches mode: exact matches by Flashscore match link or 8-character match id, live and upcoming ones included. When given, the date and filters are not used.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeStatistics": {
            "title": "Match statistics",
            "type": "boolean",
            "description": "Aces, double faults, first and second serve, return points, break points saved and converted, games and points won, for the whole match and for each set. ATP, WTA and Challenger matches have them; ITF matches don't.",
            "default": false
          },
          "includePointByPoint": {
            "title": "Point-by-point",
            "type": "boolean",
            "description": "Every game's points, the server, breaks, break points, set points and match points, and tiebreaks point by point.",
            "default": false
          },
          "includeOdds": {
            "title": "Odds",
            "type": "boolean",
            "description": "Match-winner odds from every bookmaker Flashscore lists, with the opening price: the average, the best and each bookmaker's price. For finished matches the price is the closing one.",
            "default": false
          },
          "includeAllOddsMarkets": {
            "title": "All odds markets",
            "type": "boolean",
            "description": "Also set winners, total games over/under, handicaps, correct score and odd/even, per bookmaker. Turns Odds on.",
            "default": false
          },
          "includeHeadToHead": {
            "title": "Head-to-head and form",
            "type": "boolean",
            "description": "Past meetings of the two players and each player's last 10 matches with results, counting only what came before this match.",
            "default": false
          },
          "includePlayerRankings": {
            "title": "Players' current ranking",
            "type": "boolean",
            "description": "Add each player's current ATP or WTA ranking to the match: the singles ranking for singles, the doubles ranking for doubles.",
            "default": true
          },
          "onlyChanges": {
            "title": "Only new or changed matches",
            "type": "boolean",
            "description": "For scheduled runs: output only matches that are new since the last run of the same search, or whose status, score, live points or odds changed. Unchanged matches are not output or charged. Max results caps what each run outputs; the rest come in the next runs. Each search keeps its own history.",
            "default": false
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Optional. Name of the store that remembers earlier runs. Empty gives each search its own; set the same name on several schedules to share one."
          },
          "maxMatchesPerPlayer": {
            "title": "Matches per player",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Players mode: how many of each player's latest matches to add (up to about 40 singles are available). 0 returns the profile only.",
            "default": 20
          },
          "includePlayerProfiles": {
            "title": "Height, weight, playing hand",
            "type": "boolean",
            "description": "Players mode: height, weight, birth date, playing hand and highest ranking, from TennisExplorer.",
            "default": true
          },
          "seasons": {
            "title": "Seasons",
            "type": "array",
            "description": "Tournaments mode: years to read, such as 2024. Empty reads the current season, including matches still to come.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rankings": {
            "title": "Ranking lists",
            "type": "array",
            "description": "Rankings mode: which lists to read.",
            "items": {
              "type": "string",
              "enum": [
                "atp",
                "wta",
                "atp-race",
                "wta-race",
                "atp-doubles",
                "wta-doubles",
                "atp-doubles-race",
                "wta-doubles-race"
              ],
              "enumTitles": [
                "ATP singles",
                "WTA singles",
                "ATP race",
                "WTA race",
                "ATP doubles",
                "WTA doubles",
                "ATP doubles race",
                "WTA doubles race"
              ]
            },
            "default": [
              "atp",
              "wta"
            ]
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most matches to return (per ranking list in Rankings mode). When a day has more, ATP, WTA and team events come first, then Challenger, WTA 125 and exhibitions, then ITF, each group live matches first, then by start time. Tournaments mode gives the main draw first, latest round first; Players mode shares the number among the players.",
            "default": 100
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. The sources answer ordinary requests, so no proxy is needed."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}