{
  "openapi": "3.0.1",
  "info": {
    "title": "Flashscore Tennis Scraper — Live Scores, Results & Stats",
    "description": "Scrape every tennis match on Flashscore for any day in its 9-day window — ATP, WTA, Challenger and ITF, singles and doubles — with set-by-set scores, tiebreaks, winner, live game state, players, country, surface, and optional full match statistics. No API key.",
    "version": "0.1",
    "x-build-id": "eoplmWHy11leGgG8I"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~flashscore-tennis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-flashscore-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/scrapersdelight~flashscore-tennis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-flashscore-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/scrapersdelight~flashscore-tennis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-flashscore-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": {
          "daysBack": {
            "title": "Days back",
            "minimum": 0,
            "maximum": 7,
            "type": "integer",
            "description": "How many past days to scrape, counting back from today. 0 = today only, 7 = the full week of results Flashscore keeps online. Flashscore serves nothing older than 7 days, so this is capped at 7.",
            "default": 1
          },
          "includeTomorrow": {
            "title": "Include tomorrow's fixtures",
            "type": "boolean",
            "description": "Also scrape the next day's schedule. Flashscore publishes tennis one day ahead and no further, so this is the only forward-looking day available.",
            "default": true
          },
          "dates": {
            "title": "Specific dates",
            "type": "array",
            "description": "Scrape exact calendar dates as YYYY-MM-DD, e.g. 2026-09-01. Overrides Days back / Include tomorrow. Any date outside Flashscore's 7-days-back to 1-day-ahead window is skipped with a warning in the log.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "timezoneOffset": {
            "title": "Timezone offset (hours from UTC)",
            "minimum": -12,
            "maximum": 14,
            "type": "integer",
            "description": "Which timezone decides where one day ends and the next begins, and how start times are grouped. 0 = UTC (default), -5 = US Eastern, 1 = Central Europe. Match start times are always returned in UTC ISO format regardless.",
            "default": 0
          },
          "tours": {
            "title": "Tours",
            "type": "array",
            "description": "Only return matches from these tours. Values seen live: ATP, WTA, CHALLENGER MEN, CHALLENGER WOMEN, ITF MEN, ITF WOMEN. Case-insensitive, partial match allowed (\"ITF\" catches both ITF tours). Leave empty for every tour.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "discipline": {
            "title": "Singles or doubles",
            "enum": [
              "any",
              "singles",
              "doubles"
            ],
            "type": "string",
            "description": "Restrict to singles or doubles matches. Doubles rows carry both partners per side.",
            "default": "any"
          },
          "matchStatus": {
            "title": "Match status",
            "enum": [
              "any",
              "scheduled",
              "live",
              "finished"
            ],
            "type": "string",
            "description": "Restrict to scheduled (not started), live (in progress right now) or finished matches. `any` returns all three.",
            "default": "any"
          },
          "surfaces": {
            "title": "Surfaces",
            "type": "array",
            "description": "Only return matches played on these surfaces, e.g. hard, clay, grass. Flashscore prints the surface on the tournament header; matches whose header carries no surface are excluded when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tournamentQuery": {
            "title": "Tournament contains",
            "type": "array",
            "description": "Only return matches whose tournament name contains one of these strings, e.g. \"US Open\" or \"M15\". Case-insensitive substring match.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "playerQuery": {
            "title": "Player contains",
            "type": "array",
            "description": "Only return matches involving a player whose name contains one of these strings, e.g. \"Djokovic\". Flashscore prints names as \"Surname X.\", so search by surname. Case-insensitive substring match.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeStats": {
            "title": "Include match statistics",
            "type": "boolean",
            "description": "Fetch the full statistics sheet for every finished or live match: aces, double faults, 1st/2nd serve percentages and points won, break points saved and converted, average serve speeds, winners, unforced errors, net points, service/return/total points and games won, and distance covered — for the match and for each individual set. Costs one extra request per match, and is charged at the same per-match rate (no extra fee). Scheduled matches are skipped automatically because they have no statistics yet.",
            "default": false
          },
          "statsConcurrency": {
            "title": "Statistics concurrency",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many statistics requests to run in parallel when Include match statistics is on. 8 is comfortable; raise it for very large date ranges, lower it if you see blocked requests in the log.",
            "default": 8
          },
          "maxItems": {
            "title": "Max matches",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many matches. A busy tennis day is roughly 500-600 matches across all tours, so the default is deliberately small — raise it once you know the scope you want. 0 = no limit.",
            "default": 300
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The Flashscore feed answered 200 from Apify's own network, from Apify datacenter proxies and from Apify residential proxies when this actor was built, so no proxy is needed by default. Switch one on if you run very large sweeps and want the requests spread across IPs.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}