Pro Data

Die Modellzahlen in wenigen Minuten in Ihren Code einbinden

156,421

Datenpunkte

13,507 Datensätze verteilt auf 13 Datasets, mit bis zu 148 Feldern: jeder Wert modellgeneriert oder kuratiert und täglich aus den Quellen neu erstellt. Hier kostenlos durchsuchen; alles per API mit einem kostenlosen Schlüssel abrufen.

48 nations1,215 players8,964 player-seasons958 match results

Alle Wahrscheinlichkeiten für die 48 Nationen und 104 Spiele, prognostizierte Kader, Spielerkarrieren Saison für Saison, jüngste Ergebnisse und die historische Grundlage des Modells: als JSON oder CSV, oder als MCP-Tool, das Ihr Assistent aufrufen kann. Für Forscher, Fantasy-Spieler, Journalisten und Analyseteams, die die Modellausgabe in einer Pipeline statt auf einer Seite nutzen wollen. Testen Sie einen Live-Endpunkt unten mit einem einzigen Befehl, ohne Registrierung.

Jetzt live im Early Access· Bulk-Zip + historisches Slicing live · Reproduzierbare Notebooks und rückwirkende WC2018-/WC2022-Ausgaben erscheinen vor dem Anpfiff

Schnellstart

Jetzt ausprobieren, ohne Registrierung

Diesen Befehl ausführen. Er gibt die fünf wahrscheinlichsten Turniersieger direkt aus dem Live-Modell zurück: kein Konto, kein API-Schlüssel. Anhängen: ?format=csv für die tabellarische Variante.

curl "https://onthepitch.now/api/v1/sample/"

Das vollständige Bild: alle 48 Teams, jedes Spiel, Spieler, Kader? Melden Sie sich an, API-Schlüssel generieren (10 kostenlose Aufrufe zum Start), und übergeben Sie ihn als Bearer-Token an jeden Endpunkt:

curl -H "Authorization: Bearer otp_live_…" \
  "https://onthepitch.now/api/v1/forecast/"

Kostenlos testen: 10 Aufrufe

Melden Sie sich an und generieren Sie einen API-Schlüssel 10 kostenlose programmatische Aufrufe, verteilt auf diese REST-Endpunkte und den gehosteten MCP-Server: genug, um die Daten in ein Notebook oder einen Assistenten einzubinden und das Ergebnis zu sehen. Der MCP-Handshake zählt nicht; nur die Datenaufrufe zählen. Der Pro Pass ist unbegrenzt.

13 Datasets, jeweils erreichbar unter /api/v1/ as JSON or — with ?format=csv — a flat table. /api/v1/sample/ is public; the rest are gated (a Bearer API key or a Pro session cookie). Below is exactly what each one returns. Full schemas live in the interactive reference (OpenAPI 3.0 spec at /api/v1/openapi.json).

  • Tournament forecast

    48 nations

    /api/v1/forecast/

    Each nation's probability of lifting the trophy and of reaching every stage.

    Gibt zurück · 17 fields Tournament-win probability · advance from group · reach R16 / QF / SF / final · win-group probability · P(finish 1st–4th in group) · confederation · FIFA rank · group

  • Team forecast trajectory

    480 snapshots

    /api/v1/team-history/

    How each team's forecast has moved over time — one row per daily build.

    Gibt zurück · 7 fields Team · build timestamp · Elo rating · tournament-win probability · 90% CI band (low & high)

  • Match forecast

    104 matches

    /api/v1/fixtures/

    Win / draw / win plus match-event probabilities for every fixture in the bracket.

    Gibt zurück · 25 fields P(home / draw / away) · expected goals each side · over 0.5 / 1.5 / 2.5 / 3.5 goals · both teams to score · clean-sheet probability each side · kickoff, venue & city · stage & group

  • Predicted squads

    1,246 players

    /api/v1/predicted-squads/

    Projected 26-man squad for every nation, one row per player.

    Gibt zurück · 13 fields Starting-XI vs bench slot · position · jersey number · captain flag · international caps & goals · composite rating · rank within position

  • Player index

    1,215 players

    /api/v1/players/

    Career profile for every player in the modelling pool.

    Gibt zurück · 9 fields Name · nation · position · current club & league · birth year · career goals & assists

  • Player season history

    8,964 player-seasons

    /api/v1/player-history/

    Season-by-season career record for every player — one row per player-season.

    Gibt zurück · 12 fields Player · season · team & league · position · matches & minutes · goals & assists · xG & xAG

  • Anytime scorer

    50 ranked scorers

    /api/v1/anytime-scorer/

    Tournament scoring probabilities for the most likely goalscorers.

    Gibt zurück · 15 fields P(scores ≥1 in the tournament) · expected matches played · per-stage scoring probability (group → final) · rank

  • Recent match results

    958 matches

    /api/v1/results/

    Every team's recent senior-international results — last 24 months, their POV.

    Gibt zurück · 10 fields Date · opponent · home / away / neutral · goals for & against · result · competition

  • Head-to-head records

    144 pairings

    /api/v1/h2h/

    All-time record between each nation and its group-stage opponents.

    Gibt zurück · 12 fields Meetings · wins / draws / losses · last-meeting date, score, tournament & winner

  • Major-tournament history

    106 tournament rows

    /api/v1/majors/

    Each nation's most-recent run at every major, with squad and coach continuity.

    Gibt zurück · 15 fields Tournament & year · matches · W-D-L · goals for / against · bracket finish · coach (name, year appointed, still in charge) · squad-pool continuity · ?tournament=&year= slicing

  • Group schedule

    144 team-matchdays

    /api/v1/schedule/

    Every nation's three group-stage fixtures.

    Gibt zurück · 7 fields Matchday · date · opponent · host city & country

  • Team list

    48 nations

    /api/v1/teams/

    The tournament field — the lookup table to join everything else on team_id.

    Gibt zurück · 6 fields team_id · name · confederation · FIFA rank · host flag · group

  • Bulk snapshot

    One zip · ~3–5 MB

    /api/v1/bulk/snapshot/

    Every source file the site renders from, in a single download, with checksums.

    Gibt zurück 11 source JSONs + manifest (size, sha256 & built_at per file) · includes the deep fixture-enrichment blobs the per-endpoint variants flatten away

Wie Sie auf die Daten zugreifen

Jedes der obigen Datasets ist zugangsgeschützt, mit Ausnahme des öffentlichen /api/v1/sample/ Teasers. Authentifizieren Sie sich mit einem Bearer-API-Schlüssel oder einem Pro-Session-Cookie. Alles Weitere zum Datenzugriff finden Sie unten.

  • CSV variant on every endpoint

    Live

    Pass ?format=csv on any endpoint for a tabular response, RFC-4180 quoted, suitable for spreadsheet or notebook import. All row types are flat — no nested JSON in CSV cells.

  • Daily refresh + provenance metadata

    Live

    Every response carries the upstream snapshot's built_at timestamp in the envelope (JSON) or X-OnThePitch-Generated-At header (CSV). Pipeline refits daily; cache is private 1h.

  • Bulk snapshot download (zip)

    Live

    GET /api/v1/bulk/snapshot/ returns one DEFLATE-compressed archive with the 11 source JSONs + a manifest (per-file size + sha256 + built_at). Includes the deep fixture enrichment blobs the per-endpoint variants flatten away. ~3–5 MB on the wire.

  • Historical tournament slicing

    Live

    Pass ?tournament=&year= on /api/v1/majors/ to extract a single tournament-year — e.g. every WC2026 team's WC2022 row in one call. The dataset stores each team's most-recent appearance per tournament, so WC2022 covers most qualifiers; WC2018 only covers teams that haven't been at a WC since.

  • Long-lived API keys

    Live

    Generate a Bearer key at /account/api-key/ and pass it as Authorization: Bearer otp_live_… on any endpoint — no cookie juggling for headless / CI / scheduled jobs. One key per account; reset it any time if it leaks.

  • MCP server — connect Claude / Cursor

    Live

    A hosted Model Context Protocol server at /api/mcp exposes every endpoint as an MCP tool. Add it to Claude Code, Claude Desktop, or Cursor with one command and ask questions against the live model — no install, no glue code.

  • Backfilled model outputs — WC2018, WC2022

    Demnächst

    Pre-tournament model probabilities for the last two World Cups, replayed against frozen inputs so you can backtest the model end-to-end against known outcomes. Requires re-pulling historical FBref / Wikipedia snapshots; tracked as a separate research initiative.

  • Reproducible notebooks

    Demnächst

    Jupyter notebooks that fit the model end-to-end from the public data files and reproduce the website's outputs. Run locally with the published datasets.

Beispiele

Drei Dinge, die Sie heute tun können

Set OTP_KEY to the API key you generate here (export OTP_KEY=otp_live_…) — one token, no cookie juggling, works the same from a shell, a notebook, or a scheduled job. (Signed in already? A Pro session cookie works too, but the key is the friendlier path.)

Full forecast as CSV

curl -H "Authorization: Bearer $OTP_KEY" \
  "https://onthepitch.now/api/v1/forecast/?format=csv" \
  -o forecast.csv

WC2022 historical slice

curl -H "Authorization: Bearer $OTP_KEY" \
  "https://onthepitch.now/api/v1/majors/?tournament=FIFA%20World%20Cup&year=2022" \
  -o wc2022.json

Bulk snapshot as a single zip

curl -H "Authorization: Bearer $OTP_KEY" \
  "https://onthepitch.now/api/v1/bulk/snapshot/" \
  -o onthepitch-snapshot-v1.zip

Auf den Daten aufbauen

Snapshot abrufen, eigenes Modell anpassen

Das Bulk-Zip enthält alles, woraus die öffentliche Website ihre Darstellungen erzeugt: Prognose, Spiele, prognostizierte Kader, Direktvergleiche, internationale Turnierhistorie. Drei Einstiegsrezepte, um die Daten in ein Notebook zu laden und eigene Analysen durchzuführen.

1 · Snapshot in pandas laden

Zip herunterladen, einmal entpacken, dann jede Datei als DataFrame einlesen. Die Prognose-Hülle enthält eine Zeile pro Team: mit pd.json_normalize.

import io, json, os, zipfile, requests, pandas as pd

z = zipfile.ZipFile(io.BytesIO(requests.get(
    "https://onthepitch.now/api/v1/bulk/snapshot/",
    headers={"Authorization": f"Bearer {os.environ['OTP_KEY']}"},
).content))

forecast = pd.json_normalize(
    json.loads(z.read("data.json"))["teams"],
)
fixtures = pd.json_normalize(
    json.loads(z.read("fixtures.json"))["fixtures"],
)
squads = pd.json_normalize(
    json.loads(z.read("predicted_squads.json"))["squads"],
    record_path="players",
    meta=["team_id"],
)

2 · Basis-Siegwahrscheinlichkeitsmodell anpassen

Erstellen Sie Ihr eigenes H/D/A-Modell aus den prognostizierten Kadern und der Teamprognose. Gesamtbewertungen und eine Kaderstärke-Summe sind ein sinnvoller Ausgangs-Feature-Satz. Vergleichen Sie mit den veröffentlichten Wahrscheinlichkeiten, um Übereinstimmungen und Abweichungen zu sehen.

from sklearn.linear_model import LogisticRegression

# Aggregate predicted-XI composite to a team strength score.
xi = squads.query("slot == 'xi'")
strength = xi.groupby("team_id")["composite"].sum().rename("strength")

# Join strength onto fixtures and fit a logistic on prior tournament
# results (intl_majors.json has W/D/L from previous WCs + qualifiers).
intl = pd.json_normalize(
    json.loads(z.read("intl_majors.json"))["rows"],
)
features = intl.merge(strength, left_on="team_id", right_index=True)
X = features[["strength", "fifa_rank"]]
y = (features["finish"] >= 9).astype(int)  # 1 = quarter-final or better

clf = LogisticRegression().fit(X, y)
print(clf.coef_)

3 · Eigenes Modell gegen die veröffentlichte Prognose kalibrieren

Sobald Ihr Modell Turniersieg-Wahrscheinlichkeiten auf Teamebene erzeugt, vergleichen Sie über Brier score und ein Kalibrierungsdiagramm: dieselbe Metrik, die wir in den Methodik-Dokumenten verwenden.

from sklearn.metrics import brier_score_loss

merged = forecast.merge(
    pd.Series(my_probs, name="my_p_win"),
    left_on="team_id", right_index=True,
)
print("OnThePitch Brier:", brier_score_loss(merged["won"], merged["p_win"]))
print("Yours        Brier:", brier_score_loss(merged["won"], merged["my_p_win"]))

Die Pass-Lizenz gilt für die Forschungsnutzung: anpassen, backtesten, Ergebnisse veröffentlichen. Quellenangabe auf das Methodik-Dokument wird geschätzt, ist aber nicht erforderlich.

Agenten

Claude, Cursor oder jeden MCP-Client verbinden

Ein gehosteter Model Context Protocol Server unter /api/mcp stellt jeden Endpunkt als MCP-Tool bereit. So können Sie Fragen direkt gegen das Live-Modell in Ihrem Assistenten stellen: keine Installation, kein Verbindungscode. Authentifizieren Sie sich mit einem API-Schlüssel jedes angemeldete Konto kann einen generieren, und Ihre ersten 10 Tool-Aufrufe sind kostenlos.

Zu Claude Code hinzufügen

claude mcp add --transport http onthepitch \
  https://onthepitch.now/api/mcp \
  --header "Authorization: Bearer otp_live_…"

Then prompt naturally — “which team is most likely to win the group?”, “compare the projected XIs for France and England”, “how did Brazil do at WC2022?” — and the assistant calls the matching tool (get_forecast, get_predicted_squads, get_majors) and answers from the live data.

Pro Pass

Pro Pass erwerben für unbegrenzten Zugang

Jedes Konto erhält 10 kostenlose Aufrufe zum Testen der API + MCP. Der Pro Pass ist ein einmaliger Kauf für $35 mit unbegrenztem Zugang: alles im Standard Pass plus die Datenendpunkte, Bulk-Zip-Download und historisches Turnier-Slicing. Reproduzierbare Notebooks erscheinen vor dem Anpfiff. Sie haben bereits den Standard Pass? Upgrade für $20.

24h self-service refund·No subscription, no auto-renewal·Access through 31 Dec 2026. See refund policy.