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 bought | Requests a minute |
|---|---|
| Any (Podium+) | 60 |
| 10,000 or more | 120 |
| 50,000 or more | 300 |
| 200,000 or more | 600 |
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
| Endpoint | What 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.
| Endpoint | What 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.
| Endpoint | What 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). |