{
  "openapi": "3.0.1",
  "info": {
    "title": "Sofascore Team & Player Data Scraper",
    "description": "Scrape football, basketball and hockey clubs and athletes from Sofascore. Squads with market values and contracts, player bios, radar attributes, transfer history, match logs with ratings and full season statistics. Expand a club into every player in one run. No API key, no login.",
    "version": "1.0",
    "x-build-id": "vkdflBGiWepGhBd1P"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/incognito_mode~sofascore-team-player-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-incognito_mode-sofascore-team-player-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/incognito_mode~sofascore-team-player-scraper/runs": {
      "post": {
        "operationId": "runs-sync-incognito_mode-sofascore-team-player-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/incognito_mode~sofascore-team-player-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-incognito_mode-sofascore-team-player-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": {
          "teams": {
            "title": "Teams",
            "type": "array",
            "description": "Clubs and national teams to scrape. Paste Sofascore team URLs (copy them from your browser) or team IDs. Examples: 17 = Manchester City, 2817 = Real Madrid, 3427 = LA Lakers.",
            "items": {
              "type": "string"
            }
          },
          "players": {
            "title": "Players",
            "type": "array",
            "description": "Players to scrape. Paste Sofascore player URLs or player IDs. Examples: 839956 = Erling Haaland, 12994 = Lionel Messi, 861608 = Luka Dončić.",
            "items": {
              "type": "string"
            }
          },
          "includeSquad": {
            "title": "Squad",
            "type": "boolean",
            "description": "Every player currently at the club, with shirt number, position, height, date of birth, nationality, contract expiry and market value where the sport reports them. Basketball adds weight and salary; football adds preferred foot and market value. (Teams only.)",
            "default": true
          },
          "includeResults": {
            "title": "Recent results",
            "type": "boolean",
            "description": "The last 30 matches -- for a team its own fixtures, for a player the matches they appeared in, each with their match rating, minutes played, goals and cards. One request per page; see \"Result pages\".",
            "default": true
          },
          "includeTransfers": {
            "title": "Transfers",
            "type": "boolean",
            "description": "For a team, every incoming and outgoing transfer with fee, currency and date. For a player, their full career move history. Football clubs only in practice -- other sports return nothing.",
            "default": true
          },
          "includeAttributes": {
            "title": "Radar attributes",
            "type": "boolean",
            "description": "Sofascore's 0-100 percentile radar (attacking, technical, tactical, defending, creativity) for each of the last few years, plus the positional average to compare against. Football only. (Players only.)",
            "default": true
          },
          "includeFixtures": {
            "title": "Upcoming fixtures",
            "type": "boolean",
            "description": "The next 30 scheduled matches for the club, with opponent, competition, round and kick-off time. (Teams only.)",
            "default": false
          },
          "includeCompetitions": {
            "title": "Competitions played",
            "type": "boolean",
            "description": "Every competition and season this team or player has data for -- the tournament and season IDs you need to request statistics, or to feed the Sofascore League Standings Scraper.",
            "default": false
          },
          "includeStatistics": {
            "title": "Season statistics (expensive)",
            "type": "boolean",
            "description": "Full season statistics -- 117 metrics for football, fewer elsewhere. This costs one discovery request plus one request PER SEASON, so it is the slowest and priciest option here and is billed as its own event. Use \"Seasons to fetch\" to control how many.",
            "default": false
          },
          "includeNationalTeam": {
            "title": "National team record",
            "type": "boolean",
            "description": "Caps, goals and debut date for each national team the player has represented. Football only. (Players only.)",
            "default": false
          },
          "includeCharacteristics": {
            "title": "Playing-style codes",
            "type": "boolean",
            "description": "Sofascore's strength and weakness codes with a global rank. NOTE: Sofascore stopped sending the human-readable labels for these, so they arrive as bare integer type codes. Off by default for that reason. Football only. (Players only.)",
            "default": false
          },
          "expandSquad": {
            "title": "Scrape every player in the squad",
            "type": "boolean",
            "description": "Turns one club into a full scouting database: after scraping a team, every player in its squad is scraped as a complete player record too. A Premier League club adds around 27 player records, each billed as a player. Requires the Squad option and respects the maximum-records limit.",
            "default": false
          },
          "seasonScope": {
            "title": "Seasons to fetch",
            "enum": [
              "latest",
              "all"
            ],
            "type": "string",
            "description": "Which seasons \"Season statistics\" covers. 'Latest' is one season -- the newest of the team's or player's main competition. 'All' walks every competition they have ever played in, newest first, and each season is a separate request and a separate charge. Haaland alone has 19 competitions.",
            "default": "latest"
          },
          "maxSeasons": {
            "title": "Maximum seasons per team or player",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Hard cap on how many seasons of statistics are fetched for one team or player when \"All\" is selected above. Seasons are taken newest-first, main competition first.",
            "default": 5
          },
          "maxEventPages": {
            "title": "Result pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages of matches to read for \"Recent results\" and \"Upcoming fixtures\". One page is 30 matches and one request. Raise it for a longer history.",
            "default": 1
          },
          "maxItems": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many team and player records in total. Squad expansion counts against it.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave off. Every request calls Sofascore directly first, which costs nothing. If an IP is blocked the Actor escalates on its own: first to a datacenter proxy (included in every Apify plan, free tier included), then to residential only if your plan has it. No residential add-on is required.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}