Skip to content

SofaScore Scraper

Try for free

Scrape SofaScore for any sport: live scores, fixtures and results by date, full match pages with statistics, lineups, incidents, odds and head to head, plus teams, players, tournaments, standings and search. Paste any SofaScore link. No login needed.

⚽ SofaScore Scraper

Get SofaScore data for every sport in clean JSON: live scores, fixtures and results by date, full match pages with statistics, lineups, incidents, odds and head to head, plus teams, players, tournaments, standings and search. Paste any SofaScore link or pick a sport and a date. No login and no API key needed.

✨ Why use SofaScore Scraper?

  • 🔗 Any SofaScore link — matches, teams, players, tournaments, managers and date pages are recognised automatically, in any site language (/de/, /es/, ...).
  • 🌍 All sports — football, basketball, tennis, ice hockey, baseball, American football, handball, volleyball, cricket, esports, MMA, darts and more.
  • 📅 Whole days of fixtures — every match of a sport on a date or a date range, finished, live or upcoming.
  • 📊 Deep match data on demand — statistics, lineups with ratings, incidents, odds, head to head, fan votes and best players, one switch each.
  • ⚡ Fast — reads SofaScore's own JSON instead of rendering pages in a browser; a full football day (about 1,500 matches) takes seconds.
  • 💸 Cheap — $1.00 per 1,000 results, failed inputs are free.

🎯 Use cases

  • 📈 Sports analytics — build datasets of results, xG, shots and possession for models and dashboards.
  • 🎲 Odds and betting research — collect pre-match and live markets next to the final score.
  • 🔴 Live score feeds — schedule runs every few minutes to track live matches in any sport.
  • 🧑‍💼 Scouting — pull player and team pages with ratings, transfers, market values and squads.
  • 🏆 League tracking — standings, season fixtures and results for any competition.
  • 📰 Media and apps — fill match centres, previews and widgets with structured data.

🚀 How to use

  1. Paste SofaScore links into SofaScore URLs, and/or turn on Live events, set Matches from date, add Event IDs or Search names.
  2. Pick the Sports for live and date lists (football by default).
  3. Set Maximum results (0 = no limit) and switch on any Match details you need.
  4. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them over the API.

📥 Input

FieldTypeWhat it does
startUrlslistAny SofaScore links. Each returns the full page data; match links also get the match details you switch on.
liveEventsbooleanEvery match live right now in sports.
dateFrom / dateTodateAll matches of sports in this UTC date range (YYYY-MM-DD, today, tomorrow, yesterday; up to 31 days).
sportslistSports for live and date lists.
eventIdslistNumeric match IDs.
searchQueries / searchTypelist / selectFind teams, players, competitions, managers or venues with their IDs.
maxItemsintegerMost rows in the run (default 20, 0 = no limit).
tournamentIds, statusTypefiltersKeep only some competitions or match states.
includeStatistics, includeLineups, includeIncidents, includeOdds, includeH2H, includeVotes, includeBestPlayers, includeRawDatabooleansExtra data on every match row.
fixtures, maxFixturePagesselect / integerPast and/or upcoming matches for team, player and tournament links.
{
  "startUrls": [
    "https://www.sofascore.com/football/match/atletico-madrid-real-madrid/EgbsLgb",
    "https://www.sofascore.com/football/tournament/england/premier-league/17"
  ],
  "liveEvents": true,
  "dateFrom": "today",
  "sports": ["football", "basketball"],
  "tournamentIds": ["17", "8"],
  "includeStatistics": true,
  "includeOdds": true,
  "maxItems": 200
}

📤 Output

Every row has a type:

typeComes fromMain fields
eventlive, date, event ID and fixture listsid, url, sport, uniqueTournament, country, season, round, startTime, status, homeTeam, awayTeam, homeScore, awayScore, winner, homeScoreDetail, awayScoreDetail, venue, referee, plus statistics, lineups, incidents, odds, h2h, votes, bestPlayers when switched on
matchmatch linksid, name, summary (same fields as an event row), the page's event, eventMeta, incidents, standings properties, plus switched-on details
team, player, tournament, manager, pageother linksid, name, sport, url and the full page data (teamDetails, players, teamTransfers, player, transfers, uniqueTournament, seasons, standings, managerDetails, ...)
searchsearchquery, rank, entityType, id, name, sport, country, teamName, url, entity

Example event row (live basketball, trimmed):

{
  "type": "event",
  "id": 16670594,
  "url": "https://www.sofascore.com/basketball/match/bayern-munchen-anadolu-efes/pvbswwk#id:16670594",
  "sport": "basketball",
  "country": "International",
  "uniqueTournament": "Euroleague",
  "uniqueTournamentId": 138,
  "season": "Euroleague 26/27",
  "round": 5,
  "startTime": "2026-10-14T17:30:00Z",
  "status": "2nd quarter",
  "statusType": "inprogress",
  "homeTeam": "Anadolu Efes",
  "awayTeam": "Bayern München",
  "homeScore": 26,
  "awayScore": 35,
  "homeScoreDetail": {"current": 26, "period1": 22, "period2": 4},
  "awayScoreDetail": {"current": 35, "period1": 26, "period2": 9},
  "source": "live:basketball"
}

Example match row (match link, trimmed):

{
  "type": "match",
  "url": "https://www.sofascore.com/football/match/atletico-madrid-real-madrid/EgbsLgb",
  "id": 16416339,
  "sport": "football",
  "name": "Atlético Madrid - Real Madrid",
  "summary": {
    "uniqueTournament": "LaLiga",
    "round": 7,
    "startTime": "2026-09-20T14:15:00Z",
    "status": "Ended",
    "homeTeam": "Atlético Madrid",
    "awayTeam": "Real Madrid",
    "homeScore": 2,
    "awayScore": 1,
    "winner": "home",
    "venue": "Riyadh Air Metropolitano",
    "referee": "Miguel Angel Ortiz Arias"
  },
  "event": {"...": "full SofaScore match object"},
  "incidents": [{"incidentType": "goal", "time": 61, "homeScore": 1, "awayScore": 0}]
}

💰 Pricing

$1.00 per 1,000 results ($0.001 per saved row), plus the small platform usage of your run (compute at 512 MB and residential proxy traffic). Bad inputs save no row and are never charged; they are listed in failedInputs of the run's OUTPUT record.

Worked examples:

  • 🔗 Two SofaScore links (a match and a player page): 2 results = $0.002, plus well under $0.001 of usage.
  • 📅 1,000 matches from a date list: $1.00, plus about $0.004 of usage (about a minute of compute and under 1 MB of proxy traffic).

Match details (statistics, lineups, odds, ...) are included in the row price; they only add a little usage.

❓ FAQ

Is it legal to scrape SofaScore? The actor reads public pages and data that anyone can open without an account. You are responsible for how you use the data; check SofaScore's terms for your use case.

Do I need a login or a proxy? No login. A residential proxy is preselected because SofaScore blocks most datacenter addresses; it is included in the usage you pay.

How many results can I get? As many as SofaScore lists: a busy football day has about 1,500 matches, live lists hold whatever is live, search returns up to about 1,000 hits per name. Set maxItems to 0 for no limit.

Why is a field empty? SofaScore does not publish every value for every match (for example statistics before kick-off or odds for small leagues). Missing values are left out or null.

Can I schedule it or use the API? Yes. Schedule runs (for example every 5 minutes for live scores) and fetch results over the API or with webhooks and integrations.

I used another SofaScore scraper with startUrls. The same startUrls input works here and returns the page data for each link.

⚠️ Limits

  • Dates are UTC days; a match at 00:30 local time may fall on the previous UTC date.
  • Match details cost one extra request per match each, so large date ranges with every detail switched on take longer.
  • Fixtures for tournament links cover the current season only.
  • Shot maps, heat maps and player season statistics are not included.
  • Odds are SofaScore's default bookmaker feed in fractional format.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.