Historical sports odds and results by API
Get win rate, ROI and market calibration as JSON for any slice of historical odds and results. The Explorer runs on the same data
Querying the API
Send your key and filters and get the metrics back as JSON. Base URL https://flintstat.com/api/v1
curl https://flintstat.com/api/v1/query \
-H "Authorization: Bearer $FLINTSTAT_KEY" \
-H "Content-Type: application/json" \
-d '{
"sport": "basketball",
"filters": {
"is_favorite": ["false"]
},
"min_odds": 2,
"max_odds": 5
}'{
"data": {
"bets": 15433,
"suppressed": false,
"win_rate_pct": 35.2,
"roi_pct": -3.33,
"roi_se_pct": 1.1,
"roi_avg_pct": -3.33,
"roi_avg_se_pct": 1.1,
"books_avg": 1,
"implied_prob_pct": 36.33,
"avg_odds": 2.917,
"seasons_total": 16,
"seasons_positive": 1,
"roi_std_pct": 2.45,
"roi_worst_pct": -6.47,
"roi_by_season": [
{
"season": "2007-08",
"bets": 975,
"roi_pct": -1.81,
"roi_avg_pct": -1.81
}
],
"calibration": [
{
"bucket": "2.0-2.5",
"bets": 5477,
"suppressed": false,
"implied_pct": 45.4,
"actual_pct": 43.91,
"roi_pct": -3.14,
"roi_avg_pct": -3.14
}
]
},
"sources": [
{
"sport": "basketball",
"title": "NBA Betting Data",
"author": "cviaxmiwnptr on Kaggle",
"url": "https://www.kaggle.com/datasets/cviaxmiwnptr/nba-betting-data-october-2007-to-june-2024",
"licence": "CC0 1.0",
"licence_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"origin": "SportsbookReviewsOnline (sportsbookreviewsonline.com), the original source of the odds",
"notice": null,
"note": "Modified, team names unified and aggregates computed"
}
]
}What you get
Metrics
- Bets, win rate and ROI at the best and at the average price for any slice
- Standard error of ROI, to tell noise from an edge
- Market calibration by odds range
- ROI season by season
- Leagues with favorite win rate and bookmaker margin
- Teams, players and fighters with their ROI
Limits
- Test gives 100 requests in total, 10 per minute
- Standard gives 50,000 requests a month, 120 per minute
- The monthly quota resets at midnight UTC on the 1st of each month, not on the billing date
- Metrics stay hidden for cells under 20 bets
- Two requests at a time per account
License
Personal and commercial use on every plan
Credit Data by Flintstat and the sources below. Do not resell the data as a dataset or feed
Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /api/v1/sports | Each sport with its bets, events and first and last season |
| GET | /api/v1/sports/{sport}/filters | A sport's filters with their values and the odds range |
| POST | /api/v1/facets | The filter values still available for a selection |
| POST | /api/v1/query | Count, win rate, ROI at the best and average price, calibration by odds range and ROI per season for a filtered slice |
| GET | /api/v1/leagues | Each league with its favorite win rate, ROI and bookmaker margin |
| GET | /api/v1/sports/{sport}/entities | Teams, players and fighters with their ROI, page by page |
Sources
Every API answer names its sources. Their licenses ask you to credit them wherever you show the data
NBA
MLB
The information used here was obtained free of charge from and is copyrighted by Retrosheet. Interested parties may contact Retrosheet at "www.retrosheet.org".
UFC
NFL
Who it's for
Back your content with historical ROI and market calibration and show readers where the value has been
One schema for backtests and market efficiency research
Pull citable stats for articles, match previews and data visualizations
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
Both plans allow personal and commercial use with attribution
| Plan | Price | Requests |
|---|---|---|
| TestFor evaluation, no card neededGet a test key | $0 | 100 in total |
| StandardPersonal and commercial useUpgrade | $20 / month | 50,000 / month |
Need more requests or a custom plan? Write to admin@flintstat.com
- Every served sport, full history
- Every filter and metric
- JSON responses
- Hard limit, no overage
API terms
- Personal and commercial use allowed
- Credit Data by Flintstat and the dataset sources
- No resale or redistribution of the data as a dataset or feed
- Fair use of the quota
- We may revoke keys for abuse
Questions
How do I get a key?
Sign in, confirm your email and create a key on the keys page. The Test plan gives 100 requests in total and 10 per minute, no card needed
What is in the dataset?
Historical odds and results in one schema, with the price, the implied probability and whether each outcome won
What format does the API return?
JSON, one plain object per response
How do you work out the metrics?
We back every bet in a slice at the best and at the average price and count every win and loss, with no model. ROI is the average profit per unit staked. Few bettors always get the best price, so the average price is the realistic baseline
Can I use it commercially?
Yes. Personal and commercial use is allowed on every plan if you credit Data by Flintstat and the sources. Reselling the data as a dataset or feed is not allowed
How do I upgrade?
Open the keys page and choose Upgrade. Standard is $20 a month through Stripe, and you can cancel any time in billing