Glossary

Odds data

Odds data is bookmaker and exchange prices with the event, market and selection each one belongs to. Comparison sites, oddsmatchers and matched-betting tools are built on it.

A price alone tells a product very little. It becomes data once it carries the event it belongs to, the market and selection it prices, the bookmaker quoting it and the moment it was read. Comparison tables, oddsmatchers, tipster widgets and matched-betting calculators all consume that same bundle, arranged for their own screens.

On OddsRelay's raw feed, each event carries id, sport_key, sport_title, commence_time, home_team and away_team, then bookmakers[], one entry per bookmaker. A bookmaker lists markets[] by key, and each market's outcomes[] give a name and a price. An exchange quotes both sides instead, as back_price and lay_price, plus available, the money on offer beside the lay price.

The matched feeds arrange the same material around each selection. An outcome carries name, and point on line markets, then back[] with bookmaker, price and link, best price first, and lay[] with exchange, price and available, lowest price first. On the each-way and extra-place feeds, lay splits into separate win and place lists.

Time is the field that trips people up. A matched pair has no per-row time, so its moment is meta.processed_at, the response's time. Raw is the only feed with time per market, bookmakers[].markets[].last_update, which records when that bookmaker's market last changed. When the bookmaker was last read is a separate question, answered per bookmaker and sport by meta.last_seen on the matched feeds.

Format is part of the data too. Prices arrive as decimal unless a request asks for American where a feed allows it, and times arrive as ISO-8601 UTC unless dateFormat=unix asks for epoch seconds. meta.odds_format states which odds format a reply carries, so code never has to guess.

Keys make the data joinable. Every bookmaker and exchange appears by the key GET /v2/bookmakers lists, where each bookmaker and exchange carries is_exchange, and one fixture has one id on every route, so a raw event's id and a matched event's event_id for the same match are the same string, bar a short window after a fixture re-keys, and a tool can join the two feeds on it.

Try it on your own key

Every plan includes every feed. Sign up free and call any of them.