{
  "openapi": "3.0.1",
  "info": {
    "title": "Football API Scraper — Fixtures, Standings & Match Data",
    "description": "Football API scraper for fixtures, results, live scores, league standings, squads, transfers, match lineups, per-player ratings, xG statistics and betting odds. 18 operations across leagues, teams, players and matches, one clean JSON dataset per run.",
    "version": "1.0",
    "x-build-id": "g8Z3creXSHcIxfUjN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~football-api-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-football-api-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/sian.agency~football-api-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-football-api-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/sian.agency~football-api-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-football-api-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": [
          "operation"
        ],
        "properties": {
          "operation": {
            "title": "Operation",
            "enum": [
              "leagueFixtures",
              "leagueStandings",
              "leagueTopTeams",
              "leagueSearch",
              "leagueSeasons",
              "teamFixtures",
              "teamSquad",
              "teamTransfers",
              "teamProfile",
              "teamSeasonStats",
              "playerProfile",
              "matchDetails",
              "matchLineups",
              "matchIncidents",
              "matchStatistics",
              "matchOdds",
              "matchBestPlayers",
              "liveMatches"
            ],
            "type": "string",
            "description": "⚽ Which football dataset to extract. League operations need a Competition ID (plus a Season ID); team operations need a Team ID; match operations need a Match ID; liveMatches needs nothing. Start with leagueSearch to find a Competition ID, then leagueSeasons for its Season IDs. Defaults are set to the English Premier League 25/26.",
            "default": "leagueFixtures"
          },
          "tournamentId": {
            "title": "Competition ID",
            "minimum": 1,
            "type": "integer",
            "description": "🏆 Numeric competition ID. Required by leagueFixtures, leagueStandings, leagueTopTeams, leagueSeasons and teamSeasonStats. Use the leagueSearch operation to look one up. Examples: 17 = English Premier League, 8 = LaLiga, 35 = Bundesliga, 23 = Serie A, 34 = Ligue 1, 7 = UEFA Champions League.",
            "default": 17
          },
          "seasonId": {
            "title": "Season ID",
            "minimum": 1,
            "type": "integer",
            "description": "📅 Numeric season ID inside the competition. Required by leagueFixtures, leagueStandings, leagueTopTeams and teamSeasonStats. Use the leagueSeasons operation to list them. Example: 76986 = Premier League 25/26. A season that has not kicked off yet has standings but no team statistics.",
            "default": 76986
          },
          "teamId": {
            "title": "Team ID",
            "minimum": 1,
            "type": "integer",
            "description": "🛡️ Numeric club or national-team ID. Required by teamFixtures, teamSquad, teamTransfers, teamProfile and teamSeasonStats. Team IDs appear in every fixture and standings row. Examples: 17 = Manchester City, 44 = Liverpool, 42 = Arsenal, 2829 = Real Madrid, 2817 = Barcelona.",
            "default": 17
          },
          "playerId": {
            "title": "Player ID",
            "minimum": 1,
            "type": "integer",
            "description": "👤 Numeric player ID. Required by playerProfile. Player IDs appear in teamSquad, matchLineups and matchIncidents rows. Example: 839956 = Erling Haaland.",
            "default": 839956
          },
          "matchId": {
            "title": "Match ID",
            "minimum": 1,
            "type": "integer",
            "description": "⚽ Numeric match ID. Required by matchDetails, matchLineups, matchIncidents, matchStatistics, matchOdds and matchBestPlayers. Match IDs appear in every leagueFixtures, teamFixtures and liveMatches row.",
            "default": 12436564
          },
          "query": {
            "title": "Competition search",
            "type": "string",
            "description": "🔍 Competition name to search for. Used only by leagueSearch. Matches leagues, cups and international tournaments — for example \"Premier League\", \"Champions League\", \"Copa Libertadores\".",
            "default": "Premier League"
          },
          "span": {
            "title": "Fixture window",
            "enum": [
              "last",
              "next"
            ],
            "type": "string",
            "description": "🕒 Which matches to return for leagueFixtures and teamFixtures. Played = finished matches with final scores. Upcoming = scheduled matches. A finished season has no upcoming matches, so Upcoming automatically falls back to Played.",
            "default": "last"
          },
          "standingsType": {
            "title": "Standings split",
            "enum": [
              "total",
              "home",
              "away"
            ],
            "type": "string",
            "description": "🏆 Which league table to return for leagueStandings. Full = the complete table. Home = points won at home only. Away = points won away only. The home/away splits are the ones form and betting models actually need.",
            "default": "total"
          },
          "page": {
            "title": "Starting page",
            "minimum": 0,
            "type": "integer",
            "description": "📄 Zero-based first page for the paginated operations (leagueFixtures, teamFixtures). Each page returns up to 30 matches.",
            "default": 0
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "📄 How many pages to fetch for the paginated operations. 30 matches per page. Pagination stops early when the competition reports no further pages.",
            "default": 3
          },
          "maxResults": {
            "title": "Max rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "🎚️ Safety cap on how many rows one run saves. The run stops as soon as the cap is reached, so you are never charged for more rows than you asked for.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}