🚀 Sofascore Scraper · 5,000 Free Matches/Month
Pricing
from $1.00 / 1,000 results
🚀 Sofascore Scraper · 5,000 Free Matches/Month
Sofascore Scraper gets you Sofascore matches ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — live scores, fixtures & results for 26 sports, with full stats, lineups & incidents on demand. 💰 $1 per 1,000 matches, no start fee. Scrape your first 5,000 matches free every month 🚀
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Chetan Jain
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Sofascore Scraper
Sofascore Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Sofascore match data.
Sofascore covers live scores, fixtures and results for 26 sports — football, tennis, basketball, ice hockey, cricket, MMA, esports and more — and every run scrapes it live, so you get today's scores, lineups and statistics as they happen, and can successfully complete your project.
$1 per 1,000 matches. And with Apify's free plan you get $5 of credit every month, so your first ~5,000 matches each month are free.
This is an excellent Actor made by Omkar Cloud, which is Rated Excellent — 4.7 based on 30 reviews on Trustpilot.
👉 Try Sofascore Scraper free — your first ~5,000 matches are Free.
What can I get
- ⚽ Fixtures, live scores & results for 26 sports — every match of a sport on any day (past days give results, future days give fixtures), narrowed to one tournament or country if you like; the matches in progress right now; or the matches fans in a country are following
- 🏆 One row per match — teams with logos, codes, colours & follower counts, score by period, status & clock, winner, kick-off time, round, tournament & category, season, venue with coordinates, and the sofascore.com link
- 📋 Full match details on demand — managers, venue, referee with career totals, attendance & period format, plus team statistics per period (possession, xG, shots, passes, duels, tackles, goalkeeping), confirmed lineups & benches with formation, missing players & every player's per-match statistics, and the incident timeline (goals with scorer & assist, cards, substitutions, VAR decisions, injury time)
- 🔗 Any match URL — paste sofascore.com match links or ids and get the full profile back
Why Sofascore Scraper
Most other Sofascore scrapers fail you in one of four ways:
- 🗄️ Inaccurate, cached, stale data
- 🧩 Low-detail data — a score and two team names, never the statistics, lineups or timeline
- 💸 Pay more to get the same data — start fees, tiers and paid "enrichment" events
- 🪦 Works today, breaks next month — nobody maintains it
Sofascore Scraper is scraped live on every run, priced honestly, and actively maintained.
Example: A Full Sofascore Match
{"mode": "scheduled","sport": "football","search_date": "2026-05-24","id": 14023961,"custom_id": "rP","slug": "aston-villa-manchester-city","link": "https://www.sofascore.com/football/match/aston-villa-manchester-city/rP#id:14023961","start_time": "2026-05-24T15:00:00Z","status": { "code": 100, "type": "finished", "description": "Ended" },"is_live": false,"is_finished": true,"winner_code": 2,"home_team": {"id": 17, "name": "Manchester City", "short_name": "Man City", "code": "MCI","link": "https://www.sofascore.com/team/football/manchester-city/17","image_link": "https://img.sofascore.com/api/v1/team/17/image","country": { "name": "England", "alpha2": "EN", "alpha3": "ENG", "slug": "england" },"followers_count": 4747370, "founded_date": "1880-11-23","manager": { "id": 794873, "name": "Enzo Maresca", "link": "https://www.sofascore.com/manager/enzo-maresca/794873", "country": { "name": "Italy", "alpha2": "IT", "alpha3": "ITA", "slug": "italy" } }},"away_team": {"id": 40, "name": "Aston Villa", "short_name": "Aston Villa", "code": "AVL","link": "https://www.sofascore.com/team/football/aston-villa/40","image_link": "https://img.sofascore.com/api/v1/team/40/image","country": { "name": "England", "alpha2": "EN", "alpha3": "ENG", "slug": "england" },"followers_count": 1090431, "founded_date": "1874-03-01","manager": { "id": 53062, "name": "Unai Emery", "link": "https://www.sofascore.com/manager/unai-emery/53062", "country": { "name": "Spain", "alpha2": "ES", "alpha3": "ESP", "slug": "spain" } }},"home_score": { "current": 1, "display": 1, "periods": { "period1": 1, "period2": 0, "normaltime": 1 } },"away_score": { "current": 2, "display": 2, "periods": { "period1": 0, "period2": 2, "normaltime": 2 } },"round": { "number": 38, "name": null, "slug": null, "cup_round_type": null },"tournament": {"id": 17, "name": "Premier League", "slug": "premier-league","link": "https://www.sofascore.com/tournament/football/england/premier-league/17","image_link": "https://img.sofascore.com/api/v1/unique-tournament/17/image","category": { "id": 1, "name": "England", "country": { "name": "England", "alpha2": "EN", "alpha3": "ENG", "slug": "england" } }},"season": { "id": 76986, "name": "Premier League 25/26", "year": "25/26" },"time": { "injury_time1": 3, "injury_time2": 10, "current_period_start_time": "2026-05-24T16:05:15Z" },"venue": { "id": 606, "name": "Etihad Stadium", "capacity": 53400, "city": "Manchester", "coordinates": { "latitude": 53.483091, "longitude": -2.200252 } },"referee": { "id": 79884, "name": "Andy Madley", "link": "https://www.sofascore.com/referee/andy-madley/79884", "career": { "games": 462, "yellow_cards": 1440, "red_cards": 36, "second_yellow_cards": 16 } },"attendance": 60332,"format": { "period_count": 2, "period_length_minutes": 45, "overtime_length_minutes": 15 },"has_highlights": true,"has_xg": true,"has_player_statistics": true,"statistics": [{"period": "ALL","groups": [{ "name": "Match overview", "items": [{ "key": "ballPossession", "name": "Ball possession", "home": "53%", "away": "47%", "home_value": 53, "away_value": 47 },{ "key": "expectedGoals", "name": "Expected goals", "home": "1.34", "away": "1.77", "home_value": 1.34, "away_value": 1.77 }] },{ "name": "Shots", "items": [{ "key": "totalShotsOnGoal", "name": "Total shots", "home": "16", "away": "12", "home_value": 16, "away_value": 12 }] }]},{ "period": "1ST", "groups": ["…"] },{ "period": "2ND", "groups": ["…"] }],"lineups": {"is_confirmed": true,"home": {"formation": "4-2-2-2","players": [{"player": { "id": 980643, "name": "James Trafford", "short_name": "J. Trafford", "link": "https://www.sofascore.com/player/james-trafford/980643", "position": "G", "jersey_number": 1, "date_of_birth": "2002-10-10", "market_value": { "amount": 27000000, "currency": "EUR" } },"position": "G", "jersey_number": 1, "is_substitute": false, "is_captain": false,"statistics": { "minutes_played": 90, "rating": 6.5, "total_pass": 11, "accurate_pass": 10, "touches": 16, "saves": 3 }},"…"],"missing_players": [{ "player": { "id": 189061, "name": "Jack Grealish", "link": "https://www.sofascore.com/player/jack-grealish/189061" }, "type": "missing", "reason": 1, "description": "Foot Injury" }],"kit_colors": { "player": { "primary": "abd1f5", "number": "000000", "outline": "abd1f5" }, "goalkeeper": { "primary": "008b48", "number": "feb139", "outline": "008b48" } }},"away": { "formation": "4-2-3-1", "players": ["…"], "missing_players": ["…"], "kit_colors": { "…": "…" } },"statistical_version": 3},"incidents": [{ "type": "substitution", "class": "regular", "time": 86, "is_home": false, "player_in": { "id": 250223, "name": "John McGinn" }, "player_out": { "id": 98435, "name": "Ross Barkley" } },{ "type": "card", "class": "yellow", "time": 82, "is_home": true, "player": { "id": 1136731, "name": "Rico Lewis", "link": "https://www.sofascore.com/player/rico-lewis/1136731" }, "reason": "Foul" },{ "type": "goal", "class": "regular", "time": 61, "home_score": 1, "away_score": 2, "is_home": false, "player": { "id": 555386, "name": "Ollie Watkins", "link": "https://www.sofascore.com/player/ollie-watkins/555386" }, "assist1": { "id": 98435, "name": "Ross Barkley" } },{ "type": "goal", "class": "regular", "time": 47, "home_score": 1, "away_score": 1, "is_home": false, "player": { "id": 555386, "name": "Ollie Watkins", "link": "https://www.sofascore.com/player/ollie-watkins/555386" }, "assist1": null },{ "type": "goal", "class": "regular", "time": 23, "home_score": 1, "away_score": 0, "is_home": true, "player": { "id": 934354, "name": "Antoine Semenyo", "link": "https://www.sofascore.com/player/antoine-semenyo/934354" }, "assist1": null },"…"]}
Trimmed for readability — the real row lists every statistic of every period, all 20 players of each side with their full per-match statistics, and the complete incident timeline. Without Scrape Full Match Details the row stops at is_final_result_only, minus the managers, venue, referee, attendance and format.
Get Started with 5,000 Free Matches
- Hit Try for Free Button — the input is pre-filled with today's football matches.
- Enjoy your data 😎.
Pricing
High value, Low price.
| What | Price | What you get |
|---|---|---|
| Standard matches | $1 per 1,000 | id, link, kick-off time, status & clock, winner, score by period, both teams with logo, code, country, colours & follower count, round, tournament & category, season, venue with coordinates, coverage flags + the search context (mode, sport, search_date) |
| Detailed matches | $3 per 1,000 | Everything above + managers, venue, referee with career totals, attendance & period format, team statistics per period, confirmed lineups & benches with formation, missing players & every player's per-match statistics, and the incident timeline (goals, cards, substitutions, VAR decisions, injury time) |
No start fee — you pay only for the rows you get. Control your spend with Max Matches per Search: 1,000 matches ≈ $1. A day of football at the default 100 matches costs about $0.10, or $0.30 with full details.
💡 Apify's free plan includes $5 of credit every month — about 5,000 free matches, or ~1,666 fully-detailed matches, every month.
👉 Scrape your first 5,000 matches free
Run It from Code
Grab your API token from Integrations Settings here and replace <YOUR_API_TOKEN> below.
Python (pip install apify-client)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("omkar-cloud/sofascore-scraper").call(run_input={"sports": ["football"],"mode": "scheduled","date": "2026-05-24","tournamentId": "17","scrapeDetails": True,"maxResults": 10,})for match in client.dataset(run["defaultDatasetId"]).iterate_items():print(match["home_team"]["name"], match["home_score"]["display"], "-", match["away_score"]["display"], match["away_team"]["name"])
Node.js (npm install apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('omkar-cloud/sofascore-scraper').call({matchUrls: ['https://www.sofascore.com/football/match/aston-villa-manchester-city/rP#id:14023961'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
FAQ
Do I have to set a date?
No. Leave Date empty and the Scheduled mode lists today's matches — "today" as set by Timezone Offset (UTC unless you change it; 5.5 for India, -5 for US Eastern). Set a past date for results or a future date for fixtures. Dates are YYYY-MM-DD. The Live and Trending modes ignore the date.
Which sports can I scrape?
All 26 that Sofascore covers: football, tennis, basketball, ice-hockey, volleyball, handball, baseball, american-football, rugby, cricket, table-tennis, esports, mma, motorsport, darts, snooker, badminton, futsal, waterpolo, aussie-rules, beach-volley, cycling, floorball, bandy, minifootball and padel (soccer, hockey, nfl and ufc work as aliases). List several under Sports and each is searched separately; rows carry sport so you can tell them apart.
How do I get one league or one country only?
Set Tournament id to the competition's Sofascore id (17 for the Premier League — it is the last number of the tournament's sofascore.com URL, and pasting that URL works too) or Category id to a Sofascore category (1 for England). Both apply to the Scheduled mode and return that competition's or country's matches on the day.
How many matches do I get per search?
A day's schedule comes back tournament by tournament, 20 tournaments per page (a page of football is roughly 80 matches); the Actor keeps paging until it has Max Matches per Search matches or the day runs out. Live and Trending return everything in one go, capped at the same number. Matches found twice in a run — the same match under two sports, or a match URL that also appears in a search — are scraped and billed only once.
What does "Scrape Full Match Details" add?
Four more fields on each row: the full match card (managers, venue with coordinates, referee with career totals, attendance, period format), statistics (team statistics per period — ALL, 1ST, 2ND — in Sofascore's groups: Match overview, Shots, Attack, Passes, Duels, Defending, Goalkeeping), lineups (formation, every player with their per-match statistics, bench, missing players with the reason, kit colours) and incidents (goals with scorer, assist and running score, cards with reason, substitutions, VAR decisions, injury time, period markers). A match that has not kicked off yet has no statistics or incidents, so those come back null; sports without lineups (tennis, MMA…) return null there too. Match URLs are always scraped in full.
Is the data live?
Yes. Every run fetches Sofascore live — scores, clocks, statistics and lineups are as fresh as Sofascore itself, which updates in-play matches every minute.
What does it cost?
$0.001 per match — $1 per 1,000, flat on every plan, with no start fee. Full details add $0.002 per match ($3 per 1,000 all in), charged only when the details come back — if Sofascore has no details page for a match you keep the standard row at the standard rate. Apify's free plan gives you $5 of credit every month, which is 5,000 matches or ~1,666 fully-detailed matches free every month.
Is it legal to scrape Sofascore?
The Actor collects publicly available sports data — scores, fixtures, statistics and lineups — without personal information beyond the public profiles of professional players and staff. Please review Sofascore's terms of use and make sure your use complies with the law of your jurisdiction.
Can I get standings, player profiles or odds?
Not with this Actor — it is built for matches. Message us below if you need standings, player or team statistics, transfers or odds and we will sort you out.
💬 Have Questions? We Have Answers.
You're a business owner — we know how hard completing a project can be. So we offer full support: just message us and we'll reply ✅ with a solution within 1 working day.
You are important to us — just message us and we will solve your problem ✅ within 1 working day. 🩷 Pinky Promise 🤙!
Popular Actors by Omkar Cloud
- Skyscanner Scraper — Skyscanner flights with every agent's price & booking link, $1 per 1,000 itineraries
- Booking Scraper — Booking.com hotels: prices, ratings, rooms & amenities
- Rightmove Scraper — UK homes for sale, to rent & new homes with agent phones, $1 per 1,000 listings
- Zoopla Scraper — Zoopla homes for sale, to rent & new homes with agent phones, $1 per 1,000 listings
- IMDb Scraper — IMDb titles, charts, cast, ratings & box office
- G2 Product Scraper — G2 product details, ratings & AI-found contacts
- Website Email Contact Scraper — emails, phones & socials from any website
- AliExpress Product Scraper — live product details, SKU variants, stock & shipping
- Etsy Scraper — Etsy products: prices, discounts, shops & variations

