{
  "openapi": "3.0.1",
  "info": {
    "title": "Flashscore Tennis Scraper - Live Scores, Results & Set Scores",
    "description": "For tennis bettors, analysts and score apps: ATP, WTA, Challenger and ITF matches with players, round, start time, set scores with tiebreaks, winner, server and live game score. 535 of 535 matches matched Flashscore's page in a 3-day check. Monitoring returns only matches that changed.",
    "version": "0.1",
    "x-build-id": "moEeV27jG149vlJJU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~flashscore-tennis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-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/neverempty~flashscore-tennis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-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/neverempty~flashscore-tennis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-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": {
          "days": {
            "title": "Days",
            "type": "array",
            "description": "Which days to read: today, yesterday, tomorrow, a number of days from today (-7 to 7), or a date as YYYY-MM-DD. Flashscore's daily feed covers 7 days back and 7 days ahead of today; other days are refused before anything is requested. Empty = today. Each day is read once; a match is returned under the day Flashscore's own page lists it on.",
            "items": {
              "type": "string"
            }
          },
          "utcOffsetHours": {
            "title": "Time zone (hours from UTC)",
            "minimum": -12,
            "maximum": 14,
            "type": "integer",
            "description": "Where a day starts and ends, as on Flashscore when your browser is in that time zone. 0 = UTC. Example: -5 for New York in winter, 1 for Paris in winter, 9 for Tokyo. startTime is always in UTC.",
            "default": 0
          },
          "tours": {
            "title": "Tours",
            "type": "array",
            "description": "Keep only these tours. Empty = all. Challenger Women are WTA 125 events. Teams = Davis Cup / Billie Jean King Cup / Laver Cup ties (one row per tie); the individual Davis Cup rubbers are listed under ATP.",
            "items": {
              "type": "string",
              "enum": [
                "atp",
                "wta",
                "challenger-men",
                "challenger-women",
                "itf-men",
                "itf-women",
                "teams-men",
                "teams-women",
                "other"
              ],
              "enumTitles": [
                "ATP",
                "WTA",
                "Challenger Men",
                "Challenger Women (WTA 125)",
                "ITF Men",
                "ITF Women",
                "Teams - Men",
                "Teams - Women",
                "Other (anything Flashscore adds later)"
              ]
            },
            "default": []
          },
          "matchTypes": {
            "title": "Singles, doubles or team ties",
            "type": "array",
            "description": "Keep only these. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "singles",
                "doubles",
                "teams"
              ],
              "enumTitles": [
                "Singles",
                "Doubles",
                "Team ties"
              ]
            },
            "default": []
          },
          "matchStatuses": {
            "title": "Match status",
            "type": "array",
            "description": "Keep only these. live = in play (also sets and tiebreaks in progress). finished = finished, retired, walkover or awarded. scheduled = not started. other = cancelled, interrupted, postponed, delayed and similar. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "live",
                "finished",
                "scheduled",
                "other"
              ],
              "enumTitles": [
                "Live",
                "Finished",
                "Scheduled",
                "Other (cancelled, interrupted, postponed...)"
              ]
            },
            "default": []
          },
          "players": {
            "title": "Only these players",
            "type": "array",
            "description": "Keep a match only if one of these appears in either side's name or name slug (case-insensitive, partial). Flashscore writes names as 'Sinner J.' and slugs as 'sinner-jannik', so sinner or jannik both work. Doubles partners are matched too.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tournaments": {
            "title": "Only these tournaments",
            "type": "array",
            "description": "Keep a match only if the tournament header contains one of these (case-insensitive, partial). Example: us open, davis cup, qualification.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeRound": {
            "title": "Add the round (Final, 1/16-finals...)",
            "type": "boolean",
            "description": "The round is not in Flashscore's daily feed. On = one extra small request per returned match to read it from the match page (only the first 32 KB are read). Off = faster, round is null.",
            "default": true
          },
          "maxMatches": {
            "title": "Maximum matches to return",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many match rows to return. You are charged for the rows you actually receive. A busy day carries 200-400 matches across all tours. Not used in monitoring mode, which always checks every match that fits your input.",
            "default": 200
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only matches that changed",
            "type": "boolean",
            "description": "Off = return every match that fits your input. On = remember the last row returned for each match and, on later runs, return only matches whose score or status changed (see Change detail). The first run returns everything. Each match compared is a check with a small fee, also the first time; a match already returned as finished that has not changed is not charged. For a schedule that runs across midnight use days yesterday and today, and keep finished in Match status, or final results can be missed. Remembered per filter set, for 10 days.",
            "default": false
          },
          "changeDetail": {
            "title": "Change detail",
            "enum": [
              "status",
              "games",
              "points"
            ],
            "type": "string",
            "description": "What counts as a change in monitoring mode. status = any change of Flashscore's match status (start, end, next set, tiebreak, break, medical timeout and similar) or of the sets won. games = also every game won in any set (and tiebreak points). points = also every point of the current game and the server.",
            "default": "games"
          },
          "resetMonitoringState": {
            "title": "Forget what was already returned",
            "type": "boolean",
            "description": "Clear the remembered rows for this filter set before this run, so every match counts as new again.",
            "default": false
          },
          "useProxy": {
            "title": "Use an Apify proxy if Flashscore refuses a request",
            "type": "boolean",
            "description": "The feed answered from a plain Apify datacentre address when this Actor was built (2026-09-21). On = if Flashscore answers 401, 403, 429 or 503, the request is retried through a proxy. Off = retried directly, then returned as a free row.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}