DocsLibraries and tools

Client libraries and tools

Packages and ready-made files for calling the API from your own code, an AI assistant, a spreadsheet or Postman. Each follows the public OpenAPI contract, and a call made through one costs the same tokens as any other.

Python client

The oddsrelay package has one method for each GET route, uses the standard library only and runs on Python 3.9 and up. It sends each ETag back so an unchanged reply is a free 304, waits out a 429 for its Retry-After, and with max_tokens quotes a call first and refuses it above your cap.

pip install oddsrelay

oddsrelay on PyPI · Source on GitHub

JavaScript and TypeScript client

The oddsrelay package on npm is ESM with TypeScript types and no runtime dependencies: it uses the fetch built into Node 18 and later. It sends the key as a Bearer token, asks for gzip, keeps each ETag so an unchanged reply is a free 304, waits out a 429, and with maxTokens quotes a call before it runs.

npm install oddsrelay

oddsrelay on npm · Source on GitHub

R client

The oddsrelay R package has one function for each GET route and returns each reply as a list, with arrays of records as data frames. It runs on R 4.1 and up, sends each ETag back so an unchanged reply is a free 304, and quote = TRUE prices a call without spending tokens. Until it is on CRAN, install it from GitHub.

install.packages("pak")
pak::pak("oddsrelay/oddsrelay-r")

Source on GitHub

MCP server

oddsrelay-mcp gives an AI assistant read-only access to the API: matched boards, one event's prices, and the sport, event, bookmaker and coverage lists. It runs over stdio in Claude Desktop, Claude Code, Cursor and other MCP clients, on Node 18 or later. Every call that spends tokens is quoted first and refused above max_tokens, so no single call spends more than its cap, and the assistant is told to ask you before raising it. The MCP Registry lists it as io.github.oddsrelay/oddsrelay-mcp. Claude Desktop's config file opens from Settings > Developer > Edit Config, and Cursor's is ~/.cursor/mcp.json. The key sits in that file as plain text, so keep it out of anything you commit. For Claude Desktop there is also a one-click bundle, oddsrelay-mcp.mcpb, on the latest release: open it and Claude Desktop asks for your key, masks it, and runs the server with no Node of your own needed.

claude mcp add --transport stdio oddsrelay --env ODDSRELAY_KEY=your_key_here -- npx -y oddsrelay-mcp

oddsrelay-mcp on npm · Smithery · Claude Desktop bundle · Source on GitHub

Google Sheets template

A spreadsheet with three formulas that fill a table from the API: ODDSRELAY_ODDS for a matched board, ODDSRELAY_SPORTS and ODDSRELAY_BOOKMAKERS for the keys its filters take. Make a copy, then choose Extensions > OddsRelay > Set API key. The key stays in your own Apps Script settings, never in a cell, and each ODDSRELAY_ODDS call is quoted first and stops above its token cap. Formulas run on the spreadsheet owner's key, so share a sheet view-only, and only with your own team.

Formula

=ODDSRELAY_ODDS("standard", "soccer", "bet365,ladbrokes", "smarkets", "h2h")

Copy the template · Source on GitHub

Postman workspace

A public Postman workspace with every route as a request: your key goes in one collection variable, and optional parameters come switched off until you tick them. The same collection is a file you can import into Postman or Insomnia.

Postman workspace · Collection file

OpenAPI contract

The API's machine-readable description, OpenAPI 3.1, at a public address that needs no key. Every client on this page follows it. For another language, point a code generator at it. For a request tool, import it.

The contract file · API reference

No client for your language? Generate one from the OpenAPI contract, or tell us what you use. Every parameter: API reference. What developers build on the feed: an odds API for developers.