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 / changes only add endpoints, optional fields and error codes. A breaking change ships as /, announced at least 6 months ahead.
GET /answers without a keyv2/ openapi.json - Every JSON error carries a
codeto branch on and arequest_to quoteid - Our edge's own
429and502replies have an empty body and nocode: back off on the status alone
A free quote before any call
Add quote= 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-Coston 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
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
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.
Related
- Arbitrage & trading toolsBookmaker prices beside exchange back and lay, for tools that do their own arbitrage and EV arithmetic.
- Affiliates & comparison sitesEvery bookmaker’s price for a selection on one row, with a link to each bookmaker’s event page.
- Odds API in Python: an oddsmatcher in 50 linesCall an odds API from Python with only the standard library: ask for gzip, quote before you spend, set each back price against the lowest lay, and sort.
- Example clientA complete client in cURL, Python and JavaScript.
- Example programsSmall Python programs on the API, one folder each.
Make your first call
Start on Free (50,000 tokens for 14 days, no card), then install a client or call the API.