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

The API serves NBA, MLB, UFC, and NFL today

Querying the API

Send your key and filters and get the metrics back as JSON. Base URL https://flintstat.com/api/v1

Request
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
  }'
Response
{
  "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

NBA
19,804 events
2007-08 to 2022-23
About 99% of matches played
Leagues NBA
MLB
22,749 events
2012 to 2021
About 99% of matches played
Leagues MLB
UFC
6,885 events
2010 to 2026
About 94% of matches played
Leagues UFC
NFL
1,354 events
2021 to 2025
About 99% of matches played
Leagues NFL

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

MethodPathReturns
GET/api/v1/sportsEach sport with its bets, events and first and last season
GET/api/v1/sports/{sport}/filtersA sport's filters with their values and the odds range
POST/api/v1/facetsThe filter values still available for a selection
POST/api/v1/queryCount, win rate, ROI at the best and average price, calibration by odds range and ROI per season for a filtered slice
GET/api/v1/leaguesEach league with its favorite win rate, ROI and bookmaker margin
GET/api/v1/sports/{sport}/entitiesTeams, 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

NBA Betting Databy cviaxmiwnptr on Kaggle
License CC0 1.0
Original data from SportsbookReviewsOnline (sportsbookreviewsonline.com), the original source of the odds
Modified, team names unified and aggregates computed

MLB

MLB Odds Databy Christopher Treasure on Kaggle
License Other, as specified in the dataset description
Odds joined with the Retrosheet game logs, aggregates computed
Game results
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

Ultimate UFC Datasetby mdabbert on Kaggle
License CC BY 4.0
Original data from bestfightodds.com for the odds, ufcstats.com for the results
Modified, fighter names unified and aggregates computed

NFL

MGM Grand NFL betting databy Casey Durfee (caseydurfee) on Kaggle
License CC BY-SA 4.0
Original data from Yahoo Sports pages, odds of BetMGM
Modified, served as aggregates only

Who it's for

Affiliates and tipsters

Back your content with historical ROI and market calibration and show readers where the value has been

Traders and quants

One schema for backtests and market efficiency research

Media and content

Pull citable stats for articles, match previews and data visualizations

App builders

Ship a betting or stats app without collecting and cleaning years of odds yourself

Researchers and students

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

PlanPriceRequests
TestFor evaluation, no card neededGet a test key$0100 in total
StandardPersonal and commercial useUpgrade$20 / month50,000 / month
Test
$0
100 requests in total
10 per minute
For evaluation, no card needed
Get a test key
Standard
$20/ month
50,000 requests / month
120 per minute
Personal and commercial use
Upgrade

Need more requests or a custom plan? Write to admin@flintstat.com

Every plan includes
  • 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

Need more requests or a custom plan