ESPN Sports MCP Server avatar

ESPN Sports MCP Server

Pricing

Pay per event

Go to Apify Store
ESPN Sports MCP Server

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

Stas Persiianenko

Maintained by Community

Actor 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:

SportESPN pathExample use
NFLfootball/nfllive NFL scoreboard and standings
NBAbasketball/nbaNBA games, teams, standings
MLBbaseball/mlbbaseball schedules and scoreboard ranges
NHLhockey/nhlhockey games and standings
Premier Leaguesoccer/eng.1soccer fixtures and scores
La Ligasoccer/esp.1Spanish soccer schedules
Serie Asoccer/ita.1Italian soccer schedules
Bundesligasoccer/ger.1German soccer schedules
Ligue 1soccer/fra.1French soccer schedules
MLSsoccer/usa.1MLS fixtures and scores

Other ESPN public sport/league paths may work if ESPN exposes the same JSON structure.

Data you can extract

Field groupExample fields
Event identityeventId, name, shortName, date, league
Game statusstatus, statusDetail, winner
Teams and scoreshomeTeam, homeTeamId, homeScore, awayTeam, awayTeamId, awayScore
Venue and linksvenue, url
TeamsteamId, teamName, abbreviation, displayName, location, logo, color
Standingsrank, wins, losses, ties, winPercent, gamesBehind, summary
Summary rowslabel, name, value, team, athlete
Metadatatool, 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.005 per run
  • Result records: tiered PPE pricing, currently $0.000022722 per item on the BRONZE tier, with volume discounts down to $0.00001 per 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

  1. Choose a tool, for example get_scoreboard.
  2. Choose an ESPN league path, for example football/nfl.
  3. Optionally set date as YYYYMMDD, or startDate and endDate for a range.
  4. Set maxItems to control output volume.
  5. 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 ApifyClient
import os
client = 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().items
print(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_scoreboard event IDs into get_game_summary calls.

Tips for reliable runs

  • Use ESPN event IDs from get_scoreboard before calling get_game_summary.
  • Use startDate and endDate for MLB or schedule-heavy backfills.
  • Keep includeRaw off 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.

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.

Explore related Automation Lab actors at:

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.