If you searched for a free odds API, here is the straight answer for Odds-API.io in 2026: new free API keys are paused. This page explains why, what you can still use for free without a key, and the cheapest way to get real odds data.
Is there a free Odds-API.io key?
Not for new accounts. We paused new free keys on 27 August 2026. Free access was being abused at scale: networks of throwaway accounts on disposable email domains were scraping odds to rebuild competing sites, and that load came out of the capacity paying developers rely on. Free keys created before the pause keep working at 100 requests per hour.
We would rather say that plainly than advertise a free tier and quietly gate it. What follows is what is genuinely free today.
What you can use for free, without a key
Part of the API needs no key at all. It is enough to check whether we cover your sports, bookmakers and markets before you pay anything:
- GET /v3/sports: all 34 sports we cover, with the slugs every other endpoint uses
- GET /v3/bookmakers: the full bookmaker list, 415+ books, with an active flag on each
- GET /v3/markets?sport=football: the exact market names for a sport, their shape and period, and whether each is available pre-match and live
curl 'https://api.odds-api.io/v3/sports'
curl 'https://api.odds-api.io/v3/bookmakers'
curl 'https://api.odds-api.io/v3/markets?sport=football'A trimmed response from the markets endpoint:
{
"sport": { "name": "Football", "slug": "football" },
"markets": [
{ "name": "ML", "shape": "moneyline", "period": "match", "prematch": true, "live": true },
{ "name": "Spread", "shape": "line", "period": "match", "prematch": true, "live": true }
]
}On the site, also free and with no account:
- The bookmaker directory: coverage per bookmaker, by sport and market
- Free betting calculators: odds converter, margin, Kelly and arbitrage calculators
- The docs: every endpoint, parameter and response field, plus the OpenAPI spec
The cheapest way to real odds data
Odds and events need a key. The entry plan is Solo at £49 a month: 2 bookmakers of your choice, 5,000 requests per hour, pre-match and live odds across every sport and market. You can cancel at any time, and paying yearly gets you 2 months free (£490 a year).
Larger plans add bookmakers (Starter 5, Growth 10, Pro 15) at the same 5,000 requests per hour. The WebSocket feed, which pushes every price change instead of polling, is an add-on on any plan. Full details are on the pricing page.
Once you have a key, this is how the API works.
How the API works
Getting odds from the REST API takes three requests: leagues, then events, then odds. One thing worth knowing upfront: Odds-API.io uses a unified event ID system, so the same event ID works across all bookmakers and across both REST and WebSocket. You never have to map or reconcile IDs between sources. For WebSocket, see our docs here https://docs.odds-api.io/guides/websockets
Step 1: Get the league slug from /leagues
curl -X 'GET' \
'https://api.odds-api.io/v3/leagues?apiKey=YOUR_KEY&sport=football&all=true' \
-H 'accept: application/json'This returns a list of all available leagues for that sport. Each one has a slug you'll use in the next step:
[
{
"name": "International - FIFA World Cup",
"slug": "international-fifa-world-cup",
"eventsCount": 48
}
]Step 2: Get events from /events
Pass the league slug to get upcoming events and their IDs:
curl -X 'GET' \
'https://api.odds-api.io/v3/events?apiKey=YOUR_KEY&sport=football&league=international-fifa-world-cup&status=pending' \
-H 'accept: application/json'[
{
"id": 66456928,
"home": "Brazil",
"away": "Morocco",
"date": "2026-06-13T22:00:00Z",
"league": {
"name": "International - FIFA World Cup",
"slug": "international-fifa-world-cup"
},
"status": "pending"
}
]There are four variants of the events endpoint depending on what you need:
/events- returns upcoming events, requires a league slug. Accepts abookmakerparameter so you can filter to only events available at a specific bookmaker/events/live- returns all currently live events, no slug needed/events/search- find events by team name/events/{id}- returns a single event by its ID
Step 3: Get odds from /odds
Use the id from the events response to pull odds for that specific match:
curl -X 'GET' \
'https://api.odds-api.io/v3/odds?apiKey=YOUR_KEY&eventId=66456928&bookmakers=Bet365' \
-H 'accept: application/json'Key parameters:
apiKey(required): your API keyeventId(required): the numeric ID from the /events responsebookmakers(optional): filter to specific bookmakers, e.g.Bet365,DraftKings,Kambi
What the response looks like
Here is a real response from the API, England vs Croatia in the FIFA World Cup 2026, from Bet365:
{
"id": 66457042,
"home": "England",
"away": "Croatia",
"date": "2026-06-17T20:00:00Z",
"status": "pending",
"sport": {
"name": "Football",
"slug": "football"
},
"league": {
"name": "International - FIFA World Cup",
"slug": "international-fifa-world-cup"
},
"urls": {
"Bet365": "https://www.bet365.com/#/AC/B1/C1/D8/E185942637/F3/I1/P32778/H1/"
},
"bookmakers": {
"Bet365": [
{
"name": "ML",
"updatedAt": "2026-06-09T23:19:20.811Z",
"odds": [{ "home": "1.727", "draw": "3.800", "away": "4.750" }]
},
{
"name": "Spread",
"updatedAt": "2026-06-07T11:59:56.863Z",
"odds": [{ "hdp": -0.75, "home": "1.950", "away": "1.900" }]
},
{
"name": "Totals",
"updatedAt": "2026-06-09T23:32:07.48Z",
"odds": [{ "hdp": 2.25, "over": "1.900", "under": "1.950" }]
},
{
"name": "Both Teams To Score",
"updatedAt": "2026-06-10T02:13:11.116Z",
"odds": [{ "yes": "2.050", "no": "1.700" }]
},
{
"name": "Anytime Goalscorer",
"updatedAt": "2026-06-12T01:57:57.38Z",
"odds": [
{ "label": "Harry Kane", "hdp": 0.5, "over": "2.300" },
{ "label": "Bukayo Saka", "hdp": 0.5, "over": "3.500" },
{ "label": "Jude Bellingham", "hdp": 0.5, "over": "4.333" }
]
}
]
}
}A few things worth noting in that response:
urls.Bet365 is a direct link to that event on Bet365. If you're building an odds comparison tool or alert system, you can send users straight to the right page without any extra lookup.
updatedAt on each market tells you exactly when that line was last captured. For live betting applications, this matters: you can check freshness before displaying odds to a user.
hdp is the handicap value. On the Spread market above, -0.75 means England are giving Croatia a 0.75-goal head start. On Totals, 2.25 is the line for over/under goals. The same field name is used consistently across all handicap markets.
Market depth: this is a single event returning 14+ market types from one bookmaker, including player props (anytime goalscorer for 30+ players), corners, half-time lines, and European handicap at multiple lines. That's the same depth available on the free tier.
Building something with it
Here's a minimal Python script that fetches odds for a specific event and prints the moneyline and totals markets:
import requests
API_KEY = "your_api_key_here"
EVENT_ID = "66457042" # England vs Croatia, World Cup 2026
url = "https://api.odds-api.io/v3/odds"
params = {
"apiKey": API_KEY,
"eventId": EVENT_ID,
"bookmakers": "Bet365"
}
response = requests.get(url, params=params)
data = response.json()
event_name = f"{data['home']} vs {data['away']}"
print(f"\n{event_name} | {data['league']['name']}\n")
for bookmaker, markets in data["bookmakers"].items():
print(f"Bookmaker: {bookmaker}")
for market in markets:
if market["name"] in ("ML", "Totals"):
print(f" {market['name']}: {market['odds']}")That's all it takes to get structured odds into Python. From there you could:
- Store results in a database and track line movement over time
- Compare the same event across multiple bookmakers to spot discrepancies
- Build a Telegram or Discord bot that alerts you when odds shift on specific markets
- Power a web dashboard showing live odds for upcoming fixtures
- Feed data into a model that tracks closing line value
What we cover
Every plan draws on the same feed (full list in the bookmaker directory):
- 415+ bookmakers globally, including Bet365, DraftKings, William Hill, SingBet, Polymarket and regional books across Europe, Asia and the Americas
- 34 sports and 12,000+ leagues: football, basketball, tennis, baseball, ice hockey, cricket, esports and more
- 500+ market types: moneyline, Asian handicap, over/under, correct score, both teams to score, player props, corners, half-time markets and others
- Pre-match and live odds on every paid plan
Common questions
Is there a free sports betting odds API?
Not from Odds-API.io for new accounts: new free keys have been paused since 27 August 2026. The sports, bookmakers and markets endpoints work without a key, so you can check coverage for free. Real odds start with the Solo plan at £49 a month.
Why did you stop giving out free keys?
Abuse. Throwaway accounts on disposable email domains were scraping odds at scale to rebuild competing sites. Pausing new free keys protects the capacity paying developers use.
Do existing free keys still work?
Yes. Free keys created before the pause keep working at 100 requests per hour.
What is the cheapest paid plan?
Solo: £49 a month, or £490 a year, for 2 bookmakers of your choice, 5,000 requests per hour and pre-match plus live odds on every sport and market. Cancel any time.





