Cricket draws a large betting audience across T20 leagues, Test series, women's competitions and domestic tournaments in India, Australia, New Zealand and beyond. A cricket odds API gives you prices from many bookmakers for those matches in one format, so you can build a comparison page, a model or a betting tool without collecting the prices yourself.
This guide shows what the Odds-API.io cricket data contains, which competitions and markets it covers, and how to pull and compare prices in Python. Every example was run against the live API on 27 October 2026, and the output shown is real.
What a cricket odds API returns
Each cricket match is one event with an id, the two teams, the league and the start time. For each bookmaker you get the markets it prices for that match, with a timestamp for when each market last changed. These are the cricket markets the API carried for upcoming matches on 27 October, with the number of bookmakers pricing each:
| Market | What it prices | Coverage |
|---|---|---|
| ML | Which team wins, two outcomes | 47 bookmakers |
| 3-Way Result | Home, draw or tie, away | 10 bookmakers |
| Draw No Bet | Winner, stake back on a draw | 13 bookmakers |
| Double Chance | Two of the three outcomes | 11 bookmakers |
| Totals | Runs over or under a line | 2 bookmakers |
| Player markets | Top batter, top bowler, player of the match, batter runs | Bet365 |
| Match specials | Toss winner, first over runs, runs at first wicket | Mainly Bet365 |
The moneyline is where you get the widest comparison: 47 bookmakers had a cricket ML price for at least one upcoming match. Player and specials markets come from fewer books, so check the odds response for the matches and books you need before you design around them.
Competitions with cricket odds
The API listed 64 cricket leagues with upcoming matches on 27 October. Examples included the Syed Mushtaq Ali Trophy, the Senior Women's T20 Trophy and the Ranji Trophy in India, the Big Bash League and the Women's Big Bash League in Australia, the International League T20 and the Abu Dhabi T10 in the UAE, the Nepal Premier League, the Sheffield Shield, and New Zealand's Ford Trophy and Plunket Shield.
International cricket sits in its own leagues per series, for example the New Zealand v India T20 series, the Bangladesh v West Indies Test series and the Pakistan ODI tri-series. The IPL and The Hundred are between seasons, and both have 2026 matches in the historical data. The Big Bash League already lists 40 upcoming matches from 12 December. Bookmakers had not priced them yet on 27 October, and the script below handles that case.
You can list the leagues and how many upcoming events each has with one call:
curl "https://api.odds-api.io/v3/leagues?apiKey=YOUR_API_KEY&sport=cricket"List upcoming cricket matches and compare prices in Python
The script below lists the next cricket matches, then fetches one match from six bookmakers and finds the best price for each side. It uses the events and odds endpoints and nothing else. Set your key in the ODDS_API_KEY environment variable and change BOOKMAKERS to the books on your plan.
import os
import requests
API = "https://api.odds-api.io/v3"
KEY = os.environ["ODDS_API_KEY"]
BOOKMAKERS = "Bet365,1xbet,Stake,Betway,Skybet,BoyleSports"
def get(path, **params):
r = requests.get(f"{API}{path}", params={"apiKey": KEY, **params}, timeout=15)
r.raise_for_status()
return r.json()
def upcoming(league=None):
params = {"sport": "cricket", "status": "pending"}
if league:
params["league"] = league
return sorted(get("/events", **params), key=lambda e: e["date"])
def best_prices(event_id, market="ML"):
event = get("/odds", eventId=event_id, bookmakers=BOOKMAKERS)
best = {}
for book, markets in event.get("bookmakers", {}).items():
for m in markets:
if m["name"] != market:
continue
for side, price in m["odds"][0].items():
price = float(price)
top, books = best.get(side, (0.0, []))
if price > top:
best[side] = (price, [book])
elif price == top:
books.append(book)
return event, best
def show(event, best, outcomes):
for side, (price, books) in best.items():
print(f" {side:<5} {price:>6.2f} {', '.join(books)}")
if set(best) != set(outcomes):
print(" prices incomplete, no margin")
return
margin = sum(1 / price for price, _ in best.values()) - 1
print(f" combined margin at best prices: {margin:+.1%}")
if __name__ == "__main__":
for e in upcoming()[:5]:
print(f'{e["date"][:16]} {e["league"]["name"]}: {e["home"]} v {e["away"]}')
event, best = best_prices(73528228)
print(f'\nBest moneyline prices, {event["home"]} v {event["away"]}:')
show(event, best, ["home", "away"])The output on 27 October:
2026-10-27T21:30 New Zealand - Ford Trophy: Auckland Aces v Canterbury Kings
2026-10-27T21:30 New Zealand - Ford Trophy: Central Stags v Northern Districts
2026-10-28T00:00 Australia - Sheffield Shield: South Australia v Western Australia
2026-10-28T04:00 International - Test Series Bangladesh vs West Indies: Bangladesh v West Indies
2026-10-28T06:45 International - ICC Cricket World Cup, Challenge League: Qatar v Denmark
Best moneyline prices, New Zealand v India:
home 2.50 Betway, BoyleSports
away 1.57 Betway
combined margin at best prices: +3.7%Install the one dependency with pip install requests and save the script as cricket_odds.py, since the next example imports it. Pass a league slug to upcoming() to stay within one competition, for example australia-big-bash-league. When several books share the best price, all of them are listed. The margin line adds up the implied probabilities of the best prices, a quick measure of how competitive the market is, and is skipped when a match has no price yet for one of the outcomes.
Test matches: compare the three-way market
A Test can end in a draw. For the Bangladesh v West Indies Test starting on 28 October, home prices in the ML market fetched the day before ranged from 1.45 at one book to 1.83 at another. Prices that far apart are a reason to check each book's rules for a drawn Test before you put their two-way prices side by side.
The 3-Way Result market names the draw as its own outcome, which makes it the clearer market to compare on Tests and other multi-day matches. The same function works with a different market name:
from cricket_odds import best_prices, show
event, best = best_prices(75330450, market="3-Way Result")
print(f'Best 3-way prices, {event["home"]} v {event["away"]} (Test):')
show(event, best, ["home", "draw", "away"])Best 3-way prices, Bangladesh v West Indies (Test):
home 1.80 1xbet, BoyleSports, Stake
draw 5.50 BoyleSports
away 3.20 Stake
combined margin at best prices: +5.0%In limited-overs cricket the middle outcome of a three-way market is a tie, and it is priced long. One book had the tie on the New Zealand v India T20 at 25.0. Use ML for T20 and one-day matches, and the three-way market when the draw is a real result.
How fresh the prices are
Every market in the response carries an updatedAt timestamp, the time that bookmaker last changed it, so you can show how recent each price is. How often you poll is up to you and your request budget. If you track many matches, the odds feed over WebSocket pushes each change instead.
This guide covers pre-match prices. If you plan in-play features, test the matches and books you need first.
One call for a comparison page
If you build a comparison page, the odds summary endpoint returns the best, average and fair price for each outcome across your bookmakers in one call, with the books offering the best price. It is available on Growth plans and above. The script above calculates best prices directly from the standard odds endpoint, while the summary applies its own filters and lists up to five books per best price.
Historical cricket odds
Past matches are available through the historical endpoints. The closing-lines endpoint returns the matches for a league and date range in one request, with scores where they are recorded. For the IPL between 10 April and 9 May 2026 it returned 36 matches with Bet365's closing moneyline, 34 of them with final scores. Data like this lets you test a model on past matches before you use it on new ones.
curl "https://api.odds-api.io/v3/historical/closing-lines?apiKey=YOUR_API_KEY&sport=cricket&leagues=india-indian-premier-league&from=2026-04-10T00:00:00Z&to=2026-05-09T00:00:00Z&markets=ML&bookmakers=Bet365"Frequently asked questions
Does the API cover the IPL?
The IPL is its own league in the API, india-indian-premier-league. The historical data has 36 IPL matches between 10 April and 9 May 2026 alone, all with Bet365 closing moneyline prices.
Which bookmakers carry cricket?
On 27 October, 47 bookmakers had cricket moneyline prices for upcoming matches, including Bet365, 1xBet, Stake, Betway, Sky Bet and BoyleSports. Coverage differs by match, and the odds response lists the books that priced each one.
Are player markets available?
Yes, mainly from Bet365. On 27 October Bet365 had top batter, top bowler and player of the match markets for New Zealand v India and for Women's Big Bash League matches. It also carried batter runs lines.
How are ties and draws handled?
Ties and draws are priced in the 3-Way Result market. Draw No Bet returns the stake on a draw, and Double Chance pays on either of two outcomes.
Getting started
See the pricing page for plans in your currency and the cricket page for coverage. For a broader guide to building on several bookmakers, read How to Compare Odds Across Multiple Bookmakers with an API.





