{
  "openapi": "3.0.1",
  "info": {
    "title": "OneFootball Scraper - News, Fixtures, Results & Standings",
    "description": "Scrape public OneFootball data including football news, upcoming fixtures, match results and league tables. Get clean, structured data for teams, competitions and matches in one place.",
    "version": "0.1",
    "x-build-id": "LETEsi9NBlZuaeBbS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~onefootball-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-onefootball-com-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/abotapi~onefootball-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-onefootball-com-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/abotapi~onefootball-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-onefootball-com-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Where to collect from: the competitions, teams and news feeds you pick below, or your own OneFootball links.",
            "default": "search"
          },
          "competitions": {
            "title": "Competitions",
            "type": "array",
            "description": "Only read when mode = search. One entry per competition: the link slug or the full competition link, e.g. premier-league-9, bundesliga-1, laliga-10, serie-a-13, ligue-1-23. Each competition yields its news, fixtures, results and (for leagues) its table. Find slugs on any competition page link.",
            "items": {
              "type": "string"
            }
          },
          "teams": {
            "title": "Teams (optional)",
            "type": "array",
            "description": "Only read when mode = search. One entry per team: the link slug or the full team link, e.g. arsenal-2 or real-madrid-1915. Each team yields its news and its recent and upcoming matches.",
            "items": {
              "type": "string"
            }
          },
          "includeGlobalNews": {
            "title": "Global news feed",
            "type": "boolean",
            "description": "Only read when mode = search. Also read the site-wide front-page news feed (the latest headlines across all competitions, in the selected language).",
            "default": false
          },
          "urls": {
            "title": "OneFootball links",
            "type": "array",
            "description": "Only read when mode = my own links. Paste competition pages (optionally with /fixtures, /results or /table at the end), team pages, match pages, news article pages, or the home feed. Each link is read exactly as pasted; the page it names decides what is collected. Left untouched, this field holds one example of every supported link shape (home feed, competition news / fixtures / results / table, team news / fixtures / results, match, article, localized competition links). A ?page= parameter is not followed: the link is read from its first page and the run is flagged as partial scope.",
            "default": [
              "https://onefootball.com/en/news/serie-a-milan-2-4-bologna-mbangula-hat-trick-inflicts-first-amorim-league-defeat-43687788",
              "https://onefootball.com/en/home",
              "https://onefootball.com/en/competition/premier-league-9",
              "https://onefootball.com/en/competition/premier-league-9/fixtures",
              "https://onefootball.com/en/competition/premier-league-9/results",
              "https://onefootball.com/en/competition/premier-league-9/table",
              "https://onefootball.com/en/team/arsenal-2",
              "https://onefootball.com/en/team/arsenal-2/fixtures",
              "https://onefootball.com/en/team/arsenal-2/results",
              "https://onefootball.com/en/team/arsenal-2/news",
              "https://onefootball.com/en/match/2693644",
              "https://onefootball.com/de/competition/bundesliga-1",
              "https://onefootball.com/es/competicion/laliga-10"
            ],
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Content language",
            "enum": [
              "en"
            ],
            "type": "string",
            "description": "Language of the news feeds, team pages and match pages. The site serves other languages only partially, so English is the one reliably complete edition; article links you paste are read in their own language when the site serves them.",
            "default": "en"
          },
          "includeNews": {
            "title": "News",
            "type": "boolean",
            "description": "Collect news articles from competitions, teams and the global feed.",
            "default": true
          },
          "includeFixtures": {
            "title": "Fixtures",
            "type": "boolean",
            "description": "Collect upcoming matches from competitions and teams.",
            "default": true
          },
          "includeResults": {
            "title": "Results",
            "type": "boolean",
            "description": "Collect played matches with final scores from competitions and teams.",
            "default": true
          },
          "includeTable": {
            "title": "League table",
            "type": "boolean",
            "description": "Collect league-table rows (position, played, won, drawn, lost, goal difference, points) from competitions that have one.",
            "default": true
          },
          "dateFrom": {
            "title": "From date",
            "type": "string",
            "description": "Keep only matches (by kickoff day) and news (by publish day) on or after this date, format YYYY-MM-DD. League table rows are never narrowed."
          },
          "dateTo": {
            "title": "To date",
            "type": "string",
            "description": "Keep only matches and news on or before this date, format YYYY-MM-DD."
          },
          "matchStatus": {
            "title": "Match status",
            "enum": [
              "any",
              "scheduled",
              "live",
              "finished"
            ],
            "type": "string",
            "description": "Narrow match rows: scheduled (not started), live (in play or at half time), or finished. News is not affected.",
            "default": "any"
          },
          "query": {
            "title": "Text filter",
            "type": "string",
            "description": "Keep only rows whose title, preview, team names or competition name contain this text (case-insensitive)."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "default",
              "date",
              "title"
            ],
            "type": "string",
            "description": "Order rows within each source: date (kickoff or publish time) or title (news title or home team). Default keeps the site order.",
            "default": "default"
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Direction used when Sort by is not the site order.",
            "default": "asc"
          },
          "fetchDetails": {
            "title": "Read full article text",
            "type": "boolean",
            "description": "Open each news article's own page and add the full article text to the record. Off by default: a run without it is cheaper and still carries titles, previews, publishers and timestamps.",
            "default": false
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many records across the whole run (0 = the highest allowed cap, 100000; the walk ends earlier when the sources run out). Values above 100000 are read as 100000. News, matches and table rows all count.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per source",
            "minimum": 0,
            "type": "integer",
            "description": "Runaway guard: an upper bound on how many pages are read for any single news feed. Leave 0 to go as deep as the source serves, with the record cap above as the only real limit.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Connection used for every request. The site's content API answers on the standard connection pool; a residential pool also works but costs more per byte. You can also paste your own connection links.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Continue a previous run",
            "type": "string",
            "description": "Paste the run id (or dataset id) of an earlier run of this Actor to continue it. Records that run already returned are skipped, so an interrupted large collection can finish without paying for the same rows twice. Leave empty for a normal run."
          },
          "incrementalMode": {
            "title": "Recurring updates (only return what changed)",
            "type": "boolean",
            "description": "Turn this on for daily or weekly monitoring. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED records, each labelled in a changeType column. Scores, table numbers and article text are watched, so a match that finished or a row that moved counts as UPDATED. Leave off for a normal one-off run.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, recurring updates only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its memory stable, or to deliberately share one memory across differently configured runs. Leave empty and the memory is keyed on the run setup automatically."
          },
          "emitUnchanged": {
            "title": "Also return unchanged records (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, labelled UNCHANGED. This returns, and bills, rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Also return records that are gone (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present before and are no longer found, labelled EXPIRED (for example a match or article that scrolled out of every source). Only produced when a run covered its whole setup, so a capped or continued run never reports records as gone. This returns, and bills, extra rows.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Optional. Field names to leave out when deciding whether a record changed, in addition to the built-in handling (read order, source labels and relative times such as \"9 minutes ago\" already never trigger an UPDATED). Use it when another field turns out to be noisy in your setup. Use a dotted name such as homeTeam.name to ignore a field inside a nested object. The field is still returned in the output; it just does not count as a change.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output.",
            "items": {
              "type": "string"
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}