Join The Team!
A signing like no other...
AI-ready OddAlerts Football Data API
Odds from eight bookmakers, opening, closing and peak history, value bets, player percentiles, stats and model probabilities. One JSON API, documented for developers and AI agents.
A 48-hour Advanced Day Pass unlocks every endpoint, plus 60 OddAlerts AI analyses a day. £9.99, one-off.
Upcoming fixtures with Pinnacle and Bet365 match odds, side by side. Every request is a plain GET with your token on the query string.
curl "https://data.oddalerts.com/api/fixtures/upcoming\ ?include=odds\ &bookmakers=pinnacle,bet365\ &markets=ft_result,btts\ &filters=hasOdds\ &api_token=YOUR_TOKEN"
{
"info": { "page": 1, "per_page": 250, "next_page_url": "…" },
"data": [
{
"id": 1234,
…
"odds": {
"pinnacle": {
"ft_result": { "home": 2.05, "draw": 3.50, "away": 3.10 },
"btts": { "yes": 1.85, "no": 1.97 }
},
"bet365": {
"ft_result": { "home": 2.10, "draw": 3.40, "away": 2.90 },
"btts": { "yes": 1.83, "no": 1.95 }
}
}
}
]
}
The same data that powers OddAlerts, available to your own apps, models and spreadsheets.
Pre-match prices from all eight bookmakers in one call. Ask for two or more books and each price comes back nested under its bookmaker, ready for side-by-side comparison.
/odds/upcoming
Opening, closing and peak odds for every fixture, bookmaker and market, kept indefinitely. Tick-by-tick movement is kept for 21 days. Ideal for closing-line analysis and backtests.
/odds/history
Bet365 in-play prices alongside live stats, events and model probabilities for every match in play. One request powers a live dashboard.
include=odds.live
The biggest price drops across the market, filterable by bookmaker and minimum drop. The same data behind our dropping odds page.
/odds/dropping
See it live
Prices where the bookmaker is above our model's fair odds, by market, league and bookmaker. Pair it with /trends for team-level patterns.
/value/{type}
See it live
Model probabilities for upcoming, today's and live fixtures, correct-score probabilities, and an AI-written match preview for any fixture.
/probability
Team stats (beta) for 2,500+ leagues, per-half stats, referees and head-to-heads. Fixture stats resolve both teams and their league for you.
/stats/season
OA percentiles for every player against others in his role and level, plus derived stats, workload and prop hit rates. The data behind our player rankings.
/players/percentiles
Details
Whole seasons, competitions or teams in one paginated feed, with odds, probabilities, stats, lineups and events attached. Build a football database in an afternoon.
/fixtures/season
Generate accumulators to a target price from your own rules and our probability model.
POST /betslips
See it live
New add-on
Our latest match model, in your API. Every fixture starts from sharp market prices and is played out 100,000 times, so you get full probability distributions for results, scores, goals, corners and cards, ready for your own models and bots. It is the engine behind our match simulations.
detail=summary, standard or full, plus include= for just the sections you need./predictions/generate/{id}?version=2
/predictions/generate/multiple?ids=…&version=2
£29.99 / month Add-on for Advanced · 2-day free trial · Same API key, cancel anytime
curl "https://data.oddalerts.com/api/predictions/generate/1234\ ?version=2\ &detail=summary\ &api_token=YOUR_TOKEN"
{
"fixture_name": "Gnistan vs Inter Turku",
"version": 2,
"home_win_percentage": 25.5,
"draw_percentage": 25.76,
"away_win_percentage": 48.74,
"btts_percentage": 56.35,
"o25_goals_percentage": 54.04,
"expected_goals": { "home": 1.16, "away": 1.69, "total": 2.85 },
"top_scorelines": { "1-1": 12.08, "1-2": 9.37, "0-1": 8.93, … },
"value_bets": [
{
"market": "Full Time Result",
"selection": "Home",
"fair_odds": 3.92,
"best_odds": 4.19,
"best_bookmaker": "Pinnacle",
"edge_pct": 6.83
}
],
"drivers": [ "Sharp market (Pinnacle) implies 2.89 total goals.", … ]
}
Beta
Football and soccer player stats for 50,000+ players, from per-90s to season totals. Every player is also compared with others in the same role at the same level, so you get our OA percentiles too. It is the same data behind our player rankings.
In beta and included with Advanced for now. The player endpoints become a paid add-on in November.
/players/percentiles
/players/rank
/players/fixture/{id}
/players/{id}?include=intel
curl "https://data.oddalerts.com/api/players/percentiles\ ?metrics=expected_goals_p90:2,shots_total_p90\ &role=ST\ &level=elite\ &api_token=YOUR_TOKEN"
{
"data": [
{
"rank": 1,
"name": "Raphinha",
"role": "ST",
"cohort": "role:ST|elite",
"cohort_size": 224,
"score": 98.3,
"metrics": {
"expected_goals_p90": { "pct": 100, "value": 1.09 },
"shots_total_p90": { "pct": 95, "value": 4.27 }
},
…
},
{ "rank": 2, "name": "Harry Kane", "score": 97, … }
]
}
Pinnacle odds, Bet365 odds and six more books in a single request. Use the ID or the slug, comma-separated.
pinnacle
bet365
onexbet
williamhill
betfair
kambi
betano
fanduel
?bookmakers=pinnacle,bet365 is the same as ?bookmakers=1,2
Every path is relative to https://data.oddalerts.com/api. This list is generated from our llms.txt, which has parameters, response shapes and worked examples for each one.
GET
/fixtures/{id|multiple|live|upcoming|popular|between}
GET
/fixtures/season/{season_id}
GET
/fixtures/competition/{competition_id}
GET
/fixtures/team/{team_id}
GET
/stats/season/{league_id}
?teams=ID1,ID2
GET
/stats/fixture/{fixture_id}
GET
/probability/{type}
GET
/correctScores
GET
/odds/history/{id|multiple}
?ids=,&bookmakers=,&markets=
GET
/odds/movement/{id|multiple}
?ids=,&page=,&per_page=
GET
/odds/dropping
?page=&per_page=&min_drop=&bookmakers=
GET
/odds/latest
?since_minutes=&bookmakers=&markets=
GET
/odds/upcoming
?bookmakers=&markets=&odds_type=&from=&to=
GET
/value/{type}
?market=,&league_id=,&bookmaker=
GET
/value/you, /value/you/{id}
GET
/trends/{trend}
GET
/teams/{type}, /teams/{type}/{id}
GET
/competitions, /competitions/search?query=, /competitions/{id}
GET
/countries
GET
/bookmakers
GET
/referees, /referees/upcoming, /referees/{id}/...
GET
/players/meta
GET
/players/search
?q=&include=
GET
/players/rank
?stat=&form=&min_apps=&teams=&include=
GET
/players/percentiles
?metrics=&role=|group=&level=&window=
GET
/players/{id}
?include=stats,season_stats,intel
GET
/players/fixture/{fixture_id}
?sort_by=&include=
GET
/players/season/{season_id}
?teams=&sort_by=&include=
GET
/players/competition/{competition_id}
GET
/bets
GET
/bankrolls, /bankrolls/{id}
POST
/betslips
GET
/csv/probability
GET
/predictions/generate/{id}
GET
/vidiprinter
?minutes=&type=
Our llms.txt is a single plain-text reference written for language models. Hand it to ChatGPT, Claude or Cursor and they can write working OddAlerts API calls first time.
Read https://data.oddalerts.com/llms.txt and use it as the source of truth for the OddAlerts football API. Write a Python script that pulls Pinnacle and Bet365 match odds for today's fixtures and flags any game where the two books disagree by more than 5% on the home win. My API token is in the ODDALERTS_TOKEN environment variable.
The API has been genuinely excellent to build on. The
stats.periodsaddition was exactly what I had been missing, the per-bookmaker nesting oninclude=oddsmade multi-book comparison trivial, and the fact that/odds/historykeeps opening, closing and peak indefinitely is the single most valuable thing in the product for me.
API access is part of the Advanced plan. Try it for 48 hours first if you like.
Full API access for 48 hours. Perfect for a prototype or a weekend backtest.
Or £179.99 a quarter, £329.99 for six months, £599.99 a year.
Already on Pro? Existing GBP Pro subscribers switch to Advanced with the price prorated.
Want 100,000-run match simulations? Add the Simulations Engine v2 to Advanced for £29.99 / month.
A JSON REST API for football (soccer) data at data.oddalerts.com/api. It covers fixtures and results, pre-match and live odds from eight bookmakers, opening, closing and peak odds history, dropping odds, value bets, model probabilities, team stats and AI match previews.
No. API access comes with the Advanced plan, or with a one-off 48-hour Advanced Day Pass for £9.99 if you want to try it first. A free OddAlerts account still gets you the tools on the website.
Pinnacle, Bet365, 1xBet, William Hill, Betfair Exchange, Kambi, Betano and FanDuel. Pass bookmaker IDs or slugs, comma-separated, for example bookmakers=pinnacle,bet365.
Opening, closing and peak odds are kept indefinitely. Full tick-by-tick odds movement is kept for 21 days.
Yes. Add include=odds.live to the live fixtures endpoint for Bet365 in-play prices, returned alongside live stats and probabilities.
Add your api_token as a query parameter on every request. Tokens allow 300 requests per minute, with a few endpoints set lower. Going over returns HTTP 429.
Yes. The player endpoints cover football (soccer) player stats for 50,000+ players. Every player comes with rolling form, season totals and OddAlerts intel: the role he actually plays, per-90s, his share of team shots and xG, workload, and percentiles from 0 to 100 against players in the same role and level. /players/percentiles ranks players on those percentiles, the same data behind our player rankings at oddalerts.com/players.
Our latest match model, available on /predictions/generate with version=2. It starts from sharp bookmaker prices, adjusts for form, xG, home advantage, rest, injuries and weather, then plays each fixture out 100,000 times for full probabilities on results, correct scores, goals, corners and cards. It costs £29.99 a month on top of Advanced, with a 2-day free trial, and you add it from your dashboard. Version 1 predictions stay included with Advanced.
Yes. Give your assistant our llms.txt at data.oddalerts.com/llms.txt. It is a single plain-text reference covering authentication, bookmaker IDs, markets, every endpoint and worked examples, so your assistant can write working requests first time.
No. The API is for your own projects. Reselling, redistributing or reproducing the data is not allowed under the API terms.