Enterprise
from£750a month
For businesses and anyone serving other people with the data: custom bookmakers, several regions, push delivery, embeds and resale, on one contract billed by invoice.
Talk to usOddsRelay is an odds-data API for businesses. Raw prices from 140+ bookmakers, or matched feeds where every back price is already paired with the best lay on Betfair, Smarkets and Matchbook. bet365 is included in every plan.
Atlético Madrid
From the standard feed
Search the bookmakers and exchanges OddsRelay covers in the UK & Ireland, and see which feeds and sports each is on. The coverage page lists them all, no key needed.
Pick one to see the feeds and sports it’s covered on.
Every product and every bookmaker. When the 14 days end, the same key works on any plan.
50,000
tokens to spend
What a call costs
Every product comes through one keyed REST API and meets a maximum update time of 10–20 s: how old a bookmaker’s price can be when it reaches you. OddsRelay is a data supplier, not an operator, and takes no bets.
Back and lay for every selection: the main feed.
10,000 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_9f2c1a7b41d0",
"sport_key": "soccer_premier_league",
"sport_title": "Premier League",
"commence_time": "2026-07-08T14:00:00Z",
"home_team": "Arsenal",
"away_team": "Chelsea",
"markets": [{
"key": "h2h",
"outcomes": [{
"name": "Arsenal",
"back": [{
"bookmaker": "bet365",
"price": 2.10,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"lay": [{
"exchange": "smarkets",
"price": 2.14,
"available": 1840.0,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}]
}]
}]
}Every bookmaker’s and exchange’s own price for each selection, in one format. Bring your own matching and models.
40,000 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"id": "or_evt_2a7a8855d318",
"sport_key": "soccer_premier_league",
"sport_title": "Premier League",
"commence_time": "2026-08-15T14:00:00Z",
"home_team": "Arsenal",
"away_team": "Chelsea",
"bookmakers": [
{
"key": "bet365",
"title": "Bet365",
"region": "uk",
"last_update": "2026-08-15T12:03:11Z",
"markets": [
{
"key": "h2h",
"last_update": "2026-08-15T12:03:11Z",
"outcomes": [
{
"name": "Arsenal",
"price": 2.1
},
{
"name": "Chelsea",
"price": 3.6
},
{
"name": "Draw",
"price": 3.4
}
]
}
]
},
{
"key": "betfair_exchange",
"title": "Betfair Exchange",
"region": "uk",
"last_update": "2026-08-15T12:03:09Z",
"markets": [
{
"key": "h2h_lay",
"last_update": "2026-08-15T12:03:09Z",
"outcomes": [
{
"name": "Arsenal",
"back_price": 2.1,
"lay_price": 2.12,
"available": 1450
}
]
}
],
"currency": "GBP"
}
]
}Each-way horse racing prices, with each bookmaker’s place terms.
250 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_5b1e7c9a3f22",
"sport_key": "horse_racing",
"sport_title": "Horse Racing",
"commence_time": "2026-07-08T14:30:00Z",
"venue": "Ascot",
"markets": [{
"key": "each_way",
"outcomes": [{
"name": "Persian Wind",
"back": [{
"bookmaker": "bet365",
"price": 9.00,
"places": 4,
"place_fraction": 0.2,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"lay": {
"win": [{
"exchange": "smarkets",
"price": 9.40,
"available": 620.0,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"place": [{
"exchange": "smarkets",
"price": 2.30,
"available": 410.0,
"places": 4,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}]
}
}]
}]
}Races where a bookmaker pays more places than the market.
100 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_8d40f16b2c07",
"sport_key": "horse_racing",
"sport_title": "Horse Racing",
"commence_time": "2026-07-08T15:05:00Z",
"venue": "Newmarket",
"markets": [{
"key": "each_way",
"outcomes": [{
"name": "Coral Reef",
"back": [{
"bookmaker": "bet365",
"price": 13.00,
"places": 5,
"place_fraction": 0.2,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"lay": {
"win": [{
"exchange": "smarkets",
"price": 13.50,
"available": 300.0,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"place": [{
"exchange": "smarkets",
"price": 3.10,
"available": 250.0,
"places": 4,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}]
}
}]
}]
}Racing prices from bookmakers offering best odds guaranteed.
100 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_9f2c1a7b41d0",
"sport_key": "soccer_premier_league",
"sport_title": "Premier League",
"commence_time": "2026-07-08T14:00:00Z",
"home_team": "Arsenal",
"away_team": "Chelsea",
"markets": [{
"key": "h2h",
"outcomes": [{
"name": "Arsenal",
"back": [{
"bookmaker": "bet365",
"price": 2.10,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"lay": [{
"exchange": "smarkets",
"price": 2.14,
"available": 1840.0,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}]
}]
}]
}Markets priced on every outcome, for splitting one stake across all of them. Bookmaker prices only.
8,000 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_7b52c2b9681b",
"sport_key": "soccer_intl_friendly",
"sport_title": "Intl Friendly",
"commence_time": "2026-07-08T18:00:00Z",
"home_team": "Spain",
"away_team": "Brazil",
"markets": [{
"key": "h2h",
"outcomes": [
{
"name": "Spain",
"back": [{ "bookmaker": "bet365", "price": 2.60, "link": null,
"last_update": "2026-07-08T12:34:48Z" }]
},
{
"name": "Draw",
"back": [{ "bookmaker": "bet_victor", "price": 3.55, "link": null,
"last_update": "2026-07-08T12:34:48Z" }]
},
{
"name": "Brazil",
"back": [{ "bookmaker": "william_hill", "price": 3.35, "link": null,
"last_update": "2026-07-08T12:34:48Z" }]
}
]
}]
}Football prices from bookmakers that pay out early when the team backed goes two goals up.
300 tokens for the whole board in one call. Filters make a call cheaper, and any call can be priced first for free.
{
"event_id": "or_evt_9f2c1a7b41d0",
"sport_key": "soccer_premier_league",
"sport_title": "Premier League",
"commence_time": "2026-07-08T14:00:00Z",
"home_team": "Arsenal",
"away_team": "Chelsea",
"markets": [{
"key": "h2h",
"outcomes": [{
"name": "Arsenal",
"back": [{
"bookmaker": "bet365",
"price": 2.10,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}],
"lay": [{
"exchange": "smarkets",
"price": 2.14,
"available": 1840.0,
"link": null,
"last_update": "2026-07-08T12:34:48Z"
}]
}]
}]
}Pick what you’re building to see the feed it starts on and the request that reads it.
Paired back and lay prices for every matched-betting tool.
Starts on the matched feed
Embed the oddsmatcher, or build best-price tables on the API.
Starts on the oddsmatcher widget
Every bookmaker’s price for a selection on one row, with a link to each bookmaker’s event page.
Starts on the raw odds feed
Bookmaker prices beside exchange back and lay, for tools that do their own arbitrage and EV arithmetic.
Starts on the matched feed
A public OpenAPI contract, Python, TypeScript and R clients and an MCP server, with a free quote for any call.
Starts on the docs and the OpenAPI contract
The UK and Irish bookmakers' prices beside exchange back and lay with the liquidity, as a reference to check your own prices against.
Starts on the matched feed
Every plan gets every product and bookmaker in your region. Plans differ only in tokens.
£0for 14 days
50,000 tokens
Try the whole feed before you pay.
Start free£19a month
50,000 tokens a month
For light, occasional calls.
Choose Starter£99a month
500,000 tokens a month
For regular calls through the day.
Choose Pro£449a month
5M tokens a month
For heavy, all-day use.
Choose Maxfrom£750a month
For businesses and anyone serving other people with the data: custom bookmakers, several regions, push delivery, embeds and resale, on one contract billed by invoice.
Talk to usYes, on the free plan, with no card and the whole feed. It's one per company or personal email address every 12 months, and when it ends the same key works on any plan you choose.
A token is what a call costs. What a call takes depends on the feed and the filters you ask for, and any call can be priced first for free. The pricing page shows what typical calls cost.
A call that costs more tokens than you have left is refused with a 402, and nothing is charged. Cheaper calls keep working until a paid plan's tokens reset or you move to a bigger plan, on the key you already have. There is no overage billing.
The self-serve plans are for your own use. Showing the data, or anything made from it, to other people needs an Enterprise contract, and so does reselling it.
Sign up with your email address for 50,000 free tokens over 14 days, no card, and make your first request today.