An odds API for developers

Bookmaker and exchange prices through one REST API with a public OpenAPI contract: each bookmaker's raw prices, or the same prices matched to an exchange lay. Price any call before you make it, start on Free, and install a client in one line.

140+ bookmakers · 60+ live in the UK & Ireland · See coverage

Start from the contract

The API is described by a public OpenAPI 3.1 file, and the clients and tools follow it. Generate a client for another language from it, or import it into Postman. Within /v2 changes only add endpoints, optional fields and error codes. A breaking change ships as /v3, announced at least 6 months ahead.

  • GET /v2/openapi.json answers without a key
  • Every JSON error carries a code to branch on and a request_id to quote
  • Our edge's own 429 and 502 replies have an empty body and no code: back off on the status alone

A free quote before any call

Add quote=true to an odds request and the reply is its cost and your balance, with nothing spent. A call priced above your balance returns 402 and charges nothing, and a 304 to the last ETag costs no tokens, so a poll of a board that has not changed spends nothing.

  • X-Tokens-Cost on each reply to a valid key says what the call spent
  • The Python and TypeScript clients can quote first and stop above a cap you set

Raw or matched, from one key

Every plan carries both feeds: each bookmaker's raw prices, and the same prices paired with an exchange lay price and the liquidity at it. A model can read the raw feed while an oddsmatcher reads the matched one, on the same key.

Two real replies

Both are trimmed from the examples in the OpenAPI contract by the filters in each request: a matched race from the Best odds guaranteed (BOG) feed, and one raw tennis match.

curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/bog?region=uk&format=bare&exchanges=smarkets"
curl --compressed -s -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/raw?region=uk&sports=tennis&markets=h2h&limit=1&format=bare"

Your code, an assistant or a spreadsheet

REST API

Every route is a GET request with your key in a header, answered in JSON.

  • One schema per feed type, served gzipped, so send Accept-Encoding: gzip
  • Quotes, 304s, empty replies and errors cost no tokens

Read the API docs

Client libraries and tools

Python, TypeScript and R clients, an MCP server for AI assistants, a Google Sheets template and a Postman workspace.

  • The Python and TypeScript clients, the MCP server and the Sheets formulas can quote a call and stop above a cap you set
  • The clients send your key only in the Authorization header

See the libraries and tools

Questions

  • Is there a free plan?

    Yes: 50,000 tokens for 14 days, with no card. When it ends the key stays yours, with no tokens until you choose a plan.

  • Which plan does a project need?

    Start on Free to build and test. After that, pick by how often your code calls, because the plans differ only in tokens. One call for football at Ladbrokes costs 184 tokens, so Starter's 50,000 tokens a month cover about 9 such calls a day, Pro's 500,000 about 90 and Max's 5M about 900. The plans are for your own use: a project that shows the data, or anything made from it, to other people needs Enterprise. The pricing page shows what each plan's tokens buy.

  • What does it cost?

    Published plans (Free, Starter, Pro and Max), with Enterprise quoted. Every plan includes every product and every bookmaker in its region. Plans differ only in tokens. The self-serve plans are for your own use. Serving other people with the data, or anything made from it, needs Enterprise.

  • Can an AI assistant call it?

    Yes. The MCP server gives Claude, Cursor and other MCP clients read-only tools, and each call that spends tokens is quoted first and refused above a cap.

  • Is there in-play data or price history?

    No. The feed carries current pre-match prices and keeps no history, so a model that needs past prices records them as it reads them.

Make your first call

Start on Free (50,000 tokens for 14 days, no card), then install a client or call the API.