Pro Data

Intégrez les chiffres du modèle dans votre code en quelques minutes

156,421

points de données

13,507 enregistrements répartis sur 13 jeux de données, jusqu'à 148 champs chacun : chaque valeur est générée par le modèle ou sélectionnée manuellement, et reconstruite à partir des sources chaque jour. Consultez-les ici gratuitement ; récupérez tout via l'API avec une clé gratuite.

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

Chaque probabilité pour les 48 nations et 104 matchs, effectifs projetés, carrières de joueurs saison par saison, résultats récents et historique qui alimente le modèle : en JSON ou CSV, ou comme outil MCP que votre assistant peut appeler. Conçu pour les chercheurs, les joueurs de fantasy, les journalistes et les équipes analytiques qui veulent les résultats du modèle dans un pipeline plutôt que sur une page. Essayez un endpoint en direct ci-dessous avec une seule commande, sans inscription.

Disponible en accès anticipé· Téléchargement zip en masse et découpage historique disponibles · Notebooks reproductibles et données rétrospectives WC2018/WC2022 à venir avant le coup d'envoi

Démarrage rapide

Essayez maintenant, sans inscription

Lancez cette commande. Elle renvoie les cinq vainqueurs les plus probables du tournoi, directement depuis le modèle en production : pas de compte, pas de clé API. Ajoutez ?format=csv pour la variante tabulaire.

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

Vous voulez le tableau complet : les 48 équipes, chaque match, les joueurs, les effectifs ? Connectez-vous, générez une clé API (10 appels gratuits pour commencer), et transmettez-la comme jeton Bearer sur n'importe quel endpoint :

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

Essayez gratuitement : 10 appels

Connectez-vous et générez une clé API 10 appels programmatiques gratuits, partagés entre ces endpoints REST et le serveur MCP hébergé : assez pour intégrer les données dans un notebook ou un assistant et vérifier que tout fonctionne. La poignée de main MCP n'est pas comptabilisée ; seuls les appels de données comptent. Le Pro Pass est illimité.

13 jeux de données, chacun accessible sous /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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

    Renvoie · 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.

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

Comment y accéder

Tous les jeux de données ci-dessus sont protégés, sauf l'aperçu public /api/v1/sample/ . Authentifiez-vous avec une clé API Bearer ou un cookie de session Pro ; tout le reste pour récupérer les données est décrit ci-dessous.

  • CSV variant on every endpoint

    Disponible

    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

    Disponible

    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)

    Disponible

    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

    Disponible

    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

    Disponible

    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

    Disponible

    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

    Bientôt disponible

    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

    Bientôt disponible

    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.

Exemples

Trois choses que vous pouvez faire aujourd'hui

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

Exploitez les données

Récupérez l'instantané, ajustez votre propre modèle

Le zip contient tout ce que le site affiche : prévision, matchs, effectifs prédits, confrontations, historique des grands tournois internationaux. Trois recettes pour charger le tout dans un notebook et lancer votre propre analyse.

1 · Charger l'instantané dans pandas

Récupérez le zip, décompressez-le, puis lisez chaque fichier comme un DataFrame. L'enveloppe de prévision imbrique une ligne par équipe : aplatissez avec 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 · Ajuster un modèle de référence de probabilité de victoire

Construisez votre propre modèle V/N/D à partir des effectifs prédits et de la prévision par équipe. Les notes composites et une somme de puissance d'effectif constituent un bon ensemble de variables de départ ; comparez avec les probabilités publiées pour voir où votre modèle concorde ou diverge.

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 · Calibrer votre modèle contre la prévision publiée

Une fois que votre modèle produit des probabilités de victoire au tournoi par équipe, comparez avec les nôtres via le Brier score et un diagramme de fiabilité : la même métrique que nous utilisons dans la documentation méthodologique.

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"]))

La licence du Pass est destinée à un usage de recherche : ajustez, backtestez, publiez vos résultats. L'attribution vers le document méthodologique est appréciée mais pas obligatoire.

Agents

Connectez Claude, Cursor ou tout client MCP

Un serveur Model Context Protocol hébergé à /api/mcp expose chaque endpoint comme un outil MCP, pour interroger le modèle en production directement depuis votre assistant : pas d'installation, pas de code intermédiaire. Authentifiez-vous avec une clé API tout compte connecté peut en générer une, et vos 10 premiers appels sont gratuits.

Ajouter à Claude Code

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

Obtenez le Pro Pass pour un accès illimité

Chaque compte reçoit 10 appels gratuits pour tester l'API et le MCP. Le Pro Pass est un achat unique de 35 $ pour un accès illimité : tout ce qu'inclut le Standard Pass, plus les endpoints de données, le téléchargement zip en masse et le découpage par tournoi historique. Les notebooks reproductibles arrivent avant le coup d'envoi. Vous détenez déjà le Standard Pass ? Mise à niveau pour 20 $.

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