{
  "openapi": "3.0.1",
  "info": {
    "title": "Sofascore Live Scores & Fixtures Scraper",
    "description": "Scrape Sofascore live scores and fixtures across 19 sports — football,\nbasketball, tennis, ice hockey, cricket and more. Get teams, scores, status,\nkick-off time, tournament and country per match. No API key, no login, no\nresidential proxy — runs on the free plan. Export JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "oJv724VDvhW2dB7i1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/incognito_mode~sofascore-live-scores-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-incognito_mode-sofascore-live-scores-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-live-scores-scraper/runs": {
      "post": {
        "operationId": "runs-sync-incognito_mode-sofascore-live-scores-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-live-scores-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-incognito_mode-sofascore-live-scores-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",
            "type": "array",
            "description": "One or more sports to fetch. Each is queried separately.",
            "items": {
              "type": "string",
              "enum": [
                "football",
                "basketball",
                "tennis",
                "ice-hockey",
                "volleyball",
                "handball",
                "cricket",
                "baseball",
                "american-football",
                "rugby",
                "table-tennis",
                "esports",
                "badminton",
                "darts",
                "motorsport",
                "snooker",
                "futsal",
                "waterpolo",
                "aussie-rules"
              ],
              "enumTitles": [
                "Football (Soccer)",
                "Basketball",
                "Tennis",
                "Ice Hockey",
                "Volleyball",
                "Handball",
                "Cricket",
                "Baseball",
                "American Football",
                "Rugby",
                "Table Tennis",
                "Esports",
                "Badminton",
                "Darts",
                "Motorsport",
                "Snooker",
                "Futsal",
                "Waterpolo",
                "Australian Rules"
              ]
            },
            "default": [
              "football"
            ]
          },
          "liveOnly": {
            "title": "Live matches only",
            "type": "boolean",
            "description": "Fetch only matches currently in progress (one fast call per sport, always \"now\" -- no date range needed). Turn off to fetch a daily schedule instead, using Date from / Date to below.",
            "default": false
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "First date to fetch (YYYY-MM-DD). Defaults to today (UTC). Ignored when \"Live matches only\" is on."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "Last date to fetch (YYYY-MM-DD), inclusive. Defaults to \"Date from\". Max 31 days per run. Ignored when \"Live matches only\" is on."
          },
          "tournamentIds": {
            "title": "Tournament IDs (advanced)",
            "type": "array",
            "description": "Sofascore unique-tournament IDs to fetch directly for the date range, e.g. [17, 8] for Premier League and LaLiga (find IDs on a tournament's Sofascore page URL). Skips the tournament-discovery step entirely, so a run stays fast and predictable even for a wide date range. Ignored when \"Live matches only\" is on.",
            "items": {
              "type": "integer"
            }
          },
          "maxTournamentsPerDate": {
            "title": "Max tournaments per date",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "When \"Tournament IDs\" is empty, how many tournaments (ranked by Sofascore follower count) to fetch matches for on each date. A single day of football alone can have 100+ tournaments with at least one match; this keeps a default run's request count predictable. Raise it for comprehensive coverage.",
            "default": 30
          },
          "maxDiscoveryPages": {
            "title": "Max tournament-discovery pages",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How deep to page through the tournament-discovery step on each date. Sofascore groups these pages roughly by importance: page 1 carries every major league (hundreds of thousands of followers) while later pages top out in the low tens of thousands, so paging to the very end costs extra requests to surface tournaments the ranking then discards. Raise it only if you also raise \"Max tournaments per date\" and want genuinely obscure competitions. Ignored when \"Tournament IDs\" is set.",
            "default": 2
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on how many matches are stored in the dataset. The run stops as soon as it is reached.",
            "default": 500
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave off. Every request calls Sofascore directly first, which costs nothing, and most runs never need anything else. If Sofascore does block an IP, the Actor escalates on its own: first to a datacenter proxy (included in every Apify plan, free tier included), rotating a few IPs, and only then to a residential one if your plan has them. No residential add-on is required. Set this only to pin a specific proxy configuration from the start -- for example to scrape from a particular country.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}