Vexaloom Labs

SofaScore Live Scores, Standings & Team Search Data

Get SofaScore live scores, scheduled fixtures, league standings and team/player/tournament search results across 17 sports including football, basketball and tennis.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to fetch from SofaScore.
searchQueriesarrayoptionalTeam, player, tournament or match names to resolve (mode=search).
searchTypestringoptionalRestrict search results to one entity type (mode=search).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to fetch from SofaScore.
searchQueriesarrayoptionalTeam, player, tournament or match names to resolve (mode=search).
searchTypestringoptionalRestrict search results to one entity type (mode=search).
sportsarrayoptionalSports for live and scheduled modes. Supported: football, basketball, tennis, american-football, aussie-rules, ice-hockey, handball, rugby, futsal, minifootball, floorball, volleyball, badminton, table-tennis, padel, snooker, baseball, cricket, esports, darts, mma, cycling, motorsport, waterpolo, bandy.
datestringoptionalStart date for fixtures (mode=scheduled), format YYYY-MM-DD. Defaults to today UTC.
daysAheadintegeroptionalNumber of extra days after Date to include (mode=scheduled).
teamIdsarrayoptionalSofaScore team IDs or team page URLs (mode=team).
playerIdsarrayoptionalSofaScore player IDs or player page URLs (mode=player).
tournamentIdsarrayoptionalSofaScore unique-tournament IDs or tournament page URLs (modes tournament, standings).
eventIdsarrayoptionalSofaScore match IDs or match page URLs (mode=event).
seasonIdintegeroptionalOptional season ID for standings or tournament mode. If omitted, the latest season with a table is used.
tableTypestringoptionalStandings table to fetch (modes standings, tournament).
rankingTypestringoptionalRanking table to fetch (mode=rankings).
includeStatisticsbooleanoptionalAdd team and player statistics to match records.
includeLineupsbooleanoptionalAdd lineups, formations and player ratings to match records.
includeIncidentsbooleanoptionalAdd goals, cards and substitutions to match records.
includeOddsbooleanoptionalAdd pre-match odds markets to match records.
includeVotesbooleanoptionalAdd crowd prediction polls to match records.
includeH2hbooleanoptionalAdd head-to-head win/draw tallies to match records.
includeAdvancedbooleanoptionalAdd shotmap, momentum, average positions, best players, win probability, managers, streaks and pre-game form.
includeCommentsbooleanoptionalAdd the text commentary feed to match records. This is a large payload.
includeSquadbooleanoptionalAdd the full squad to team records (mode=team).
includePlayerStatsbooleanoptionalAdd per-competition season statistics to player records (mode=player).
includeStandingsbooleanoptionalAdd the league table to tournament records (mode=tournament).
includeEventsbooleanoptionalAdd recent and upcoming events to team records (mode=team).
maxItemsintegeroptionalMaximum number of records to return. 0 means no user limit (hard cap 10,000).

Download the published input schema

View complete JSON
{
  "description": "Scrape live scores, fixtures, standings, team/player profiles, match details and rankings from SofaScore across 25 sports. No login or API key.",
  "properties": {
    "date": {
      "description": "Start date for fixtures (mode=scheduled), format YYYY-MM-DD. Defaults to today UTC.",
      "editor": "datepicker",
      "title": "Date",
      "type": "string"
    },
    "daysAhead": {
      "default": 0,
      "description": "Number of extra days after Date to include (mode=scheduled).",
      "maximum": 31,
      "minimum": 0,
      "prefill": 0,
      "title": "Days Ahead",
      "type": "integer"
    },
    "eventIds": {
      "description": "SofaScore match IDs or match page URLs (mode=event).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Match IDs or URLs",
      "type": "array"
    },
    "includeAdvanced": {
      "default": false,
      "description": "Add shotmap, momentum, average positions, best players, win probability, managers, streaks and pre-game form.",
      "prefill": false,
      "title": "Include Advanced Match Data",
      "type": "boolean"
    },
    "includeComments": {
      "default": false,
      "description": "Add the text commentary feed to match records. This is a large payload.",
      "prefill": false,
      "title": "Include Commentary",
      "type": "boolean"
    },
    "includeEvents": {
      "default": false,
      "description": "Add recent and upcoming events to team records (mode=team).",
      "prefill": false,
      "title": "Include Team Events",
      "type": "boolean"
    },
    "includeH2h": {
      "default": false,
      "description": "Add head-to-head win/draw tallies to match records.",
      "prefill": false,
      "title": "Include Head-to-Head",
      "type": "boolean"
    },
    "includeIncidents": {
      "default": true,
      "description": "Add goals, cards and substitutions to match records.",
      "prefill": false,
      "title": "Include Incidents",
      "type": "boolean"
    },
    "includeLineups": {
      "default": true,
      "description": "Add lineups, formations and player ratings to match records.",
      "prefill": false,
      "title": "Include Lineups",
      "type": "boolean"
    },
    "includeOdds": {
      "default": false,
      "description": "Add pre-match odds markets to match records.",
      "prefill": false,
      "title": "Include Odds",
      "type": "boolean"
    },
    "includePlayerStats": {
      "default": false,
      "description": "Add per-competition season statistics to player records (mode=player).",
      "prefill": false,
      "title": "Include Player Statistics",
      "type": "boolean"
    },
    "includeSquad": {
      "default": false,
      "description": "Add the full squad to team records (mode=team).",
      "prefill": false,
      "title": "Include Squad",
      "type": "boolean"
    },
    "includeStandings": {
      "default": false,
      "description": "Add the league table to tournament records (mode=tournament).",
      "prefill": false,
      "title": "Include Standings",
      "type": "boolean"
    },
    "includeStatistics": {
      "default": true,
      "description": "Add team and player statistics to match records.",
      "prefill": false,
      "title": "Include Statistics",
      "type": "boolean"
    },
    "includeVotes": {
      "default": false,
      "description": "Add crowd prediction polls to match records.",
      "prefill": false,
      "title": "Include Votes",
      "type": "boolean"
    },
    "maxItems": {
      "default": 50,
      "description": "Maximum number of records to return. 0 means no user limit (hard cap 10,000).",
      "maximum": 10000,
      "minimum": 0,
      "prefill": 3,
      "title": "Max Items",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "What to fetch from SofaScore.",
      "editor": "select",
      "enum": [
        "search",
        "live",
        "scheduled",
        "team",
        "player",
        "tournament",
        "standings",
        "event",
        "rankings"
      ],
      "enumTitles": [
        "Search by name",
        "Live events",
        "Fixtures by date",
        "Team profile",
        "Player profile",
        "Tournament profile",
        "League standings",
        "Match details by ID or URL",
        "Rankings"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "playerIds": {
      "description": "SofaScore player IDs or player page URLs (mode=player).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Player IDs or URLs",
      "type": "array"
    },
    "rankingType": {
      "default": "fifa",
      "description": "Ranking table to fetch (mode=rankings).",
      "editor": "select",
      "enum": [
        "uefa-countries",
        "fifa",
        "rugby-union",
        "rugby-league",
        "atp",
        "wta",
        "atp-live",
        "wta-live",
        "uefa-clubs",
        "ufc-flyweight",
        "ufc-bantamweight",
        "ufc-featherweight",
        "ufc-lightweight",
        "ufc-welterweight",
        "ufc-middleweight",
        "ufc-light-heavyweight",
        "ufc-heavyweight",
        "ufc-womens-strawweight",
        "ufc-womens-flyweight",
        "ufc-womens-bantamweight",
        "ufc-womens-featherweight",
        "utr-men",
        "utr-women",
        "fip-men",
        "fip-women",
        "fnc-bantamweight",
        "fnc-featherweight",
        "fnc-lightweight",
        "fnc-welterweight",
        "fnc-middleweight",
        "fnc-light-heavyweight"
      ],
      "enumTitles": [
        "UEFA Countries",
        "FIFA Rankings",
        "Rugby Union Rankings",
        "Rugby League Rankings",
        "ATP Rankings",
        "WTA Rankings",
        "ATP Rankings Live",
        "WTA Rankings Live",
        "UEFA Clubs",
        "UFC Flyweight",
        "UFC Bantamweight",
        "UFC Featherweight",
        "UFC Lightweight",
        "UFC Welterweight",
        "UFC Middleweight",
        "UFC Light Heavyweight",
        "UFC Heavyweight",
        "UFC Women's Strawweight",
        "UFC Women's Flyweight",
        "UFC Women's Bantamweight",
        "UFC Women's Featherweight",
        "UTR Men",
        "UTR Women",
        "FIP Ranking Men",
        "FIP Ranking Women",
        "FNC Bantamweight",
        "FNC Featherweight",
        "FNC Lightweight",
        "FNC Welterweight",
        "FNC Middleweight",
        "FNC Light Heavyweight"
      ],
      "prefill": "fifa",
      "title": "Ranking Type",
      "type": "string"
    },
    "searchQueries": {
      "description": "Team, player, tournament or match names to resolve (mode=search).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "Real Madrid"
      ],
      "title": "Search Queries",
      "type": "array"
    },
    "searchType": {
      "default": "all",
      "description": "Restrict search results to one entity type (mode=search).",
      "editor": "select",
      "enum": [
        "all",
        "team",
        "player",
        "tournament",
        "event"
      ],
      "enumTitles": [
        "All types",
        "Teams",
        "Players",
        "Tournaments",
        "Matches"
      ],
      "prefill": "all",
      "title": "Search Result Type",
      "type": "string"
    },
    "seasonId": {
      "description": "Optional season ID for standings or tournament mode. If omitted, the latest season with a table is used.",
      "minimum": 1,
      "title": "Season ID",
      "type": "integer"
    },
    "sports": {
      "default": [
        "football"
      ],
      "description": "Sports for live and scheduled modes. Supported: football, basketball, tennis, american-football, aussie-rules, ice-hockey, handball, rugby, futsal, minifootball, floorball, volleyball, badminton, table-tennis, padel, snooker, baseball, cricket, esports, darts, mma, cycling, motorsport, waterpolo, bandy.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "football"
      ],
      "title": "Sports",
      "type": "array"
    },
    "tableType": {
      "default": "total",
      "description": "Standings table to fetch (modes standings, tournament).",
      "editor": "select",
      "enum": [
        "total",
        "home",
        "away"
      ],
      "enumTitles": [
        "Overall",
        "Home",
        "Away"
      ],
      "prefill": "total",
      "title": "Table Type",
      "type": "string"
    },
    "teamIds": {
      "description": "SofaScore team IDs or team page URLs (mode=team).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Team IDs or URLs",
      "type": "array"
    },
    "tournamentIds": {
      "description": "SofaScore unique-tournament IDs or tournament page URLs (modes tournament, standings).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Tournament IDs or URLs",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "SofaScore Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
resultsstringoptionalDataset containing all scraped SofaScore records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Live scores, fixtures, standings, team and player profiles, match details and ranking rows from SofaScore.",
  "properties": {
    "results": {
      "description": "Dataset containing all scraped SofaScore records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "SofaScore Results",
      "type": "string"
    }
  },
  "title": "SofaScore Live Scores, Standings & Match Data Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Results",
      "transformation": {
        "fields": [
          "recordType",
          "name",
          "eventId",
          "homeTeam",
          "awayTeam",
          "homeScore",
          "awayScore",
          "status",
          "startTime",
          "sport",
          "tournamentName",
          "teamId",
          "playerId",
          "position",
          "points",
          "rankingTypeName"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

SofaScore Live Scores, Standings & Match Data

Scrape SofaScore live scores, fixtures, league tables, team and player profiles, match statistics, lineups, odds and rankings across 25 sports. Search by name, paste SofaScore URLs, or pull every live and scheduled match. No login, API key or proxy setup.

What this actor does

  • Nine ways in: search by name, live events, fixtures by date, team profile, player profile, tournament profile, standings, match detail by ID/URL, and rankings.
  • 25 sports: football, basketball, tennis, ice hockey, cricket, MMA, esports, volleyball, handball, rugby, and more.
  • Match depth on demand: statistics, lineups with ratings, incidents, odds, crowd votes, head-to-head, shotmap, momentum, average positions, best players, win probability, managers, streaks and commentary.
  • Team and player data: squad lists, manager, venue, market value, contract, nationality and per-competition season statistics.
  • Leagues and rankings: overall, home and away tables, group tables, FIFA, UEFA, ATP, WTA, UTR, FIP, rugby, UFC and FNC rankings.
  • Empty fields are omitted — a field SofaScore does not publish for a record is left out, never filled with null or a placeholder.

Output per record

Every row has a recordType, a sofascoreUrl where one exists, and scrapedAt.

recordType: "event"

  • eventId, slug, sport, startTime, startTimestamp, status, statusCode, statusDescription, winnerCode
  • homeTeam / awayTeam — id, name, slug, shortName, nameCode, logoUrl, teamColors, countryCode, manager
  • homeScore / awayScore, currentPeriod, matchTime
  • tournamentName, tournamentId, uniqueTournamentId, uniqueTournamentName, categoryName, country, countryCode
  • seasonName, seasonId, seasonYear, round, roundName
  • venue, city, venueCapacity, venueCoordinates, referee, refereeCountry, attendance
  • hasStatistics, hasXg, hasHighlights
  • Optional: statistics, lineups, incidents, odds, votes, h2h, advanced (shotmap, momentum, average positions, best players, win probability, managers, team streaks, pre-game form), comments

recordType: "team"

  • teamId, name, slug, shortName, fullName, nameCode, sport
  • country, countryCode, category, tournamentId, tournamentName, uniqueTournamentId
  • manager, managerCountry, venue, venueCapacity, venueCity, foundationDate
  • teamColors, userCount, national, gender, class, primaryTournament, pregameForm
  • Optional: squad, events

recordType: "player"

  • playerId, name, slug, shortName, position, positionsDetailed, jerseyNumber, height, preferredFoot
  • dateOfBirth, country, countryCode, teamId, teamName
  • marketValue, marketValueCurrency, contractUntil, userCount, sofascoreId, gender
  • Optional: statistics (per competition and season)

recordType: "standingsRow"

  • teamId, teamName, teamSlug, teamLogoUrl, teamCountryCode
  • position, wins, draws, losses, points, gamesPlayed, goalsFor, goalsAgainst, goalDifference
  • tournamentName, tournamentId, seasonName, seasonId, groupName, tableType, promotion, avgRating

recordType: "tournament"

  • tournamentId, name, slug, sport, category, country, countryCode, userCount
  • seasons, standings (when requested), currentRound (when standings are requested)

recordType: "searchResult"

  • type, id, name, slug, sport, sportSlug, country, countryCode
  • score, teamColors, imageUrl, teamId, playerId, tournamentId, eventId
  • Event fields when the result is a match; position, shirt number and market value when it is a player.

recordType: "rankingRow"

  • rankingTypeId, rankingTypeName, position, previousPosition, bestPosition
  • id, name, teamId, teamName, teamSlug, country, countryCode
  • points, previousPoints, year, tournamentsPlayed, playingTeams, totalTeams, updatedAt

Input

Field Type Default Description
mode string search search, live, scheduled, team, player, tournament, standings, event, rankings
searchQueries array – Names to resolve (mode=search)
searchType string all all, team, player, tournament, event
sports array ["football"] Sports for live/scheduled modes
date string – Start date for fixtures, YYYY-MM-DD; defaults to today UTC (mode=scheduled)
daysAhead integer 0 Extra days after date (0–31)
teamIds array – Team IDs or URLs (mode=team)
playerIds array – Player IDs or URLs (mode=player)
tournamentIds array – Tournament IDs or URLs (modes tournament, standings)
eventIds array – Match IDs or URLs (mode=event)
seasonId integer – Optional season for standings/tournament
tableType string total total, home, away
rankingType string fifa FIFA, UEFA, ATP, WTA, UTR, FIP, rugby, UFC or FNC table. SofaScore publishes at most 500 rows per table.
includeStatistics boolean true Match statistics
includeLineups boolean true Lineups and player ratings
includeIncidents boolean true Goals, cards and substitutions
includeOdds boolean false Pre-match odds markets
includeVotes boolean false Crowd prediction polls
includeH2h boolean false Head-to-head tallies
includeAdvanced boolean false Shotmap, momentum, positions, best players, win probability, managers, streaks, pre-game form
includeComments boolean false Text commentary (large payload)
includeSquad boolean false Full squad on team records
includePlayerStats boolean false Per-competition season stats on player records
includeStandings boolean false League table on tournament records
includeEvents boolean false Recent/upcoming events on team records
maxItems integer 50 Record cap; 0 means no user limit (hard cap 10,000)

Example: live football and basketball

{
  "mode": "live",
  "sports": ["football", "basketball"],
  "maxItems": 30
}

Example: a day of fixtures

{
  "mode": "scheduled",
  "sports": ["football", "tennis"],
  "date": "2026-10-28",
  "daysAhead": 1,
  "maxItems": 100
}

Example: a match with all detail

{
  "mode": "event",
  "eventIds": ["13981670"],
  "includeStatistics": true,
  "includeLineups": true,
  "includeIncidents": true,
  "includeOdds": true,
  "includeH2h": true,
  "includeAdvanced": true
}

Example: Premier League table

{
  "mode": "standings",
  "tournamentIds": ["17"],
  "seasonId": 76986,
  "tableType": "total",
  "maxItems": 30
}

Example: FIFA rankings

{
  "mode": "rankings",
  "rankingType": "fifa",
  "maxItems": 200
}

Use cases

  • Live scoreboards — poll live matches and push score/status updates to a dashboard or alerting pipeline.
  • Fixture calendars — build daily or multi-day schedules across several sports.
  • Betting research — combine odds, votes, head-to-head and match statistics in one row per game.
  • Team and player scouting — pull squads, market values, contracts and season statistics.
  • League monitoring — track overall, home and away tables over time.
  • Ranking trackers — follow FIFA, UEFA, ATP, WTA, UTR, FIP, rugby and UFC standings.

FAQ

Do I need a SofaScore account, API key or proxy?

No. The actor handles access automatically and needs no login, API key or proxy setup.

Which sports are supported?

Football, basketball, tennis, American football, Australian rules, ice hockey, handball, rugby, futsal, minifootball, floorball, volleyball, badminton, table tennis, padel, snooker, baseball, cricket, esports, darts, MMA, cycling, motorsport, water polo and bandy. Live coverage varies by time of day.

Why does live return no rows?

There may simply be no match in progress for the selected sports. Use scheduled with today's date or search to confirm a team exists.

How do I find a team, player or tournament ID?

Run mode=search with the name and use the id from the result, or paste the SofaScore page URL directly into teamIds, playerIds, tournamentIds or eventIds.

Why do ranking tables stop at 500 rows?

SofaScore publishes at most 500 rows per ranking table, so maxItems above 500 cannot add more. A row's position is its place in that table.

Why are some fields missing?

SofaScore does not publish every field for every match, competition or sport. Missing fields are omitted; they are not replaced with nulls or placeholders.

Are scores live?

live returns the current score and status at the moment the actor runs. It polls SofaScore; it is not a push/streaming feed.

Can I get historical fixtures?

Yes. Use scheduled with a past date and daysAhead: 0.

Why do season IDs change?

SofaScore creates a new season ID each year. The actor resolves the latest season automatically for standings and tournaments; pass seasonId only when you need a specific historical season.

Is this affiliated with SofaScore?

No. This is an independent third-party actor that reads publicly available SofaScore data. It is not affiliated with, endorsed by or sponsored by SofaScore.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build q6GdIjB6lSnB3zonj. Documentation is regenerated from the default published build; private drafts are not included.