Historical sports-odds data, one query away.
4.64 million settled bets across 9 sports, one clean schema. Query win rate, ROI and market calibration for any slice, and get it back as JSON. The same data that powers the Explorer on this site.
Querying the API
Three REST endpoints. Send your filters, get the metrics back as JSON. Base URL https://flintstat.com.
curl -X POST https://flintstat.com/api/explorer/query \
-H "Content-Type: application/json" \
-d '{
"sport": "football",
"filters": { "league": ["La Liga"], "is_favorite": ["true"] },
"min_odds": 1.5
}'{
"n": 8421,
"win_rate": 68.4,
"roi": -1.24,
"implied_prob": 69.1,
"avg_odds": 1.62,
"seasons_positive": 9,
"seasons_total": 15,
"roi_by_season": [ { "season": "2016-2017", "n": 542, "roi": 2.1 } ],
"calibration": [ { "bucket": "1.5-2.0", "n": 3110, "implied": 0.59, "actual": 0.57, "roi": -0.9 } ]
}The three endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /api/explorer/sports | List the 9 sports with their coverage: number of bets, seasons and date span. |
| GET | /api/explorer/filters/{sport} | The filter axes available for a sport (league, season, odds range) with their values. |
| POST | /api/explorer/query | Metrics for a filtered slice: count, win rate, ROI, market calibration by odds range, and ROI per season. |
What's in the dataset
Settled odds and results in one flat schema. Every response is JSON, ready for a script, a notebook or a spreadsheet, with no cleaning step of your own.
Who it's for
Back your content with real historical ROI and market calibration, and show readers where the value has been.
A clean, one-schema base for backtests and market-efficiency research across 9 sports.
Pull credible, citable stats for articles, match previews and data visualisations.
Ship a betting or stats app without collecting and cleaning years of odds yourself.
A citable dataset for teaching market efficiency or running a study, without scraping seasons of prices by hand.
Plans
Every plan includes all 9 sports, every filter and every metric. Plans differ by request volume only, with hard limits and no surprise overage.
- All 9 sports, full history
- Every filter and metric
- JSON responses
- Hard limit, no overage
- All 9 sports, full history
- Every filter and metric
- JSON responses
- Hard limit, no overage
- All 9 sports, full history
- Every filter and metric
- JSON responses
- Hard limit, no overage
- All 9 sports, full history
- Every filter and metric
- JSON responses
- Hard limit, no overage
- Higher rate limits
- Bulk CSV / Parquet export
- Uptime SLA and support
- Custom sports or metrics
Before you ask
What is in the dataset?
Historical odds and results across 9 sports: 4.64 million individual bets, one clean schema, with the best and average price, the implied probability, and whether each outcome won.
What format does the API return?
JSON. Every response is a plain object you can drop straight into a script, a notebook or a spreadsheet import.
How do you work out the metrics?
Model-free. We back every bet in a slice at the best available price and count wins and losses honestly. ROI is the average profit per unit staked. No projections, nothing hidden.
Can I use it commercially?
Paid plans include a commercial-use licence. The free plan is for evaluation and personal projects. Full terms ship with the plans.
When can I buy?
Pricing and checkout are being finalised. The tiers above are indicative. The endpoints are already live and powering the Explorer on this site.
Get early access
Checkout is not open yet. Leave your email and a note on what you would build, and we will reach out when the API goes live. In the meantime, the Explorer runs on this exact data.