ESPN Sports MCP Server
Pricing
Pay per event
ESPN Sports MCP Server
MCP-ready ESPN sports tools for live scores, schedules, standings, teams, summaries, and odds from public ESPN JSON endpoints.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Turn ESPN's public sports JSON into MCP-ready tools and clean Apify 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.
What does ESPN Sports MCP Server do?
ESPN Sports MCP Server exposes a small set of reliable sports-data tools:
- π
get_scoreboardβ current or dated ESPN scoreboard events - π
get_scheduleβ schedule-style scoreboard ranges by date - π§Ύ
get_game_summaryβ leaders, odds, and summary rows for a specific ESPN event ID - π
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. You can also set includeRaw to keep compact ESPN source fragments for advanced agent fallback logic.
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 |
| 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, orstartDateandendDatefor a range. - 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": "20250601","endDate": "20250608","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": "401772510","maxItems": 50}
Output example
{"recordType": "event","tool": "get_scoreboard","league": "football/nfl","eventId": "401772510","name": "Dallas Cowboys at Philadelphia Eagles","date": "2025-09-05T00:20Z","statusDetail": "Scheduled","venue": "Lincoln Financial Field","homeTeam": "Philadelphia Eagles","homeScore": 0,"awayTeam": "Dallas Cowboys","awayScore": 0,"url": "https://www.espn.com/nfl/game/_/gameId/401772510","scrapedAt": "2026-06-28T00: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 apify-espn-sports https://mcp.apify.com/?tools=automation-lab/espn-sports-mcp-server
Generic 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 MLB games for the first week of June 2025 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":"20250601","endDate":"20250608","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
startDateandendDatefor MLB or schedule-heavy backfills. - 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.
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 compact raw ESPN fragments on output 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.