DocsGuidesView as Markdown

In-play prices

Events under way with inPlay on raw, one event, standard and dutching: what each value returns, what an in-play price carries and how a call is priced.

The values, route by route

Since 2 November 2026, inPlay serves prices on events that are under way. Without it, a call answers as it did before.

  • GET /v2/odds/raw and GET /v2/odds/event/{id}: exclude, the default, leaves the events in play out. include serves pre-match and in-play events together, and only serves the events in play alone.
  • GET /v2/odds/{type} for standard and dutching: exclude, the default, or only.
  • Any other value is 400 bad_request, include on a matched board among them.
  • 2up, each-way, extra-place and bog stay pre-match: inPlay on them is 400 bad_request, the answer to any parameter a route doesn't read.

Football match odds in play, on standard

curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/standard?region=uk&sports=soccer&markets=h2h&inPlay=only"

When an event is in play

An event is in play once its venues show it in play, whatever its commence_time says. On raw, under include or only, each event carries in_play, true while it is in play. On standard and dutching, each event under only carries in_play: true.

An event keeps its id across kick-off, and its place in the include order. include serves it once.

One event across kick-off

GET /v2/odds/event/{id} answers 404 unknown_event for an event its inPlay value leaves out: under the default, an event that has gone in play. Send inPlay=include to follow one event before and after kick-off.

One event, before or after kick-off

curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/event/$EVENT_ID?region=uk&inPlay=include"

What an in-play price carries

An in-play price is served only while it was read in the last 10 seconds. In-play lays come from Betfair, Smarkets and Matchbook.

The reply holds prices and nothing about the match itself: no score, clock or result. Horse racing is never in play. You poll for in-play prices as for any other call.

The big bookmakers in play

Of the big UK bookmakers, Sky Bet, Ladbrokes, Coral and Betfred carry football and tennis in play, and Paddy Power carries tennis. bet365 and William Hill have no in-play prices. Coverage lists each bookmaker's sports.

What in-play costs

An in-play call is priced as the same call without inPlay is, and quote=true prices it first, free. On raw, one price covers the whole walk, so a walk of the events in play pays that whole price, however few they are.

To follow the events in play on raw, walk again with updatedSince set to the start of your previous walk: one no more than 120 s back pays 10% of the price. When nothing is in play, the reply holds no events, and a reply with no events is free.

An in-play reply changes each time one of its prices moves. Name only the sports, bookmakers, exchanges and markets you use (Polling for fewer tokens), and send each ETag back (Polling with ETags).

Price football in play on raw, then follow it

# 1. The price of a walk of football in play, free
curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/raw?region=uk&sports=soccer&inPlay=only&quote=true"
# {"cost": …, "remaining": …, "rate_card": "…"}

# 2. The next walk: SINCE is when your previous walk started, as YYYY-MM-DDTHH:MM:SSZ
curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/raw?region=uk&sports=soccer&inPlay=only&updatedSince=$SINCE"

From the blog

Every parameter: API reference.