PremiAnalytics Web API

プレミアリーグの生データを、あなたのコードに。

順位表・クラブ/選手のシーズンスタッツ・試合ごとの詳細データ・ニュースを、シンプルな REST API(JSON)で提供します。分析ノートブック、Bot、ダッシュボード、あなたのアプリに組み込んでください。

プランと制限

プランAPI利用レート制限月間リクエスト
ファンプラン不可
サポータープラン120回/分月300回(毎月1日リセット)
ウルトラズプラン240回/分無制限※

※ ウルトラズプランの「無制限」は、安全確認のため月5,000リクエストで一時停止する場合があります(お問い合わせで解除)。制限内のご利用でも、安全性確認のため提供を一時停止する場合があります。解約またはファンプランへの変更後、APIキーは利用できなくなります(再契約で復活)。レート制限・月間リクエスト数は今後変更される可能性があります。

料金プランの詳細 →

全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-stats
    GKの試合ログ集計(セーブ率・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 で絞り込みできます。

ベースURL
https://premie-backend-lvuzwxd3aq-uc.a.run.app/v1
認証
X-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 Unauthorized
    X-API-Key ヘッダーが無い・キーが無効
  • 403 Forbidden
    キーは有効だがプランが対象外(ファン/解約後)・キー停止中
  • 404 Not Found
    指定した ID のデータが存在しない
  • 429 Too Many Requests
    レート制限(分間)または月間クォータの超過。Retry-After 秒後に再試行

クォータヘッダー(毎レスポンス)

  • X-Monthly-Limit
    今月の上限リクエスト数
  • X-Monthly-Used
    今月の消費数
  • X-Monthly-Remaining
    残りリクエスト数
  • Retry-After
    429時のみ: 再試行までの秒数

さっそくデータを取ってみましょう

APIキーはサポータープラン(月額¥1,000)以上で発行できます。