プレミアリーグの生データを、あなたのコードに。
順位表・クラブ/選手のシーズンスタッツ・試合ごとの詳細データ・ニュースを、シンプルな REST API(JSON)で提供します。分析ノートブック、Bot、ダッシュボード、あなたのアプリに組み込んでください。
プランと制限
| プラン | API利用 | レート制限 | 月間リクエスト |
|---|---|---|---|
| ファンプラン | 不可 | – | – |
| サポータープラン | ✓ | 120回/分 | 月300回(毎月1日リセット) |
| ウルトラズプラン | ✓ | 240回/分 | 無制限※ |
※ ウルトラズプランの「無制限」は、安全確認のため月5,000リクエストで一時停止する場合があります(お問い合わせで解除)。制限内のご利用でも、安全性確認のため提供を一時停止する場合があります。解約またはファンプランへの変更後、APIキーは利用できなくなります(再契約で復活)。レート制限・月間リクエスト数は今後変更される可能性があります。
料金プランの詳細 →取得できるデータ
APIドキュメント(Swagger)↗全24エンドポイント。各エンドポイントのパラメータとレスポンススキーマの完全な定義は APIドキュメント(Swagger)で確認できます。
順位表
公式順位表そのままのデータ。勝敗・得失点・直近5試合のフォーム・観客動員・チーム得点王まで含みます。
GET /league-table/overall総合順位表(勝点・得失点・フォーム・得点王など)GET /league-table/home-awayホーム/アウェイ別の成績に分解した順位表
クラブ集計スタッツ
クラブ単位のシーズン集計。攻撃・シュート・GK・規律/デュエル系の4カテゴリです。
GET /squad/standard-stats得点・アシスト・出場などの基本スタッツ(クラブ別)GET /squad/shootingシュート数・枠内率・決定率などGET /squad/goalkeepingセーブ数・セーブ率・クリーンシートGET /squad/misc-statsカード・ファウル・タックル・空中戦など
被スタッツ(対戦相手側)
「そのクラブが相手に許したスタッツ」。守備力の分析に使えます。カテゴリはクラブ集計と同じ4種です。
GET /opponent/standard-stats被ゴール・被アシストなどの基本被スタッツGET /opponent/shooting被シュート関連GET /opponent/goalkeeping相手GKのスタッツGET /opponent/misc-stats相手のカード・ファウルなど
選手スタッツ
選手個人のシーズン集計。club で1クラブに、player で1選手に絞り込めます。per90(90分換算)系の指標も含みます。
GET /team/standard-stats得点・アシスト・出場時間・per90 などの基本スタッツGET /team/shootingシュート・枠内シュート・決定率GET /team/playing-time出場時間・先発/途中出場・チームの±GET /team/misc-statsタックル成功・インターセプト・カードなどGET /team/goalkeeper-statsGKの試合ログ集計(セーブ率・CS・GA90)
試合データ
試合単位のデータ。結果・今後の日程に加え、試合ごとの選手スタッツやゴール・カード・交代のイベントを分単位で取得できます。
GET /matches/fixtures試合結果一覧(スコア・会場・観客数)GET /matches/fixtures/{match_id}試合1件の取得GET /matches/schedules今後の試合日程(未消化分)GET /matches/player-stats試合ごとの選手スタッツ(ゴール・シュート・タックル…)GET /matches/keeper-stats試合ごとのGKスタッツGET /matches/eventsゴール・カード・交代のイベント(分表示つき)GET /matches/team-stats試合ごとのチームスタッツ(ポゼッション等)
ニュース
PremiAnalytics 編集部が公開したニュース記事(日英)。
GET /news公開済みニュース一覧GET /news/{news_id}ニュース記事1件の取得
共通パラメータ: season(例 25/26・省略時は今シーズン)、 クラブ系は club、選手系は player、 試合系は match_id / gameweek で絞り込みできます。
https://premie-backend-lvuzwxd3aq-uc.a.run.app/v1X-API-Key: pak_…キーは設定 > Web API から発行
GET / JSON全エンドポイント読み取り専用
最初のリクエスト
curl -H "X-API-Key: YOUR_API_KEY" \
"https://premie-backend-lvuzwxd3aq-uc.a.run.app/v1/league-table/overall"過去シーズンは ?season=25/26 のように指定できます(省略時は今シーズンの最新データ)。 レスポンスヘッダーの X-Monthly-Remaining で月間クォータの残量を確認できます。
プログラムへの組み込み方
そのまま動く実装例を5言語で用意しました。コピーして、APIキーを環境変数に設定すれば動きます。
top_scorers.py"""PremiAnalytics Web API — 得点ランキング上位5名を表示する例。
事前準備: pip install requests
API キーは環境変数 PREMIA_API_KEY に設定してください。
"""
import os
import time
import requests
BASE_URL = "https://premie-backend-lvuzwxd3aq-uc.a.run.app/v1"
API_KEY = os.environ["PREMIA_API_KEY"]
session = requests.Session()
session.headers["X-API-Key"] = API_KEY
def get(path: str, **params) -> list[dict]:
"""GET リクエスト。429(レート制限)は Retry-After に従い1回だけ再試行する。"""
for attempt in range(2):
resp = session.get(f"{BASE_URL}{path}", params=params, timeout=15)
if resp.status_code == 429 and attempt == 0:
wait = int(resp.headers.get("Retry-After", "60"))
print(f"rate limited — {wait}s 待機して再試行します")
time.sleep(wait)
continue
resp.raise_for_status()
# 月間クォータの残量はレスポンスヘッダーで確認できる
remaining = resp.headers.get("X-Monthly-Remaining")
if remaining is not None:
print(f"(今月の残りリクエスト: {remaining})")
return resp.json()
raise RuntimeError("unreachable")
def main() -> None:
players = get("/team/standard-stats", season="26/27")
top5 = sorted(players, key=lambda p: (p["gls"] or 0), reverse=True)[:5]
for i, p in enumerate(top5, start=1):
print(f"{i}. {p['player']} ({p['club']}) — {p['gls']:g} goals, {p['ast']:g} assists")
if __name__ == "__main__":
main()どの例も同じタスク(26/27 の得点ランキング上位5名の表示)を、エラーハンドリング・レート制限時の再試行・クォータ残量の確認込みで実装しています。API キーはコードに直書きせず環境変数で渡してください。
エラーとレスポンスヘッダー
ステータスコード
401 UnauthorizedX-API-Key ヘッダーが無い・キーが無効403 Forbiddenキーは有効だがプランが対象外(ファン/解約後)・キー停止中404 Not Found指定した ID のデータが存在しない429 Too Many Requestsレート制限(分間)または月間クォータの超過。Retry-After 秒後に再試行
クォータヘッダー(毎レスポンス)
X-Monthly-Limit今月の上限リクエスト数X-Monthly-Used今月の消費数X-Monthly-Remaining残りリクエスト数Retry-After429時のみ: 再試行までの秒数