DocsSample data
UK and Irish bookmaker prices: a sample snapshot
One snapshot of pre-match prices from UK and Irish bookmakers, taken from the OddsRelay odds API on 11 October 2026. Free to download and reuse under CC BY 4.0.
What it holds
Two views of the same moment:
- the raw board: each bookmaker's own markets, with outcomes named the way that bookmaker names them;
- the standard matched board: every bookmaker's price on the same outcome lined up under one name, with the line on line markets.
CSV and JSON, with a data dictionary and a Frictionless datapackage.json. The tables join on event_ and bookmaker_.
Files
data/: one row per raw-board price: event, bookmaker, market, outcome, price, and when that market last changed.raw_ prices.csv data/: one row per bookmaker price on the standard matched board: event, market, outcome, line, bookmaker, price.matched_ prices.csv data/: the events: sport, competition, start time, the two sides, and the racecourse for races.events.csv data/: the bookmakers in the sample, by key and name.bookmakers.csv data/andraw_ board.json data/: the same prices in the API's own JSON shape.standard_ board.json DATA_: every column with its type and meaning, and what each market key means.DICTIONARY.md datapackage.json: the Frictionless Data descriptor, each table's schema and keys.summary.md: when the snapshot was taken, what it holds, and plain arithmetic on it, such as each bookmaker's margin on the soccer result market.
Download it
The files are on Hugging Face and GitHub, with the script that took the snapshot.
The data is licensed under CC BY 4.0. Attribution: OddsRelay (https://oddsrelay.io).
What it is not
- Not the whole feed. It is a sample: a few events per sport, a few markets per event.
- Not a coverage figure. Every count in it describes this one snapshot file. None of it measures what the OddsRelay feed covers.
- Not a time series. One snapshot, so no history, no closing prices and no results. Prices move all the time; these are the prices at one moment.
- Not exchange data. Bookmakers only: every exchange is left out, with every lay price and liquidity figure. Links to bookmakers' pages are left out too.
- Not advice. It is market data for building and analysis.
Load it
With pandas, each bookmaker's margin on the soccer result market (1 / price summed over home, draw and away, minus 1); with the standard library, the events per sport and the prices per market.
import pandas as pd
prices = pd.read_csv("data/raw_prices.csv")
events = pd.read_csv("data/events.csv")
books = pd.read_csv("data/bookmakers.csv")
prices = prices.merge(events[["event_id", "sport"]], on="event_id").merge(books, on="bookmaker_key")
result = prices[(prices["sport"] == "soccer") & (prices["market"] == "h2h")]
markets = (result.assign(inverse=1 / result["price"])
.groupby(["event_id", "bookmaker_name"])
.agg(outcomes=("price", "size"), inverse=("inverse", "sum")))
complete = markets[markets["outcomes"] == 3]
print((complete["inverse"] - 1).groupby("bookmaker_name").mean().round(3))Current prices
This sample is one moment. For current prices, call the API: Free gives you 50,000 tokens for 14 days from sign-up, with no card, then no tokens until you choose a plan, on the same key.