ESPN Scraper — Scores, Schedules, Standings, Rosters & News
Pricing
$0.50 / 1,000 rows
ESPN Scraper — Scores, Schedules, Standings, Rosters & News
Scrape ESPN scores, schedules, standings, teams, rosters and news for NFL, NBA, MLB, NHL, college sports, soccer, F1, golf and UFC. Any date range, including the ranges ESPN's API now rejects with HTTP 400. $0.50 per 1,000 rows.
Pricing
$0.50 / 1,000 rows
Rating
0.0
(0)
Developer
Technical Dost Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
ESPN Scraper gets structured sports data from ESPN for 19 leagues: NFL, NBA, MLB, NHL, WNBA, college football and basketball, Premier League, LaLiga, Bundesliga, Serie A, Ligue 1, MLS, Liga MX, Champions League, Formula 1, PGA Tour and UFC. Choose what you need: games (scores, schedules, line scores, records, venue, attendance, TV, betting line, headline), standings, teams, player rosters (position, jersey, age, height, weight, college, headshot) and news articles. Pick any date range (or relative dates like -7 to +7 for scheduled runs) and filter by team. No API key, no login.
ESPN API date range returning 400? ESPN's scoreboard endpoint stopped accepting
dates=YYYYMMDD-YYYYMMDDranges ("Failed to get events endpoint"), which breaks most scripts that pull a week or a season of games. This Actor requests one day at a time in parallel and merges the results, so any range up to a year works.
What you get
- 19 leagues across football, basketball, baseball, hockey, soccer, F1, golf and MMA.
- Games: scores, status, quarter/period line scores, team records, venue, attendance, broadcasters, betting line (for upcoming games) and recap headline.
- Any date range up to a year, or relative dates (-7, +7, today) that stay valid in scheduled runs.
- Standings by conference/division with wins, losses, win %, games behind, streak and all ESPN stat columns.
- Rosters with position, jersey, age, height, weight, birth date and place, college, experience and headshot.
- Team filter by code, nickname or full name (e.g. KC, Lakers, Real Madrid). News articles with teams and athletes tagged.
How to use ESPN Scraper
- Pick Leagues and Data types (games, standings, teams, rosters, news).
- For games, set Start date and End date (YYYY-MM-DD, or -7 / +7 / today).
- Optionally add Teams to filter (e.g.
KC,Lakers). - Run and export to JSON, CSV or Excel, or feed Google Sheets, a dashboard, a betting model or an AI agent.
Input example
{"leagues": ["nfl","nba"],"dataTypes": ["games","standings"],"startDate": "-7","endDate": "+7"}
All fields are described in the Input tab.
Output example
{"type": "game","league": "nfl","gameId": "401873023","date": "2026-10-30T00:15Z","name": "Carolina Panthers at Green Bay Packers","shortName": "CAR @ GB","season": 2026,"seasonType": "regular-season","status": "Final","statusDetail": "Final","completed": true,"homeTeam": {"id": "9","name": "Green Bay Packers","abbreviation": "GB","score": 27,"winner": true,"record": "5-3","linescores": [6,14,7,0],"leaders": []},"awayTeam": {"id": "29","name": "Carolina Panthers","abbreviation": "CAR","score": 19,"winner": false,"record": "3-4","linescores": [3,7,3,6],"leaders": []},"participants": [],"venue": "Lambeau Field","venueCity": "Green Bay","venueState": "WI","attendance": 76957,"broadcasts": ["Prime Video"],"odds": null,"headline": "Love throws 3 TD passes as the Packers beat the Panthers 27-19","url": "https://www.espn.com/nfl/game/_/gameId/401873023/panthers-packers","scrapedAt": "2026-11-01T20:47:19.364Z"}
Output fields
| Field | Description |
|---|---|
type | game, team, player, standing or article. |
league | League key, e.g. nfl, eng.1. |
gameId | ESPN game ID. |
date | Start time (UTC). |
name | Game, team or player name. |
shortName | Short game name, e.g. CAR @ GB. |
season | Season year. |
seasonType | regular-season, post-season... |
status | Scheduled, In Progress, Final... |
statusDetail | Detail, e.g. Final/OT or 7:30 PM ET. |
completed | Game finished. |
homeTeam | Home team: id, name, abbreviation, score, winner, record, line scores, leaders. |
awayTeam | Away team (same fields). |
participants | Participants for F1, golf and UFC events. |
venue | Venue. |
venueCity | Venue city. |
venueState | Venue state/country. |
attendance | Attendance. |
broadcasts | TV/streaming. |
odds | Betting line (details, over/under, spread) when shown. |
headline | Recap/preview headline. |
url | ESPN page URL. |
teamId | ESPN team ID. |
abbreviation | Team code. |
location | Team location. |
nickname | Team nickname. |
color | Team color. |
alternateColor | Alternate color. |
logoUrl | Team logo. |
playerId | ESPN player ID. |
teamName | Team name. |
position | Position. |
jersey | Jersey number. |
age | Age. |
height | Height. |
weight | Weight. |
birthDate | Birth date. |
birthPlace | Birthplace. |
experienceYears | Years of experience. |
college | College. |
headshotUrl | Player photo. |
group | Conference/division/group. |
rank | Rank or seed. |
wins | Wins. |
losses | Losses. |
ties | Ties/draws. |
winPercent | Win %. |
gamesBehind | Games behind. |
points | Points (soccer/hockey). |
streak | Streak. |
stats | All ESPN standings columns. |
articleId | Article ID. |
description | Article summary. |
published | Publish time. |
articleType | Story, Recap... |
byline | Author. |
teams | Teams tagged in the article. |
athletes | Athletes tagged in the article. |
imageUrl | Article image. |
scrapedAt | When the row was scraped. |
Export results as JSON, CSV, Excel, XML or HTML, or read them with the API.
Use cases
- Sports apps, Discord bots and newsletters: daily scores, schedules and headlines.
- Fantasy sports and betting models: results, line scores, standings and rosters.
- Media and data journalism: season datasets for any league.
- Dashboards: schedule a run with relative dates for a rolling week of games.
- AI agents: give an assistant fresh, structured sports facts.
How much does ESPN Scraper cost?
This Actor uses pay-per-event pricing: $0.0005 per row ($0.5 per 1,000). Platform usage is included. There is no start fee. Leagues or dates with no data cost nothing.
Set Maximum cost per run in the run options to cap your spend; the Actor stops when the limit is reached.
Use ESPN Scraper with AI agents (MCP)
Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through the hosted Apify MCP server:
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=technicaldost/espn-scraper-scores-stats-news" --header "Authorization: Bearer YOUR_APIFY_TOKEN"
Or in a JSON MCP config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=technicaldost/espn-scraper-scores-stats-news","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
The tool is named technicaldost--espn-scraper-scores-stats-news. Ask your agent, for example, to "run ESPN Scraper with {"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"}".
Run ESPN Scraper via API
curl -X POST "https://api.apify.com/v2/acts/technicaldost~espn-scraper-scores-stats-news/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("technicaldost/espn-scraper-scores-stats-news").call(run_input={"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('technicaldost/espn-scraper-scores-stats-news').call({"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Integrations
Schedule runs (daily, hourly) in Apify Console and send results to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or your own webhook.
FAQ
Where does the data come from?
From the same public ESPN endpoints espn.com's own pages load. No API key or account.
How far back can I go?
Any date ESPN has a scoreboard for, up to one year per run. The Actor reads the scoreboard day by day, because ESPN no longer answers date ranges in one request (that is why some other ESPN scrapers return nothing).
Does it include live scores?
Yes. Games in progress have status In Progress with the current score and period; run it on a schedule for updates.
Why are odds empty?
ESPN shows the betting line only for upcoming games in some leagues.
What about F1, golf and UFC?
They have games (events with participants) and news; ESPN has no team lists, rosters or standings for them.
How is it priced?
$0.50 per 1,000 rows (a game, team, player, standing or article). No start fee.
Is it legal to scrape this data?
The Actor collects publicly available information only and does not log in or bypass access controls. Use the data in line with the website's terms and the laws that apply to you, especially when processing personal data.
Related Actors
More tools from the same developer that work well together with this one:
- Google News Article Scraper: Search Google News by topic and export structured articles: title, source, publish date, URL and snippet.
- RSS Feed Scraper - RSS & Atom to JSON: Convert public RSS and Atom feeds to JSON or CSV, or paste any website and the Actor finds its feed.
- Reddit Post Scraper: Get the newest public Reddit posts from any subreddit, user, search or post URL: title, text, author, subreddit, link, flair and date.
- Google Trends Scraper — Interest, Regions & Related Queries: Google Trends data as JSON: interest over time, interest by country/state/city and related queries (top and rising) for any keywords.