{
  "openapi": "3.0.1",
  "info": {
    "title": "Flashscore Matches Scraper: Scores, Timeline and Odds",
    "description": "Scrape Flashscore matches for football, tennis and basketball into one row per match: teams, score, half-time and period scores, status, start time and winner, for any day up to 7 days back or ahead. Add goals, cards and substitutions, and UK bookmaker odds. JSON, CSV or Excel. By MrBridge",
    "version": "0.1",
    "x-build-id": "Qplicf01gg1Ng01GW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mrbridge~flashscore-matches-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mrbridge-flashscore-matches-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/mrbridge~flashscore-matches-scraper/runs": {
      "post": {
        "operationId": "runs-sync-mrbridge-flashscore-matches-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/mrbridge~flashscore-matches-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-mrbridge-flashscore-matches-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": {
          "sports": {
            "title": "Sports",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Sports to read, one feed per sport and day. At least one.",
            "items": {
              "type": "string",
              "enum": [
                "football",
                "tennis",
                "basketball"
              ]
            },
            "default": [
              "football"
            ]
          },
          "dateOffsets": {
            "title": "Day offsets",
            "type": "array",
            "description": "Days from today (UTC), as Flashscore counts its days: 0 is today, -1 yesterday, 1 tomorrow. Integers from -7 to 7. Today is part of the selection only when this list holds 0.",
            "default": [
              0
            ]
          },
          "dates": {
            "title": "Dates",
            "type": "array",
            "description": "Calendar days as YYYY-MM-DD, within 7 days of today (UTC). Added to the day offsets.",
            "items": {
              "type": "string"
            }
          },
          "leagues": {
            "title": "Leagues",
            "type": "array",
            "description": "Keep only these tournaments, up to 100, case ignored. Each entry is a full header (ALGERIA: Ligue 2), a tournament ID (MJijSTCe), a path with or without slashes (football/algeria/ligue-2) or a path without the sport (algeria/ligue-2). Empty: all tournaments.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum matches",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on the match rows returned and billed, from 1 to 10000. The run stops once that many rows are delivered.",
            "default": 100
          },
          "includeTimeline": {
            "title": "⏩ Add-on: Include match timeline ($)",
            "type": "boolean",
            "description": "For each football match that has started, open its summary and add the timeline of incidents (goals, assists, cards, substitutions) in the timeline column. A match whose timeline has at least one incident is billed one extra match-timeline event. Matches not played yet, postponed or cancelled get an empty timeline and no request. Tennis and basketball rows are not changed (timeline null). A summary that cannot be read leaves timeline null, the match row is still returned and not billed that event. This option adds one request per football match: for large runs, raise the run timeout.",
            "default": false
          },
          "includeOdds": {
            "title": "⏩ Add-on: Include odds ($)",
            "type": "boolean",
            "description": "For each match (football, tennis, basketball), read the betting odds of the operators listed in the United Kingdom and add them to the odds column: operator, market, scope, outcome, line, current and opening decimal odds. A match with at least one odds element is billed one extra match-odds event. Cancelled, postponed and abandoned matches get no request (odds null). Odds that cannot be read leave odds null, the match row is still returned and not billed that event. This option adds one request per match: for large runs, raise the run timeout.",
            "default": false
          },
          "oddsMarkets": {
            "title": "Odds markets",
            "minItems": 1,
            "type": "array",
            "description": "Markets kept in the odds column when the odds add-on is on. At least one. ALL keeps every market. A full answer can hold more than 1 700 odds, most of them correct scores: the default keeps the row light.",
            "items": {
              "type": "string",
              "enum": [
                "HOME_DRAW_AWAY",
                "HOME_AWAY",
                "OVER_UNDER",
                "BOTH_TEAMS_TO_SCORE",
                "DOUBLE_CHANCE",
                "DRAW_NO_BET",
                "ODD_OR_EVEN",
                "CORRECT_SCORE",
                "HALF_FULL_TIME",
                "ASIAN_HANDICAP",
                "EUROPEAN_HANDICAP",
                "ALL"
              ],
              "enumTitles": [
                "Match result 1X2",
                "Winner (home or away)",
                "Over/under",
                "Both teams to score",
                "Double chance",
                "Draw no bet",
                "Odd or even",
                "Correct score",
                "Half time/full time",
                "Asian handicap",
                "European handicap",
                "All markets"
              ]
            },
            "default": [
              "HOME_DRAW_AWAY",
              "HOME_AWAY",
              "OVER_UNDER",
              "BOTH_TEAMS_TO_SCORE",
              "DOUBLE_CHANCE"
            ]
          },
          "internalCaptureMode": {
            "title": "Internal capture mode",
            "type": "boolean",
            "description": "Maintainer only. Not for normal use: runs the capture plan named below instead of the scraper.",
            "default": false
          },
          "capturePlan": {
            "title": "Capture plan",
            "type": "string",
            "description": "Maintainer only. Name of a closed capture campaign (flashscore-2026-11, flashscore-2026-11b or flashscore-2026-11c). Requires Internal capture mode. The allowlist lives in the code: any other value is rejected without issuing a request."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}