Historical odds
Every bookmaker price change the UK & Ireland raw feed has served, kept since 17 October 2026. Ask for the board as it stood at any past instant, one event's price history or a day's closing lines, or download a whole day of one sport as a file. Built for backtesting models, closing-line studies and research.
Five calls on one key
Three answer in JSON, a page at a time. Two list the day files and fetch one.
GET /v2/ historical/ odds/ raw - The raw board as it stood at the instant you name, a page of events at a time, with the times of the board before and after it.
GET /v2/ historical/ events/ {id}/ odds - One event over a window of up to a day: its prices at the start, then a row for each outcome every time its price moved.
GET /v2/ historical/ closing - The events that kicked off on one UTC day. Per outcome, the first price recorded that day and the closing price, the high and low before kick-off, and how many times it moved.
GET /v2/ historical/ files - The day files you can download, each with its size and price.
GET /v2/ historical/ files/ {tier}/ {sport}/ {file} - One day of one sport, as gzipped CSV.
# Football as it stood at 19:40 UTC on 17 October 2026, priced first (a quote is free)
curl --compressed -s -H "x-api-key: $ODDSRELAY_KEY" \
"https://api.oddsrelay.io/v2/historical/odds/raw?region=uk&sports=soccer&date=2026-10-17T19:40:00Z"e=true"A whole day in one file
Files come per sport and per UTC day, as gzipped CSV, in three tiers cut each night. Ask us for a finer cut.
| Tier | What a file holds |
|---|---|
closing | The closing call's rows for every event that kicked off that day, in one file. |
60s | The prices that moved in each minute of the day, as they stood at the minute's end. |
changes | Every price change, in order, each with the instant it was seen. |
The 60s and changes files open with every price on the board at midnight UTC, so one day stands on its own.
Paid from your plan's tokens
History spends the same pool as the live feed. Each page of a JSON reply has a price, and a file is priced per started megabyte (1,000,000 bytes) of its size. Pricing publishes the rates.
Add quote= to any call that has a price and it returns the price instead, for free. Listing the files, 304 replies, replies with nothing in them and refusals cost nothing too.
Bookmakers only, up to yesterday
Historical odds carry bookmaker prices. Exchange prices are not part of them, and a call that asks for an exchange is refused with exchange_.
The archive starts on 17 October 2026 and runs to the end of the previous UTC day. Each day is added overnight, once it has ended.
Questions
Is it the same API as the live feed?
The same base URL,
https:/, on any key that includes Historical odds: every self-serve key that holds the whole feed has it. The board call returns the same event objects as/ api.oddsrelay.io /, withv2/ odds/ raw competition_alwayskey null.Can I show it to my own users?
Only on an Enterprise contract. On a self-serve plan, history is for your own use: your models, your research, your team. Enterprise also covers publishing it, reselling it and pulls bigger than a plan's pool.
What if the recording has a gap?
The reply says so. A past board inside a gap carries
complete: false, and an event's history lists the gaps in its window. Nothing is invented to fill one.
Get an API key
Historical odds come with every self-serve plan.