mcpField
E
espn-api

espn-api

github.com/sejalduaデータ・データベース12187 回インストール28 週間前に更新
リポジトリ

espn-api について

espn-api は、ESPN の非公式で未公開ドキュメントの JSON API からスポーツデータを取得するためのスキルです。開発者向けに、エンドポイント選択やリクエスト作成、レスポンス解析を案内し、変更やエラーへの対処も扱います。

主な機能

  1. 01スコア、順位、チーム情報の取得
  2. 02選手データと試合ログの取得
  3. 03オッズ、負傷情報、ニュースの取得
  4. 04リーグスラッグとエンドポイント一覧の参照
  5. 05レスポンス形式と注意点の確認

活用シーン

  1. 01指定日のリーグスコア取得
  2. 02チーム名簿や選手のシーズン成績の確認
  3. 03試合オッズや負傷レポートの検索
  4. 04キャッシュとエラー処理を備えた API 呼び出しの作成

MCP 対応

入力には MCP との関連について記載がありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sejaldua/espn-api --skill espn-api

インストール後、Claude Code で/espn-apiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
.gitignore
README.md
references/
league-slugs.md
endpoints.md
gotchas.md
response-schemas.md
scripts/
espn_fetch.sh
espn_fetch.py

詳細

ESPN Public API スキル

ESPN の非公開ドキュメントのパブリック JSON API を使って、スポーツデータを取得するエキスパートです。これらの API は espn.com と ESPN モバイルアプリを支えています。認証は不要で、JSON を返します。

重要: これらは非公式で、ドキュメント化されていない API です。予告なく変更される可能性があります。リクエスト頻度に配慮し、可能な場合はキャッシュを実装し、エラーを適切に処理してください。

このスキルの使い方

  1. ユーザーが必要としているものを特定します(スコア、順位表、選手の統計、オッズなど)
  2. references/league-slugs.md のスラッグ一覧を使って、スポーツとリーグを特定します
  3. references/endpoints.md から、適切な API ドメインとエンドポイントを選びます
  4. URL を組み立てて、データを取得します
  5. references/response-schemas.md のパターンを使って、JSON レスポンスを解析します
  6. references/gotchas.md に記載されているよくある落とし穴に注意します

API ドメイン

ESPN API には 6 つのドメインがあります。必要なデータに応じて選択してください。

ドメインベース URL用途
Site APIhttps://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/スコア、チーム、ロースター、ニュース、負傷情報、試合の概要
Site API v2https://site.api.espn.com/apis/v2/sports/{sport}/{league}/順位表のみ(site/v2 のパスは順位表のスタブを返します)
Core API v2https://sports.core.api.espn.com/v2/sports/{sport}/leagues/{league}/選手、詳細な統計、オッズ、プレーごとのデータ、会場、コーチ
Core API v3https://sports.core.api.espn.com/v3/sports/{sport}/{league}/強化された選手データ、ランキング上位選手
Web API v3https://site.web.api.espn.com/apis/common/v3/sports/{sport}/{league}/選手のシーズン統計、試合記録、スプリット、ランキング
CDNhttps://cdn.espn.com/core/{league-abbrev}/試合の全データ(ボックススコア+プレー+勝利確率)。?xhr=1 が必要です
Now APIhttps://now.core.api.espn.com/v1/sports/newsリアルタイムのニュースフィード

クイックスタートの例

今日の全リーグのスコアを取得
curl "https://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/scoreboard"
# Example: NBA scores today
curl "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard"
# Scores for a specific date
curl "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard?dates=20250315"
順位表を取得
# IMPORTANT: Use /apis/v2/ NOT /apis/site/v2/ (the latter returns a stub)
curl "https://site.api.espn.com/apis/v2/sports/basketball/nba/standings"
curl "https://site.api.espn.com/apis/v2/sports/football/nfl/standings"
全チームを取得
curl "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams"
チームのロースターを取得
# Team IDs: look them up from the teams endpoint first
curl "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams/13/roster"
試合の全概要を取得(ボックススコア+プレー+ランキング上位選手)
curl "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/summary?event=401765432"
選手のシーズン統計を取得
# Uses the Web API v3 domain. Works for NFL, NBA, NHL, MLB.
curl "https://site.web.api.espn.com/apis/common/v3/sports/basketball/nba/athletes/3136776/stats"
選手の試合記録を取得
curl "https://site.web.api.espn.com/apis/common/v3/sports/basketball/nba/athletes/3136776/gamelog"
試合のベッティングオッズを取得
curl "https://sports.core.api.espn.com/v2/sports/basketball/leagues/nba/events/{eventId}/competitions/{eventId}/odds"
リーグ全体の負傷者レポートを取得
curl "https://site.api.espn.com/apis/site/v2/sports/football/nfl/injuries"
リアルタイムのニュースを取得
curl "https://now.core.api.espn.com/v1/sports/news?sport=basketball&league=nba&limit=20"
CDN 経由で試合の全データを取得(最も豊富なデータ)
# Returns gamepackageJSON with drives, plays, win probability, boxscore, odds
curl "https://cdn.espn.com/core/nba/game?xhr=1&gameId=401765432"
curl "https://cdn.espn.com/core/nfl/boxscore?xhr=1&gameId=401671793"

よく使うクエリパラメーター

パラメーター説明例
dates日付フィルター(YYYYMMDD または範囲)20250315 または 20250301-20250331
seasonシーズンの年2025
seasontype1=プレシーズン、2=レギュラーシーズン、3=ポストシーズン、4=オフシーズン2
week週番号1
limit1 ページあたりの結果数100
pageページ番号1
groupsカンファレンス ID(大学スポーツ)8(SEC)
xhrCDN エンドポイントで必須1
active現役の選手に絞り込むtrue

シーズンの種類

種類値説明
プレシーズン1エキシビション/プレシーズンの試合
レギュラーシーズン2レギュラーシーズン
ポストシーズン3プレーオフ/ポストシーズン
オフシーズン4オフシーズン

ベッティングプロバイダー ID

プロバイダーでオッズを絞り込む場合:

プロバイダーID
Caesars38
FanDuel37
DraftKings41
BetMGM58
ESPN BET68
Bet3652000

コードの作成

ユーザーが ESPN API を呼び出すコードを作成したい場合:

Python(requests または httpx)
import requests

def get_nba_scoreboard(date=None):
    url = "https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard"
    params = {}
    if date:
        params["dates"] = date  # YYYYMMDD format
    resp = requests.get(url, params=params, timeout=30)
    resp.raise_for_status()
    data = resp.json()
    return data["events"]
JavaScript/TypeScript(fetch)
async function getNBAScoreboard(date?: string) {
  const url = new URL("https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard");
  if (date) url.searchParams.set("dates", date);
  const resp = await fetch(url.toString());
  if (!resp.ok) throw new Error(`ESPN API error: ${resp.status}`);
  const data = await resp.json();
  return data.events;
}
ESPN API コードのベストプラクティス
  • 常にタイムアウトを設定してください(推奨:30 秒)。
  • 頻繁には変更されないデータ(チーム、順位表、ロースター)にはキャッシュを実装してください。
  • 404 が発生した場合(無効な ID、シーズンオフのエンドポイント)は適切に処理してください。
  • 429(レート制限)が発生した場合は、指数バックオフで処理してください。
  • API はドキュメント化されていないため、ネストされたフィールドにアクセスする前に、必ずレスポンスの形式を検証してください。
  • アプリを識別できるように User-Agent ヘッダーを使用してください。

詳細なリファレンス

コメント