Sofascore Match Stats Scraper - Live Scores, Odds & Lineups
Pricing
from $1.70 / 1,000 match summaries
Sofascore Match Stats Scraper - Live Scores, Odds & Lineups
Scrape Sofascore match data across 11 sports: live scores, statistics, lineups, shot maps, player ratings, head-to-head and odds. Export to CSV, Excel, JSON.
Pricing
from $1.70 / 1,000 match summaries
Rating
0.0
(0)
Developer
PunkRecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
β½ Sofascore Match Stats Scraper: PunkRecordsData
π Export Sofascore match data in seconds. 22 fields per match across 11 sports, with up to 7 optional data extras, statistics, lineups, shot maps, player ratings, head-to-head records and live odds, in a single run.
Scrape Sofascore match data straight from the site's own internal API: live scores, full statistics, starting lineups, shot-by-shot maps with expected goals (xG), per-player ratings, head-to-head history and bookmaker odds. Every match comes back as one clean row, not a raw JSON dump. Pick a team by name or a specific match ID and get real numbers back, verified against live Sofascore data before this Actor shipped.
Covers 11 sports (football, basketball, tennis, American football, ice hockey, baseball, rugby, esports, volleyball, handball, table tennis), with statistics broken into 40+ line items per football match (possession, shots, expected goals, cards, sprints and more), full starting XI with formations, and shot-by-shot maps with player, body part and xG for every attempt.
| π― Target Audience | π‘ Primary Use Cases |
|---|---|
| Sports data analysts, fantasy sports tools, betting research platforms, sports media, LLM/agent pipelines | Live score feeds, post-match statistics dashboards, lineup and formation tracking, historical head-to-head research, odds comparison |
π What the Sofascore Match Stats Scraper does
Give it a team name (e.g. "Real Madrid") and it resolves the team, pulls its recent and upcoming fixtures, and returns one row per match with the base score, tournament and status. Turn on any of 7 optional extras and each one adds its own real data to the same row: team statistics, starting lineups, shot maps, best-player ratings, head-to-head record, live odds and pre-match form. You can also fetch a specific match by its Sofascore event ID, or pull every match currently live in a sport right now.
π‘ Why it matters: most Sofascore scrapers on the market return only the score and maybe basic stats. This one exposes lineups, shot maps with xG, and odds as separate, verified data points, the deepest single-actor coverage of Sofascore's public match data available today.
π Output
Real sample fields from a verified run (Osasuna 2-1 Real Madrid, LaLiga):
| Field | Type | Example |
|---|---|---|
πΌ imageUrl | string | https://api.sofascore.com/api/v1/team/2820/image |
π matchId | integer | 14081794 |
π tournament | string | LaLiga |
π country | string | Spain |
π homeTeam / π© awayTeam | string | Osasuna / Real Madrid |
π’ homeScore / awayScore | number | 2 / 1 |
πΆ status | string | Ended |
π startTime | string (ISO) | 2026-02-21T17:30:00.000Z |
π hasXg | boolean | true |
π statistics | array | 48 line items: {"group":"Match overview","stat":"Ball possession","home":"39%","away":"61%"} |
π§βπ€βπ§ lineups | object | {"home":{"formation":"4-3-3","startingXI":[11 players]}, "away":{...}} |
π― shotmap | array | 26 shots: {"player":"VinΓcius JΓΊnior","shotType":"goal","xg":0.34,...} |
β playerRatings | object | {"bestHomePlayer":{"name":"...","rating":"7.8"},"bestAwayPlayer":{...}} |
βοΈ h2hRecord | object | {"homeWins":1,"awayWins":7,"draws":2} |
π° odds | array | {"outcome":"1","odds":"7/2"}, {"outcome":"X","odds":"3/1"}, {"outcome":"2","odds":"7/10"} |
π pregameForm | object or "N/A" | {"home":{"avgRating":"6.82","recentForm":["W","W","D","W","D"]},...} |
π scrapedAt | string (ISO) | 2026-09-12T01:27:09.328Z |
β error | string or null | null |
Any extra you don't enable returns "Not Requested" instead of an empty or
missing field, and an extra Sofascore genuinely doesn't have for a given
match (older fixtures often lack pre-match form) returns "N/A", you always
know why a field is empty, never guess.
β¨ Why choose this Actor
- Seven optional extras, not one bundled dump. Turn on only what you need; each is billed separately, so you never pay for data you didn't ask for.
- Shot maps with real xG/xGOT per attempt, most Sofascore actors on the market don't expose this at all.
- 11 sports from one Actor, not a separate scraper per sport.
- Honest ceilings. Sofascore's calendar-by-date endpoint doesn't work on any date tested; this Actor doesn't pretend otherwise. Discovery is by team name, by live-right-now, or by direct match ID, and the README says so up front instead of you finding out after buying.
π How it compares to alternatives
Measured against the closest published Sofascore actors on the Apify Store:
| Actor | Primary price | Billable events |
|---|---|---|
| Market leader (84 users/30d) | $2.00 / 1,000 results | 2 (result + a bundled detail enrichment) |
| Closest full-stats competitor | $8.00 / 1,000 results | 1 |
| Tennis/football combo actor | $5.00 / 1,000 results | 5 (result, match detail, player profile, h2h, all surcharges) |
| This Actor | see pricing below | 8 (base match + 7 independently billed extras) |
No competitor measured breaks out shot maps or live odds as their own data point. Both are unique to this Actor in the niche as of this writing.
π How to use
- Create a free Apify account. New accounts get $5 in free credit.
- Open the Sofascore Match Stats Scraper and enter a team name (e.g. "Real Madrid") or a specific match ID.
- Toggle on the extras you need. Statistics is on by default; the rest are opt-in.
- Click Start and wait for the run to finish.
- Download your data as CSV, Excel, JSON or XML, or pull it via the API.
πΌ Business use cases
Sports media & content Auto-generate post-match recap stats, lineup graphics, and shot-map visualizations without manually copying numbers off a live site.
Fantasy sports & betting research tools Feed player ratings, lineups and historical head-to-head records into projection models, or track live odds movement across matches.
Sports analytics platforms Build historical statistics databases across 11 sports from one consistent schema instead of maintaining a separate scraper per sport.
Agencies & data resellers Package match data feeds for clients who need structured sports data without building and maintaining their own Sofascore integration.
π Automating Sofascore Match Stats Scraper
Connect this Actor to Make, Zapier, Slack, or Airbyte to push fresh match data into a spreadsheet, database, or channel automatically after each run. Schedule the Actor to run daily or after matches finish, then route the output dataset into Google Drive or a webhook for downstream processing.
π Beyond business use cases
Research: academic or independent research into match dynamics, xG accuracy, or home/away performance patterns across leagues. Personal projects: build your own live-score dashboard or fantasy league tracker. Non-profit: grassroots sports organizations tracking league statistics without a data budget. Experimentation: test sports-prediction models against real historical statistics and odds.
π€ Ask an AI assistant about this scraper
Paste this Actor's Store page into ChatGPT, Claude, or Perplexity and ask: "What fields does this Sofascore scraper return, and how do I get shot maps with expected goals for a specific match?" The Actor's README and input schema are structured so AI assistants can answer accurately from the page alone.
β Frequently Asked Questions
Does this scraper work for sports other than football? Yes, basketball, tennis, American football, ice hockey, baseball, rugby, esports, volleyball, handball and table tennis are all confirmed working via the live-match discovery mode.
Can I get matches for a specific calendar date? Not directly, Sofascore's own date-based schedule endpoint doesn't return data for any date tested (confirmed, not a gap in this Actor). Use a team name, live-right-now mode, or a direct match ID instead.
What are shot maps and does every match have one?
A shot map is every shot taken in a match with player, body part, situation
and expected goals (xG). It's available for football, basketball and
handball; other sports return "N/A" since Sofascore doesn't track it for
them.
Are the betting odds live or historical? The odds returned are Sofascore's own live bookmaker market data for the match's full-time result. This is informational sports data, not betting advice.
Why does pregameForm sometimes say "N/A"? Sofascore only keeps pre-match form data for a rolling window around the match date. Older fixtures genuinely don't have it anymore, this Actor reports that honestly instead of returning stale or fabricated data.
How do I find a Sofascore match ID?
It's the number in a match's Sofascore URL, e.g.
sofascore.com/.../id:12345678, copy the digits after id:.
Does this Actor need cookies or a Sofascore account? No. Every field comes from Sofascore's own public match API; no login or session is required.
What happens if I enable an extra a match doesn't have?
You get "N/A" for that field, and you're not charged for that extra on that
row, you only pay for data you actually received.
Can I search by player name instead of team? Not in this version, team name, match ID, and live-by-sport are the three supported ways to find matches.
How fresh is the live match data? Live mode reflects Sofascore's live feed in real time at the moment the Actor runs, including live scores and in-play odds.
π Integrate with any app
Every run's output is available as CSV, Excel, JSON or XML, or through Apify's API and client libraries for Python and JavaScript, pipe match data straight into a spreadsheet, database, or your own application.
π Recommended Actors
Browse the rest of the PunkRecordsData catalog for more scrapers covering social media, marketplaces and pricing intelligence.
π‘ Pro Tip: browse the complete PunkRecordsData collection.
π Need Help? contact.punkrecordsdata@gmail.com
β οΈ Disclaimer: This is an independent tool, not affiliated with, endorsed by, or sponsored by Sofascore. It collects only publicly available match data. Odds data is informational only and not betting advice.