Soccer Scraper
Pricing
from $0.50 / 1,000 results
Soccer Scraper
Match results, fixtures and league tables from ESPN for the Premier League, LaLiga, Bundesliga, Serie A, Ligue 1, MLS and the Champions League. Set a date range of up to 120 days and get one row per match with the score, kickoff time, stadium and, if you want, team statistics.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Soccer Scraper reads ESPN's scoreboards for the Premier League, LaLiga, the Bundesliga, Serie A, Ligue 1, MLS and the Champions League. Each match is one row with both clubs, the score, the kickoff time in UTC, the stadium, the crowd and the US TV channels. Set a date range and click Start: 19 and 20 September 2026 returned 57 matches. League tables, squads and news are separate modes. Goal scorers, cards per player and line-ups are not part of the output. It costs $1.00 per 1,000 results on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 results.
What does a match row contain?
| Field | Description |
|---|---|
league, leagueName | League key and ESPN's name for it, e.g. epl and English Premier League. |
name, shortName | The fixture with the away club first: Aston Villa at Tottenham Hotspur, AVL @ TOT. |
startsAt | Kickoff as an ISO 8601 timestamp in UTC. |
status, statusDetail, completed | pre, in or post; ESPN's label such as FT or Postponed; true once the match was played to the end. |
period, clock | Half and match clock at the last update. A finished match shows 2 and the added time, e.g. 90'+9'. |
home.score, home.winner | Goals of the home club and whether it won; away has the same fields. After a draw both winner flags are false. |
home.record | The club's current league record as wins, draws and losses, e.g. 0-2-3. |
seasonYear, seasonType | ESPN's season labels: 2026 and 2026-27-english-premier-league for this Premier League season, league-phase in the Champions League. |
venue, attendance | Stadium, city and country, and the crowd ESPN reports; 0 when it has no figure. |
broadcasts | US TV and streaming channels ESPN lists, e.g. USA Net. |
odds | ESPN's betting line when it has one: provider, the home, away and draw moneylines (the draw in drawMoneyLine, e.g. 380), each side's handicap with its price, the total, and the home club's handicap in spread, e.g. -1.5. ESPN marks no favorite in soccer, so favorite is null and details names the club with the shorter price, as in ARS -270. The whole field is null when the only bookmaker is Bet 365, whose fractional and decimal odds are not read; on 30 September 2026 that applied to one Bundesliga and two MLS matches. |
detail.teamStats | Only with the box score option: 28 statistics per club, among them possessionPct, totalShots, shotsOnTarget, wonCorners and yellowCards. |
url | Match page on espn.com. |
League table rows (type is standing) keep the figures in stats: rank, gamesPlayed, wins, ties (draws), losses, pointsFor (goals scored), pointsAgainst (goals conceded), pointDifferential, points and overall, e.g. 5-0-0. Squad rows (athlete) carry jersey, position such as Goalkeeper, heightCm, weightKg, age and status. News rows have the headline in title, a summary, publishedAt and the article url.
How to scrape soccer results and tables
- In Leagues, keep the seven prefilled keys or delete the ones you do not need:
epl,laliga,bundesliga,seriea,ligue1,mls,ucl. - Leave What to return on Games and results for matches. League table gives one row per club, Teams the clubs with their
teamId, Team rosters the squads, Team schedules each club's played and upcoming matches, and League news the latest ESPN stories. - Fill From date and To date with dates such as
2026-09-19, or with moving dates such as-7andtodayfor a task that runs every week. ESPN answers one day per request; a run covers up to 120 days. - Turn on Include box score and injuries for match statistics. Game status keeps only finished, live or upcoming matches.
- Click Start. The matches appear in the Output tab as a table that you can download as CSV, Excel or JSON, or fetch through the API with an input like this:
{"leagues": ["epl", "laliga", "ucl"],"mode": "scoreboard","dateFrom": "-7","dateTo": "today","statusFilter": "final","includeGameDetail": true}
Example output
One match from a run on 30 September 2026 with the box score option on. For this match ESPN filled only the team statistics, so injuries, headlines and lastPlay are empty.
{"key": "espn:epl:401879269","type": "game","sport": "soccer","league": "epl","leagueName": "English Premier League","gameId": "401879269","name": "Aston Villa at Tottenham Hotspur","shortName": "AVL @ TOT","round": null,"startsAt": "2026-09-19T11:30:00.000Z","status": "post","statusDetail": "FT","completed": true,"period": 2,"clock": "90'+9'","seasonYear": 2026,"seasonType": "2026-27-english-premier-league","home": {"id": "367","kind": "team","name": "Tottenham Hotspur","shortName": "TOT","location": "Tottenham Hotspur","score": 2,"winner": false,"record": "0-2-3","position": 0,"homeAway": "home","periodScores": [],"logo": "https://a.espncdn.com/i/teamlogos/soccer/500/367.png"},"away": {"id": "362","kind": "team","name": "Aston Villa","shortName": "AVL","location": "Aston Villa","score": 3,"winner": true,"record": "1-1-3","position": 1,"homeAway": "away","periodScores": [],"logo": "https://a.espncdn.com/i/teamlogos/soccer/500/362.png"},"venue": {"name": "Tottenham Hotspur Stadium","city": "London","state": null,"country": "England","indoor": null},"attendance": 60920,"neutralSite": null,"broadcasts": ["USA Net","Universo"],"odds": null,"url": "https://www.espn.com/soccer/match/_/gameId/401879269/aston-villa-tottenham-hotspur","detail": {"teamStats": [{"teamId": "367","name": "Tottenham Hotspur","stats": {"foulsCommitted": "9","yellowCards": "1","redCards": "0","offsides": "5","wonCorners": "11","saves": "3","possessionPct": "63.8","totalShots": "20","shotsOnTarget": "7","shotPct": "0.4","penaltyKickGoals": "0","penaltyKickShots": "0","accuratePasses": "497","totalPasses": "571","passPct": "0.9","accurateCrosses": "4","totalCrosses": "28","crossPct": "0.1","totalLongBalls": "33","accurateLongBalls": "15","longballPct": "0.5","blockedShots": "4","effectiveTackles": "16","totalTackles": "35","tacklePct": "0.5","interceptions": "9","effectiveClearance": "10","totalClearance": "10"}},{"teamId": "362","name": "Aston Villa","stats": {"foulsCommitted": "13","yellowCards": "2","redCards": "0","offsides": "2","wonCorners": "1","saves": "5","possessionPct": "36.2","totalShots": "15","shotsOnTarget": "6","shotPct": "0.4","penaltyKickGoals": "0","penaltyKickShots": "0","accuratePasses": "278","totalPasses": "331","passPct": "0.8","accurateCrosses": "1","totalCrosses": "6","crossPct": "0.2","totalLongBalls": "48","accurateLongBalls": "24","longballPct": "0.5","blockedShots": "3","effectiveTackles": "9","totalTackles": "18","tacklePct": "0.5","interceptions": "14","effectiveClearance": "37","totalClearance": "37"}}],"injuries": [],"headlines": [],"lastPlay": null,"attendance": 60920}}
When the leagues play
The five European leagues run from August to May and pause for international breaks: ESPN listed no Premier League match from 21 September to 9 October 2026. MLS kept playing through that break, with 14 games on 26 September, one of them postponed. With both dates empty, ESPN returns the matches of the current day, or during a break the last day that had matches; on 26 September that meant the four Premier League matches of 20 September.
To follow matches live, save the input as a task (or give it a Watch name), turn on Return only what changed since the last run and schedule it every few minutes on match days. Each run returns only new matches and matches whose score or status text changed, and the CHANGES record in the run's storage lists every change with the old and the new value. With Only games with a betting line turned on, a match whose price or handicap moved comes back as well, and in League table a club returns when its points, goals or rank change.
How much does it cost to scrape soccer data?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 results | $1.00 | $0.80 | $0.65 | $0.50 |
| Box score and injuries, per 1,000 | $1.00 | $0.80 | $0.65 | $0.50 |
You pay only for the events in the table. There is no start fee, and compute time and proxies are included.
A full Premier League season of 380 matches costs $0.38 on the Free plan and $0.19 on Business. Match statistics for all 380 add $0.38 on the Free plan, one box score event per match. Unchanged matches in the live mode and days without matches cost nothing.
Limits
- A run reads at most 120 days, so a European season from August to May takes three runs.
- There is no half-time score and no list of substitutions either;
periodScoresstays empty for soccer. oddscovers three markets from one bookmaker: the match result with the draw, the handicap and total goals. Other markets such as both teams to score are not read.- ESPN marks postponed and canceled matches as
postwithcompletedset tofalse. The Finished filter leaves them out. statusDetailgives upcoming kickoffs in US Eastern time andstartsAtin UTC, so an evening MLS kickoff falls on the next UTC day.- The form prefills Maximum rows with 200. A run started without that field stops at 2,000 rows.
FAQ
Is it legal to scrape soccer results from ESPN?
Scores, fixtures and league tables are facts that ESPN shows to every visitor, and the actor reads them from ESPN's public JSON feeds without logging in. News rows hold the headline, summary and link, never the article text, and squad rows contain what clubs publish about their professional players. You are responsible for how you use the data, including any rights that apply when you republish it.
How do I get the players of one club?
Run Teams once to find the club's teamId (Arsenal is 359), then choose Team rosters and enter the ID in Team identifiers. Without IDs the actor reads every club of the league, which means 20 squads for the Premier League.
Are cup competitions included?
Only the Champions League. The actor reads the seven competitions listed above, so domestic cups, the Europa League and national teams are not covered.
Related scrapers
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.