ESPN Sports MCP Server
Pricing
from $0.01 / 1,000 item extracteds
ESPN Sports MCP Server
MCP-ready ESPN sports tools for live scores, schedules, standings, teams, summaries, and odds from public ESPN JSON endpoints.
Pricing
from $0.01 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Run ESPN's public sports JSON as batch Actor calls through Apify's MCP integration and export clean datasets. This Actor gives AI agents, sports desks, fantasy analysts, and automation teams a hosted way to ask for live scoreboards, schedules, teams, standings, game summaries, leaders, and odds text when ESPN includes it.
The Actor is HTTP-only, does not require login, and works with ESPN sport/league paths such as football/nfl, basketball/nba, baseball/mlb, hockey/nhl, soccer/eng.1, and soccer/usa.1.
Sports data tools
ESPN Sports MCP Server exposes a small set of reliable sports-data tools:
- ๐
get_scoreboardโ current or dated ESPN scoreboard events - ๐
get_scheduleโ scoreboards across a validated, inclusive date range of up to 31 days (one upstream request per day, deduplicated by event ID) - ๐งพ
get_game_summaryโ leaders, odds, scoring plays and selected team box-score statistics (yards, first downs, turnovers, possession) when ESPN provides them - ๐
get_standingsโ league standings from ESPN's public standings endpoint - ๐๏ธ
get_teamsโ team directory data with IDs, names, logos, colors, and links
Each run writes normalized records to the default dataset. includeRaw keeps original ESPN fragments (which can be large) for advanced workflows. This is a batch Actor accessed via Apify MCP, not a persistent streaming sports server.
Who is it for?
AI-agent builders
Use it as a hosted ESPN MCP tool source for Claude, ChatGPT, LangChain, CrewAI, and custom agent workflows. Agents can call one tool at a time and receive structured rows instead of parsing a sports website.
Sports media teams
Create match previews, daily score digests, live-score summaries, editorial calendars, and post-game briefs from ESPN event data.
Fantasy and betting analysts
Collect game IDs, score states, standings, leaders, and ESPN odds text when present. The Actor does not place bets or provide betting advice; it simply structures ESPN public data.
Dashboard and alerting teams
Backfill schedules, monitor current scoreboards, and feed BI tools or notification systems with consistent fields.
Why use this Actor?
- โ MCP-first tool names for agent workflows
- โ Clean dataset rows for exports, APIs, and automations
- โ No browser, no login, no user account required
- โ Supports multiple ESPN sports and leagues in one Actor
- โ Optional raw fallback for endpoint drift
- โ Low-cost HTTP implementation
- โ Works from Apify API, scheduled tasks, webhooks, and MCP clients
Supported ESPN leagues
The league input accepts ESPN sport/league paths. Common examples:
| Sport | ESPN path | Example use |
|---|---|---|
| NFL | football/nfl | live NFL scoreboard and standings |
| NBA | basketball/nba | NBA games, teams, standings |
| MLB | baseball/mlb | baseball schedules and scoreboard ranges |
| NHL | hockey/nhl | hockey games and standings |
| Premier League | soccer/eng.1 | soccer fixtures and scores |
| La Liga | soccer/esp.1 | Spanish soccer schedules |
| Serie A | soccer/ita.1 | Italian soccer schedules |
| Bundesliga | soccer/ger.1 | German soccer schedules |
| Ligue 1 | soccer/fra.1 | French soccer schedules |
| MLS | soccer/usa.1 | MLS fixtures and scores |
Other ESPN public sport/league paths may work if ESPN exposes the same JSON structure.
Data you can extract
| Field group | Example fields |
|---|---|
| Event identity | eventId, name, shortName, date, league |
| Game status | status, statusDetail, winner |
| Teams and scores | homeTeam, homeTeamId, homeScore, awayTeam, awayTeamId, awayScore |
| Venue and links | venue, url |
| Teams | teamId, teamName, abbreviation, displayName, location, logo, color |
| Standings | rank, wins, losses, ties, winPercent, gamesBehind, summary |
| Summary rows | label, name, value, team, athlete; scoring plays also include period |
| Metadata | tool, recordType, source, scrapedAt |
How much does it cost to extract ESPN sports scores and schedules?
This Actor uses pay-per-event pricing:
- Start fee:
$0.005per run - Result records: tiered PPE pricing, currently
$0.000022722per item on the BRONZE tier, with volume discounts down to$0.00001per item
Because the Actor uses public HTTP JSON endpoints and no browser, typical runs are inexpensive. Pricing was calibrated from cloud runs with 90%+ NET margin on the realistic-scale test.
Quick start
- Choose a tool, for example
get_scoreboard. - Choose an ESPN league path, for example
football/nfl. - Optionally set
dateasYYYYMMDD, or bothstartDateandendDatefor an inclusive range of up to 31 days. Omit dates for ESPN's current/upcoming scoreboard. Invalid, incomplete, inverted or conflicting dates fail with a clear error; ESPN may have no games on some days. - Set
maxItemsto control output volume. - Run the Actor and export the default dataset.
Example inputs
Current NFL scoreboard
{"tool": "get_scoreboard","league": "football/nfl","maxItems": 25}
MLB schedule range
{"tool": "get_schedule","league": "baseball/mlb","startDate": "20260920","endDate": "20260927","maxItems": 150}
NBA teams
{"tool": "get_teams","league": "basketball/nba","maxItems": 50}
NFL standings
{"tool": "get_standings","league": "football/nfl","maxItems": 100}
Game summary
{"tool": "get_game_summary","league": "football/nfl","eventId": "401872933","maxItems": 50}
Output example
{"recordType": "event","tool": "get_scoreboard","league": "football/nfl","eventId": "401872933","name": "Carolina Panthers at Atlanta Falcons","date": "2026-09-20T17:00Z","statusDetail": "Final","venue": "Mercedes-Benz Stadium","homeTeam": "Atlanta Falcons","homeScore": 3,"awayTeam": "Carolina Panthers","awayScore": 34,"url": "https://www.espn.com/nfl/game/_/gameId/401872933","scrapedAt": "2026-09-24T00:00:00.000Z"}
MCP integration
Apify Actors are available through Apify's MCP server. Use the Actor as a tool by configuring the MCP URL with the Actor slug:
https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server
Claude Code CLI setup:
$claude mcp add --transport http apify-espn-sports https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server
Claude Desktop, Cursor, and VS Code MCP JSON config:
{"mcpServers": {"apify-espn-sports": {"url": "https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server"}}}
Example prompts:
- "Use ESPN Sports MCP Server to get today's NFL scoreboard and summarize games that are final."
- "Fetch NFL games for the week of September 20, 2026 and make a content calendar."
- "Get NBA teams and return team IDs for a downstream game-summary workflow."
- "Check NHL standings and identify division leaders."
Claude Desktop MCP setup
Add an Apify MCP server entry that points to:
https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server
Example JSON configuration:
{"mcpServers": {"apify-espn-sports": {"url": "https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server"}}}
Then ask Claude to call get_scoreboard, get_schedule, get_game_summary, get_standings, or get_teams with the JSON input fields described above.
Claude Code MCP usage
For Claude Code, add the Apify MCP endpoint with:
$claude mcp add apify-espn-sports https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server
For agentic coding workflows, register the same MCP endpoint and ask the agent to call the sports tool before generating dashboards, alerts, or reports. Keep maxItems small for conversational calls and increase it for scheduled backfills.
API usage
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/espn-sports-mcp-server').call({tool: 'get_scoreboard',league: 'football/nfl',maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/espn-sports-mcp-server').call(run_input={'tool': 'get_standings','league': 'football/nfl','maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~espn-sports-mcp-server/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"tool":"get_schedule","league":"baseball/mlb","startDate":"20260920","endDate":"20260927","maxItems":150}'
Integrations
- ๐ฐ Generate daily sports newsletters from scoreboard rows.
- ๐ฃ Send Slack or Discord alerts for games that changed status.
- ๐ Load standings into Google Sheets, BigQuery, Snowflake, or Airtable.
- ๐ค Give LLM agents a live sports context tool.
- ๐งช Backfill historical schedule ranges for testing analytics pipelines.
- ๐ Chain
get_scoreboardevent IDs intoget_game_summarycalls.
Tips for reliable runs
- Use ESPN event IDs from
get_scoreboardbefore callingget_game_summary. - Use both
startDateandendDatefor schedule backfills (maximum 31 days per run); the Actor fetches every calendar day, deduplicates events, then appliesmaxItems. - Keep
includeRawoff unless your workflow needs ESPN's original fragments. - If a league path returns no rows, verify ESPN supports that sport/league path publicly.
- ESPN endpoints are undocumented, so field availability can vary by league and season.
Troubleshooting
Why did I get zero results?
The selected date may not have games, the league may be out of season, or ESPN may not expose that league path through the same endpoint. Try get_teams or a known active league/date first.
Why is eventId required for game summaries?
ESPN game summaries are event-specific. Run get_scoreboard for the same league/date first, copy the eventId, then call get_game_summary.
Why are odds missing?
Odds are only returned when ESPN includes odds or pickcenter data for that event and region. The Actor emits odds rows/details when present; it does not synthesize odds.
Data handling and support
No AI model runs inside this Actor; Apify MCP clients may use their own models outside this batch run. Public ESPN sports/team/athlete data is stored in the run's default Apify dataset. No credentials or user accounts are required; includeRaw is opt-in. Dataset and log retention/deletion follow your Apify workspace settings; no additional Actor cache is kept. For support, use the Actor's Apify Store issue form. ESPN's undocumented endpoints can change or be unavailable; persistent HTTP errors fail the run rather than returning a misleading empty dataset.
Legality
ESPN Sports MCP Server reads public JSON endpoints and stores normalized records in your Apify dataset. Always review your use case, avoid excessive polling, honor ESPN's rights and terms, and comply with applicable law. The Actor is not affiliated with, endorsed by, or sponsored by ESPN.
Legal and ethical use
This Actor reads public ESPN JSON endpoints. Use the data responsibly, respect ESPN's terms, do not overload upstream services, and comply with applicable laws and platform rules. The Actor is not affiliated with ESPN.
Related scrapers and tools
Explore related Automation Lab actors at:
- https://apify.com/automation-lab/google-trends-scraper
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/news-api-scraper
FAQ
Does this Actor require an ESPN API key?
No. The MVP uses public ESPN JSON endpoints that responded without login during feasibility testing.
Can I use this as an MCP server?
Yes. Use Apify's MCP endpoint with ?tools=automation-lab/espn-sports-mcp-server and pass one of the tool inputs.
Can it cover every sport on ESPN?
It supports any compatible ESPN sport/league path, but QA focuses on major leagues such as NFL, NBA, MLB, NHL, and major soccer.
Does it scrape HTML pages?
No. It uses HTTP JSON endpoints, which keeps runs faster and cheaper than browser scraping.
Does it return raw data?
Set includeRaw to true to include original ESPN fragments on output rows; these can be large, especially summary fallback rows.
Can I schedule it?
Yes. Use Apify schedules to run scoreboards daily or standings hourly during busy periods.
What is the best default run?
Use get_scoreboard with football/nfl and a small maxItems for a cheap smoke test, or use baseball/mlb with a date range for larger schedule exports.