{
  "openapi": "3.0.1",
  "info": {
    "title": "Forebet Football Predictions Scraper",
    "description": "[💰 $0.1 / 1K] Extract Forebet football predictions for any date — 1X2 probabilities, correct score, over/under 2.5, both teams to score, half-time, HT/FT, double chance, Asian handicap, corners, cards and goalscorers, plus value bets and results.",
    "version": "1.0",
    "x-build-id": "nxp7pyWlunLeP3YGd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~forebet-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-forebet-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/solidcode~forebet-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-forebet-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/solidcode~forebet-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-forebet-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": {
          "matchScope": {
            "title": "Which matches",
            "enum": [
              "byDate",
              "valueBets",
              "topTips",
              "liveNow"
            ],
            "type": "string",
            "description": "Choose the set of matches to collect. 'Matches on chosen dates' is the normal option and uses the date settings below. The other three are Forebet's own curated lists — Forebet publishes each of them as a single ready-made page, so for those three both the date settings AND the prediction-market choice are ignored, and you always get Forebet's match-result (1X2) columns for whatever it is featuring right now."
          },
          "predictionMarkets": {
            "title": "Prediction markets",
            "type": "array",
            "description": "Markets to merge onto each match row. Each market you pick is one page load per date; picking more markets makes each row wider, not the result list longer. The ORDER matters: the first market you pick is the one the 'Minimum confidence' filter is measured against, and the one the accuracy flags describe (the row also tells you which, in 'accuracyMarket'). Coverage differs by market: Corners, Cards and Likely goalscorers publish Forebet's full daily fixture list (300+ on a busy Saturday), while 1X2, Under/Over 2.5, Both teams to score, Half-time, HT/FT, Double chance and Asian handicap publish only Forebet's top ~44 fixtures per day. If you pick only markets from that second group you will get up to ~44 matches per date. Add Corners or Cards for full daily coverage — matches outside Forebet's top ~44 will simply have the other markets' fields empty. Very large requests (many dates x many markets) are bounded by a ten-minute collection budget: if it is reached the run finishes early with everything collected up to that point and says so in the run log. Ignored when 'Which matches' is set to one of Forebet's curated lists.",
            "items": {
              "type": "string",
              "enum": [
                "match1x2",
                "underOver25",
                "bothTeamsToScore",
                "halfTime",
                "halfTimeFullTime",
                "doubleChance",
                "asianHandicap",
                "corners",
                "cards",
                "goalscorers"
              ],
              "enumTitles": [
                "Match result 1X2 — home / draw / away probabilities",
                "Over / under 2.5 goals",
                "Both teams to score",
                "Half-time result",
                "Half-time / full-time combination",
                "Double chance (1X, 12, 2X)",
                "Asian handicap",
                "Corners — predicted total and over / under 9.5",
                "Cards — predicted total and over / under",
                "Likely goalscorers — top 3 players with probabilities"
              ]
            }
          },
          "dateRange": {
            "title": "Dates",
            "enum": [
              "today",
              "tomorrow",
              "todayAndTomorrow",
              "weekend",
              "yesterday",
              "next3Days",
              "next7Days"
            ],
            "type": "string",
            "description": "A quick pick for the days you want. 'Yesterday' and past dates come back with the final score and a flag showing whether Forebet's prediction was right, which is what you want for testing a strategy. Forebet publishes roughly 29 days of history and 15 days of upcoming fixtures — dates outside that window are skipped and reported in the run log. Ignored unless 'Which matches' is set to 'Matches on chosen dates'."
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "First day to collect, written as YYYY-MM-DD, for example 2026-08-01. Fill this in to override the quick pick above. Leave empty to use the quick pick. Kick-off times are published in Forebet's own Central European timezone, and 00:00 means Forebet has not confirmed a kick-off time for that fixture yet. Forebet publishes roughly 29 days of history and 15 days of upcoming fixtures — dates outside that window are skipped and reported in the run log."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Last day to collect, written as YYYY-MM-DD. Leave empty and only the start date is collected. Every day in the range is fetched, so a long range means a long run — a week is a comfortable maximum. Forebet publishes roughly 29 days of history and 15 days of upcoming fixtures — dates outside that window are skipped and reported in the run log. Ranges longer than 120 days are shortened to 120 days from the start date, and collection stops after a ten-minute budget: if that is reached the run finishes early with everything collected up to that point and says so in the run log."
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only matches from these countries, for example England, Spain, Brazil, Germany. Not case sensitive and partial names work. Leave empty to keep every country. Note that continental competitions such as the Champions League or Copa Libertadores have no country on Forebet, so setting a country filter excludes them. Forebet serves a whole day in one go, so this filter cuts down the results you are charged for rather than making the run slower.",
            "items": {
              "type": "string"
            }
          },
          "leagues": {
            "title": "Leagues and competitions",
            "type": "array",
            "description": "Keep only matches from these competitions, for example Premier League, La Liga, Serie A, Champions League, MLS. Not case sensitive and partial names work. Leave empty to keep every competition.",
            "items": {
              "type": "string"
            }
          },
          "minProbability": {
            "title": "Minimum confidence (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep matches where Forebet's most likely outcome for the FIRST market in 'Prediction markets' is at least this confident — enter 60 for 60%. Reorder that list to measure the confidence against a different market; the run log names the one in use. If a match has no figure for that market, the best confidence available for it is used instead, and matches with no probability figure at all (a likely-goalscorers-only run publishes none) are kept rather than dropped. Leave empty to keep every match."
          },
          "maxResults": {
            "title": "Maximum matches",
            "minimum": 0,
            "type": "integer",
            "description": "The most matches to return in total, counted after any filters. Matches are ordered by kick-off time, so you get the earliest ones first; fixtures Forebet has not yet given a kick-off time to (shown as 00:00, or with no time at all) come last within their day. A busy Saturday can carry well over 300 fixtures across all competitions worldwide, so this is your safety net. Leave empty for the default of 100, or set 0 for no limit."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}