The PodiumOracle API

Every league's predictions, ratings, odds, markets, results and raw data as JSON and downloads, for Podium+ subscribers.

Getting a key

The API is part of Podium+. Subscribers make keys on their account page (up to five, each shown once when it's made) and send one with every request:

curl -H "Authorization: Bearer po_live_…" https://podiumoracle.com/api/v1/leagues/nfl/predictions

Every answer is JSON (except the files), with the league and when its data was built (generated_at) beside the data. A key works while its account has Podium+; revoking one on the account page stops it within a minute. Keep keys out of web pages and public code.

Credits

Every answer costs credits: one for each 100 KB it sends, and one at least, so nearly every answer costs one, a whole season's games two or three, and a raw file ten per megabyte. Podium+ comes with 1,000 credits a month, used first and renewed on the 1st (UTC); more are $5 for 10,000 on the account page, and those don't expire (they need Podium+ to spend). Errors cost nothing. Every answer says what it cost in X-Credits-Used and what's left in X-Credits-Left; with too few left, the answer is 402.

Limits

Requests a minute per account, all its keys together, rise with its credits: the larger of what it holds now and what it bought in the last 6 months.

Credits held or boughtRequests a minute
Any (Podium+)60
10,000 or more120
50,000 or more300
200,000 or more600

Every answer gives the account's limit in X-RateLimit-Limit; past it the answer is 429 with Retry-After. A purchase raises it within a minute. The data changes when a league is rebuilt (twice a day, and after each result), so there's no need to ask more often than that, except for /live.

Using the data

Forecasts, ratings and odds are PodiumOracle's own; results and schedules come from the sources each league's /about lists, under their own terms. A link back to the page a number came from is appreciated. Reselling or republishing the data in bulk needs written permission: ask at support@podiumoracle.com.

Site-wide

EndpointWhat it gives
/api/v1 This list of endpoints, with the limits.
/api/v1/openapi.json The API described in OpenAPI 3.1, for code generators and API clients.
/api/v1/leagues Every league: its sport, kind (match or ranked), season, and when its data was last built.
sport: only this sport, as the list names it ("Ice hockey") · kind: match or ranked
/api/v1/today Today in every league: whether it's in season, the start times of its next games or events, and its title favourite.
/api/v1/track-record The site-wide track record: every model scored on seasons it never saw, pooled by kind of contest, against each market and for the champions.
/api/v1/search Leagues, teams, players and drivers whose name matches, with the league and id to ask the other endpoints for.
q: a name or part of one (two characters at least) · limit: most results (default 20, at most 100)

Each league

Games for head-to-head leagues (football, basketball, tennis…), events for ranked ones (races, golf, sailing): each endpoint answers for both where it can.

EndpointWhat it gives
/api/v1/leagues/{slug} One league: its details, how many games or events it has, its downloads and the endpoints that have data for it.
/api/v1/leagues/{slug}/predictions The model's forecasts for the games being played and coming up (home, draw and away chances), or each competitor's chances in the next events, with the markets' prices beside them.
/api/v1/leagues/{slug}/games The season's games (or events, for ranked leagues) with results, the model's chances before each one, ratings and the markets' prices.
from: first date (YYYY-MM-DD) · to: last date (YYYY-MM-DD) · team: only games with this team, player or driver id · status: scheduled, live or final · limit: most rows (default 500, at most 5000) · offset: rows to skip, for the next page
/api/v1/leagues/{slug}/games/{id} One game or event in full: how the forecast moved before it, the in-game win probability, every result, the weather and the markets' prices day by day.
/api/v1/leagues/{slug}/events ranked leagues The same as /games, by its racing name.
/api/v1/leagues/{slug}/events/{id} ranked leagues The same as /games/{id}, by its racing name.
/api/v1/leagues/{slug}/teams Every team with its details, rating, place in the table and season odds (for ranked leagues, the constructors or teams with their ratings).
/api/v1/leagues/{slug}/teams/{id} One team: its details, rating and its history, standing, season odds, games and injuries (for ranked leagues, its competitors).
/api/v1/leagues/{slug}/competitors ranked leagues Every driver, player or boat with their rating, points, wins and title chances.
/api/v1/leagues/{slug}/competitors/{id} ranked leagues One competitor: details, rating and its history, standing, title chances, every result shown on the site and their chances in the next events.
/api/v1/leagues/{slug}/ratings The current ratings, best first, with each side's record and recent change.
/api/v1/leagues/{slug}/ratings/history Every rating after every game or event, and the table week by week.
id: only this team's or competitor's ratings
/api/v1/leagues/{slug}/standings The table, or the championship points.
/api/v1/leagues/{slug}/odds Season and title odds from the simulations: each side's chances of the title, the playoffs and every finishing place, and next season's outlook between seasons.
/api/v1/leagues/{slug}/markets What the prediction markets and sportsbooks say: title prices, current prices on coming games or events, the prices before each finished one, and the model scored against each market.
/api/v1/leagues/{slug}/track-record How the league's model did on seasons it never saw: log loss, Brier score and accuracy per season against simple baselines and the markets, its calibration, its tuned settings and its champion forecasts.
/api/v1/leagues/{slug}/players Player statistics, by position or category (where the league has them; for SailGP, its drivers).
/api/v1/leagues/{slug}/injuries head-to-head leagues The injury report.
team: only this team's
/api/v1/leagues/{slug}/stats The team stats explorer: every side's season statistics (where the league has them).
/api/v1/leagues/{slug}/live Live scores (or the running order of a race) from the league's own feed, every 15 seconds while it's on.
/api/v1/leagues/{slug}/about How the league's model works, its glossary and notes, and every data source it uses.
/api/v1/leagues/{slug}/files Every file there is to download for the league: its CSV tables, the site's JSON files and its raw data.

Downloads and raw data

The CSV tables on every league's data page, the site's own JSON files, and the raw files each league's model is built from.

EndpointWhat it gives
/api/v1/leagues/{slug}/csv/{name} One CSV table (the names are in /files).
/api/v1/leagues/{slug}/json/{path} One of the site's JSON files for the league, exactly as the pages read it (the names are in /files).
/api/v1/leagues/{slug}/raw The league's raw data: every file its pipeline downloaded from its sources and keeps, with its size and SHA-256.
prefix: only paths starting with this
/api/v1/leagues/{slug}/raw/archive All of the league's raw files under 1 MB, with the manifest, as one .tar.gz. The bigger files come one at a time from /raw/files/{path}.
/api/v1/leagues/{slug}/raw/files/{path} One raw file, by its path in /raw.
/api/v1/raw/odds The odds stores: every game's prices from the bookmakers (OddsPapi), Polymarket and Kalshi, and the race and golf winner markets, as archives.
/api/v1/raw/odds/{path} One odds store archive (the names are in /raw/odds).