The odds feed, raw or ready-matched.
OddsRelay 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.
- No card needed
- 50,000 tokens for 14 days
Atlético Madrid v Real Madrid
Atlético Madrid
- Back
4.10 - Lay
£1,885 available3.90
From the standard feed
140+ bookmakers · 60+ live in the UK & Ireland
Is your bookmaker covered?
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.
Try the whole feed free for 14 days
- No card needed
- Just confirm your email
- 50,000 tokens for 14 days
Every product and every bookmaker. When the 14 days end, the same key works on any plan.
- Enter your email address. No card and no payment details.
- Type the code we email you. Your API key is waiting in the dashboard.
- Try it in your dashboard. Pick a feed, see what it costs, and read the odds as a table or JSON.
50,000
tokens to spend
What a call costs
- The whole standard feed10,000 tokens
- Football at Ladbrokes184 tokens
- Pricing a call before you make itFree
Raw odds and matched feeds, one API
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.
Standard
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"
}]
}]
}]
}Raw
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
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"
}]
}
}]
}]
}Extra place
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"
}]
}
}]
}]
}Best odds guaranteed
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"
}]
}]
}]
}Dutching
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" }]
}
]
}]
}2Up
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"
}]
}]
}]
}What are you building?
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
Start free, then choose by tokens
Starter and Pro are for personal use: every product and bookmaker in your region, differing only in tokens.
Starter
£19a month
50,000 tokens a month
For light, occasional calls.
Choose StarterPro
£99a month
500,000 tokens a month
For regular calls through the day.
Choose ProEnterprise
from£750a month
Your own token allowance
For running a business, or for more tokens than Pro. One contract with custom bookmakers, several regions, push delivery, embeds and resale.
Talk to us
Questions
Can I try it before I pay?
Yes, with the free trial: 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 a paid plan, or on Enterprise for a business.
What is a token?
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.
What happens if I run out of tokens?
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. To carry on sooner, move from Starter to Pro on the key you already have, or talk to us about Enterprise. The free trial's tokens never reset: when they run out, choose a plan. There is no overage billing.
Can I use it for my business?
Yes, on an Enterprise contract, even for in-house use. Starter and Pro are for personal use: one person using the data for themselves. Showing the data to other people, or reselling it, needs Enterprise too. A business can try the data on the free trial first.
Get your API key
Sign up with your email address for 50,000 free tokens over 14 days, no card, and make your first request today.