Sofascore Scraper
Pricing
from $0.70 / 1,000 results
Sofascore Scraper
Scrape Sofascore for live scores, fixtures, match stats, lineups, incidents, odds, standings, teams and players. 110+ fields with 9 enrichments. Football, basketball, tennis and 10+ sports. JSON/CSV/Excel. API, MCP, webhook, AI-agent ready.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Scrape Smith
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
⚽ Sofascore Scraper
Live sports data — matches, teams, players, standings — clean structured JSON in seconds.
Extract live scores, fixtures, results, team profiles, player profiles, and league/tournament data from Sofascore in clean, structured JSON — no coding required. Built for sports bettors, fantasy sports players, sports media teams, data analysts, and AI agents that need reliable, structured sports data on demand.
🎯 Why Use This Scraper
✅ One actor, every sports data need — pull live matches, scheduled fixtures, team pages, player pages, and tournament standings from a single tool instead of stitching together multiple sources.
✅ Clean, analysis-ready output — every match, team, and player record is normalized into consistent fields, so you can plug the data straight into a spreadsheet, database, or machine learning pipeline without cleanup.
✅ No-code web scraping — set your inputs (sport, date, teams, or search terms) and run; the actor handles the rest and hands you a ready-to-use dataset.
✅ Built for automation — export instantly to JSON, CSV, Excel, or XML, or wire the actor into your existing stack via API, webhook, or no-code automation tools like Zapier, Make, and n8n.
🚀 Features
✅ Scrape live, in-play matches across football/soccer and many other sports, updated on demand.
✅ Pull scheduled fixtures and results for any date, with support for looking ahead multiple days.
✅ Fetch data directly from match, team, player, or tournament URLs for targeted collection.
✅ Search by name to find teams, players, or tournaments and retrieve their full profile data.
✅ Detailed match statistics — possession, shots, passes, xG, and more, where available.
✅ Lineups and formations — starting XI, substitutes, and player ratings per match.
✅ Match incidents — goals, cards, substitutions, and other key match events in sequence.
✅ League standings and current-season tournament context attached to matches and team results.
✅ Team squads and player profiles, including position, market value, and career/contract details.
✅ Optional betting market and fan-vote data, plus historical head-to-head records between teams.
📊 Output Fields
The scraper returns different record shapes depending on what you're collecting (matches, teams, players, or tournaments). Every field below is a real field name produced by the actor.
⏱️ Match / Event Info
| Field | Description |
|---|---|
type | Record type, e.g. "match" |
id | Unique Sofascore match/event ID |
sport | Sport slug (e.g. football, basketball, tennis) |
country | Category/region the competition belongs to |
tournament | Tournament name for this specific match |
tournamentSlug | URL-friendly tournament identifier |
uniqueTournamentId | ID of the parent competition (stable across seasons) |
uniqueTournamentName | Name of the parent competition |
seasonName | Season label (e.g. 2025/2026) |
seasonYear | Season year |
round | Round or matchday number |
startTimestamp | Match kickoff time (Unix timestamp) |
startTime | Match kickoff time (ISO 8601) |
eventSlug | URL-friendly match identifier |
customId | Sofascore custom short ID |
url | Direct link to the match page |
scrapedAt | Timestamp when the record was collected |
🏆 Score & Status
| Field | Description |
|---|---|
homeScore | Current/final score for the home side |
awayScore | Current/final score for the away side |
homeScorePeriod1 / homeScorePeriod2 | Home team score by period/half |
awayScorePeriod1 / awayScorePeriod2 | Away team score by period/half |
homeScoreNormaltime / awayScoreNormaltime | Score at the end of regulation time |
homeScorePenalties / awayScorePenalties | Penalty shootout score, if applicable |
statusCode | Numeric match status code |
statusType | Match status category (e.g. finished, live, scheduled) |
statusDescription | Human-readable match status |
winnerCode | Indicates which side won (or draw) |
hasXg | Whether expected-goals data is available for this match |
⚽ Team Info (Match Context)
| Field | Description |
|---|---|
homeTeamId / awayTeamId | Unique team IDs |
homeTeamName / awayTeamName | Full team names |
homeTeamShortName / awayTeamShortName | Short team names |
homeTeamSlug / awayTeamSlug | URL-friendly team identifiers |
homeTeamCountry / awayTeamCountry | Country each team represents |
🏟️ Venue & Match Officials
| Field | Description |
|---|---|
venue | Stadium/arena name |
venueCity | City where the venue is located |
venueCountry | Country where the venue is located |
venueCapacity | Stadium capacity |
referee | Match referee name |
attendance | Reported match attendance |
👥 Team Profile
| Field | Description |
|---|---|
type | "team" |
id | Unique team ID |
name | Team name |
fullName | Full official team name |
shortName | Short team name |
slug | URL-friendly team identifier |
nameCode | Short abbreviation/code (e.g. MUN) |
sport | Sport slug |
country | Country the team represents |
category | Competition category/tier |
national | Whether this is a national team |
gender | Team gender category |
managerName | Current head coach/manager name |
venueName | Home stadium/arena name |
venueCapacity | Home stadium capacity |
venueCity | Home stadium city |
primaryColor / secondaryColor | Official team colors |
foundationDateTimestamp | Club founding date (Unix timestamp) |
userCount | Number of Sofascore followers/fans |
url | Direct link to the team page |
squad | Full roster array (when enabled): id, name, position, jerseyNumber, height, country per player |
👤 Player Profile
| Field | Description |
|---|---|
type | "player" |
id | Unique player ID |
name | Player full name |
shortName | Short display name |
slug | URL-friendly player identifier |
sofascoreId | Sofascore-specific identifier |
position | Playing position |
jerseyNumber | Shirt/jersey number |
height | Player height |
preferredFoot | Preferred foot |
dateOfBirthTimestamp | Date of birth (Unix timestamp) |
country | Player's nationality |
gender | Player gender category |
deceased | Whether the player is deceased |
marketValue | Estimated market value |
marketValueCurrency | Currency of the market value figure |
contractUntilTimestamp | Contract expiry date (Unix timestamp) |
teamId / teamName | Current club ID and name |
userCount | Number of Sofascore followers/fans |
url | Direct link to the player page |
🏅 Tournament / League Info
| Field | Description |
|---|---|
type | "tournament" |
id | Unique tournament ID |
name | Tournament/league name |
slug | URL-friendly tournament identifier |
sport | Sport slug |
country | Country/region of the competition |
category | Competition category |
tier | Competition tier/level |
hasStandings | Whether a standings table is available |
titleHolderName | Current title holder |
mostTitlesCount | Number of titles held by the most successful team(s) |
mostTitlesTeamNames | Names of the most successful team(s) |
primaryColor | Competition brand color |
userCount | Number of Sofascore followers/fans |
currentSeasonId / currentSeasonName | Current season ID and label |
url | Direct link to the tournament page |
standings | League table array (when enabled) |
📈 Optional Deep-Dive Data
When enabled in the input, match records can also include statistics (possession, shots, passes, xG and more), lineups (starting XI, substitutes, formations, ratings), incidents (goals, cards, substitutions in order), odds (betting markets, where available), votes (fan prediction polls), and h2h (head-to-head history between the two teams).
💼 Use Cases
✅ Sports betting research — build your own models and compare markets using structured match, score, and status data.
✅ Fantasy sports — track player positions, team form, and fixture data to optimize lineup decisions.
✅ Sports journalism & media — pull fast, structured match results and player/team profiles for articles, graphics, and match reports.
✅ Machine learning & prediction models — feed clean historical match, score, and statistics data into training pipelines for outcome prediction models.
✅ Fan apps & live score widgets — power a website, app, or dashboard with up-to-date match, team, and league data.
✅ Historical stats analysis — analyze team and player performance trends across seasons and tournaments.
✅ Scouting & recruitment research — compare player profiles, positions, and market values across leagues.
✅ Academic & sports analytics research — collect large, structured sports datasets for statistical studies.
📥 Input
Configure the actor with a simple JSON input — choose a mode, set your filters, and run:
{"mode": "scheduled","sports": ["football"],"date": "2026-08-15","daysAhead": 2,"maxItems": 200,"includeVenueDetails": true,"includeStatistics": true,"includeLineups": true,"includeIncidents": true,"includeOdds": false,"includeVotes": false,"includeH2h": false,"includeStandings": true,"includeSquad": false}
Supported modes:
🏆 live — currently in-play matches across your chosen sports.
🏆 scheduled — all matches for a target date (plus optional days ahead).
🏆 url — specific match, team, player, or tournament pages by direct link.
🏆 search — find teams, players, or tournaments by name/keyword.
You can also target specific entities directly with urls (direct Sofascore links) or searchQueries with an optional searchType filter (all, team, player, tournament). Use maxItems to cap the size of any run.
📤 Output Example
{"type": "match","id": 12847563,"sport": "football","country": "Spain","tournament": "LaLiga","tournamentSlug": "laliga","uniqueTournamentId": 8,"uniqueTournamentName": "LaLiga","seasonName": "2025/2026","seasonYear": "2025","round": 3,"homeTeamId": 2817,"homeTeamName": "Atletico Madrid","homeTeamShortName": "Atletico","homeTeamSlug": "atletico-madrid","homeTeamCountry": "Spain","awayTeamId": 2829,"awayTeamName": "Real Madrid","awayTeamShortName": "Real Madrid","awayTeamSlug": "real-madrid","awayTeamCountry": "Spain","homeScore": 2,"awayScore": 1,"homeScorePeriod1": 1,"homeScorePeriod2": 1,"awayScorePeriod1": 0,"awayScorePeriod2": 1,"homeScoreNormaltime": 2,"awayScoreNormaltime": 1,"homeScorePenalties": 0,"awayScorePenalties": 0,"statusCode": 100,"statusType": "finished","statusDescription": "Ended","winnerCode": 1,"startTimestamp": 1755273600,"startTime": "2026-08-15T19:00:00.000Z","hasXg": true,"venue": "Estadio Civitas Metropolitano","venueCity": "Madrid","venueCountry": "Spain","venueCapacity": 68456,"referee": "Carlos Del Cerro Grande","attendance": 65210,"eventSlug": "atletico-madrid-real-madrid","customId": "EgbsLgb","url": "https://www.sofascore.com/event/12847563","scrapedAt": "2026-08-15T21:47:00.000Z"}
📁 Export Formats
Every run produces a structured dataset you can download or connect elsewhere in the format that suits your workflow: JSON, CSV, Excel (XLSX), or XML. Grab the data through the Apify platform UI, or automate the download entirely through the API.
🔗 Integrations
This scraper is built to fit straight into modern data and automation stacks:
🔗 API — trigger runs and retrieve results programmatically from any language or backend.
🔗 MCP server — connect this actor to an MCP server and let AI agents call it as a tool directly.
🔗 AI agents & LLMs — use it as a data source for Claude, ChatGPT, LangChain, and other AI agent frameworks that need live sports data.
🔗 Webhooks — get notified automatically the moment a run finishes or new data is ready.
🔗 Zapier — connect Sofascore data to thousands of other apps with zero code.
🔗 Make — build visual automation scenarios around scraped sports data.
🔗 n8n — plug this actor into self-hosted or cloud n8n workflows.
🔗 Google Sheets — pipe results straight into a spreadsheet for reporting and sharing.
💡 Tips for Best Results
💡 Use scheduled mode with a specific date and daysAhead to build a rolling fixture calendar instead of running repeated live-mode checks.
💡 Turn off deep-dive add-ons (includeStatistics, includeLineups, includeOdds, etc.) when you only need scores — it keeps runs faster and datasets smaller.
💡 Use search mode first to confirm a team, player, or tournament's exact identity before switching to url mode for repeated, targeted pulls.
💡 Set maxItems deliberately for large date ranges or broad searches to keep runs predictable.
💡 Schedule recurring runs (via the Apify platform or a webhook/automation tool) to keep a live-updating sports dataset without manual intervention.
❓ FAQ
Does this scraper work for sports other than football/soccer?
Yes. Sofascore covers many sports, and you can target any of them through the sports input for live and scheduled modes.
Can I get data for a specific match, team, or player instead of a whole date range? Yes. Use url mode with a direct Sofascore link, or search mode with a name or keyword to find and retrieve the right entity.
What format is the data delivered in? All results are delivered as a structured dataset, exportable to JSON, CSV, Excel, or XML directly from the platform.
Can I automate this with my existing tools? Yes. The actor supports API access, webhooks, and no-code integrations including Zapier, Make, n8n, and Google Sheets, plus MCP and AI agent connections for Claude, ChatGPT, and LangChain-based workflows.
Do I need any technical or coding skills to use this? No. Set your inputs through the simple form, run the actor, and download your results — no code required.
💳 Pricing
Pay only for results — no subscription required. Try it free.
🔗 Related Scrapers
Looking for other sports data sources? Check out our other sports scrapers to build out a complete, multi-source sports data pipeline.