SofaScore Scraper - Results, Stats, Lineups, Ratings & Odds
Pricing
from $1.40 / 1,000 results
SofaScore Scraper - Results, Stats, Lineups, Ratings & Odds
SofaScore data for football, basketball, hockey, tennis and 17 more sports: results with period scores, team stats (xG, possession, shots), lineups with player ratings, incidents and opening/closing odds. By day, team or tournament season back to the 1990s.
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 hours ago
Last modified
Categories
Share
Match data from SofaScore for football (soccer), basketball, ice hockey, American football, baseball, tennis, handball, volleyball, rugby, cricket, esports and 10 more sports:
- Matches: final score, score per half / quarter / period / set, overtime and penalties, winner, tournament, season, round, teams. Optionally venue, attendance, referee and managers.
- Match statistics: every team statistic SofaScore shows (possession, expected goals, shots, big chances, passes, duels, tackles, corners, cards; shots, hits, power plays and giveaways in ice hockey), for the whole match and each period.
- Lineups and player ratings: every player in the squad with SofaScore's rating, minutes played, position, shirt number, market value and all per-player statistics (passes, duels, xG, xA, distance covered, saves ...).
- Incidents: goals with assists, cards, substitutions, VAR decisions, period ends and injury time.
- Odds: opening and closing odds for 1X2, double chance, totals, handicaps, both teams to score and more.
Pick matches by day (any day from 2026-01-01), by tournament and season (whole seasons back to the 1990s: the Premier League from 1992/93), by team, or by match URL. Built for reliability: the Actor finds proxy IPs that SofaScore lets through and keeps reusing them.
What you get
entityType: "events" (the default) returns one row per match:
| Field | Example |
|---|---|
sport, event_id, date, start_time_utc | football, 16938974, 2026-10-14, 2026-10-14T16:45+00:00 |
tournament, season, round, category | UEFA Champions League, 26/27, 2, Europe |
home_team, away_team, home_score, away_score | Feyenoord, Como, 3, 2 |
winner, status, status_description | Feyenoord, finished, Ended |
periods | [{"period": 1, "home": 1, "away": 1}, {"period": 2, "home": 2, "away": 1}] |
home_score_overtime, home_score_penalties | extra time and shoot-out scores when played |
venue, attendance, referee, home_manager | with Include venue, referee and attendance |
event_url | the SofaScore match page |
Every other type repeats the match columns (date, tournament, home_team, away_team, scores, event_url) and
adds:
statistics: one row per match period (period=match,1,2...). Each statistic is two columns,home_<name>andaway_<name>, e.g.home_ball_possession,away_expected_goals,home_total_shots_on_goal,home_corner_kicks. Ratios add a_totalcolumn (home_accurate_passesofhome_accurate_passes_total).lineups: one row per player:side,team,formation,player,position,shirt_number,starter,captain,minutes_played,rating,market_value,player_country,player_date_of_birthandplayer_statistics(an object with every per-player statistic).incidents: one row per incident in match order:incident_type(goal,card,substitution,varDecision,period...),incident_class(regular,penalty,ownGoal,yellow,red...),minute,added_time,team,player,assist,player_in,player_out,home_score_after,away_score_after.odds: one row per market selection:market_group(1X2,Double chance,Match goals,Asian handicap,Both teams to score...),market_period,line(e.g.2.5),selection,opening_odds,current_odds(decimal; the closing odds once the match is over), the fractional odds andwinning.
How to use it
- Yesterday's and today's football results (the default): just run it.
- Several sports: pick them under Sports, e.g. basketball and ice hockey.
- A whole season: Tournaments =
https://www.sofascore.com/football/tournament/england/premier-league/17, Seasons =2024/2025, clear Max items. Seasons =allfor every season SofaScore has. - xG and shots for a league: the same, with
entityType: "statistics". - Player ratings:
entityType: "lineups"for the matches you want. - A team's recent form: Teams = the team's SofaScore URL, From date = how far back.
- Pre-match odds and closing lines:
entityType: "odds"; Match status = upcoming for today's and tomorrow's fixtures, finished for closing odds. - A daily feed: schedule it daily with the default dates, Max items cleared and Mode = incremental: each run returns only finished matches earlier runs didn't.
Input
| Field | Default | What it does |
|---|---|---|
entityType | events | events, statistics, lineups, incidents or odds. |
sports | football | Listing by day: which sports. |
dateFrom, dateTo | yesterday and today | Listing by day from 2026-01-01 on. With tournaments or teams, the dates only filter. |
eventStatus | finished | finished, upcoming or all. |
tournaments, seasons | none | Tournament URLs or ids, and which seasons (2024/2025, 24/25, 2024, all; empty = newest). |
teams | none | Team URLs or ids: their matches across all competitions. |
eventIds | none | Match URLs or ids. |
includeEventDetails | off | Venue, attendance, referee and managers (one extra request per match). |
maxItems | 50 | Row cap. Clear it for everything. |
mode | full | incremental skips finished matches earlier incremental runs returned. |
concurrency | 10 | Requests in parallel. |
proxyConfiguration | Apify Proxy | SofaScore blocks most IPs; proxy traffic is included in the price. |
Good to know
- Times and dates are UTC.
- Smaller leagues often have results only: statistics, lineups and odds exist mostly for the bigger competitions. A run lists the biggest competitions first, so a capped run gets the matches that have data.
home/awayfollow SofaScore's order. In tennis they are player 1 and player 2.- Odds come from SofaScore's default bookmaker and show opening and current odds, not every move in between.
- Listing by day starts at 2026-01-01; older seasons are reached through Tournaments or Teams.
- Standings are not included.
Related sports data scrapers
- Flashscore Scraper — results, statistics, lineups and opening/closing odds from ~20 bookmakers for 17 sports.
- TennisExplorer Scraper — ATP/WTA/ITF results to the 1990s, bookmaker odds and SofaScore serve/return statistics.
- Action Network Scraper — US sportsbook odds, public betting splits, line movement, props, injuries and futures.
- Sports Odds History Scraper — opening and closing lines per sportsbook since 2021 and ATS results since 2006.
- Smarkets Betting Exchange Scraper — betting exchange back and lay odds, matched volume, results and traded-price history.
- Kalshi & Polymarket Scraper — prediction market odds, settled results and price history.