=ODDS() and =ODDS_TABLE() formulas directly in a cell.
Install from Google Workspace Marketplace
Add-on overview
What it does
- Explore: search a team or league, see the best price per market across bookmakers, the fair price and line movement, then insert any of it as a sheet.
- Recipes: one click builds a sheet of best prices, arbitrage, value bets or dropping odds, with optional refresh every minute.
- Playground: call any GET endpoint of the API, preview the response and insert it as a table.
- Formulas:
=ODDS(eventId, [market], [bookmaker], [refresh])and=ODDS_TABLE(sport, [league], [market], [refresh]). - AI-ready tables: every table has typed columns, comes with suggested questions for Gemini in Sheets, and can be copied as a prompt for ChatGPT, Claude or any AI assistant.
Install
You need an Odds-API.io API key from a paid plan. Get one at odds-api.io/pricing; the key is on your dashboard right after checkout.Install the add-on
Open the side panel
Connect your key
api.odds-api.io.
The side panel
The panel has three tabs at the bottom: Explore, Recipes and Playground. The gear icon at the top opens Settings.Explore
Type at least two letters of a team or league (for exampleArsenal or NBA) to search upcoming events, or pick a sport and league under Browse and click Show events.
Opening an event shows:
- Best price per market (ML, Spread, Totals and every other market the bookmakers price), with the bookmaker that has it. Click Show more lines to see alternative lines.
- Fair price, the margin-free price, when your plan includes the odds summary (Growth and above). On other plans the panel shows the best price across your own bookmakers instead.
- Bookmaker filter: compare only the bookmakers you pick, or all bookmakers on your key.
- Line movement: click Show line movement for a price history chart of one bookmaker and market (available for the bookmakers that record movement history).
Recipes
Recipes build a ready-made sheet in one click. Set the filters, then click Build sheet.Playground
The Playground calls any GET endpoint of the API and turns the response into a table.- Click the endpoint at the top and pick one, for example
/odds,/eventsor/settlements. - Required parameters are filled in for you: the last event you opened and the bookmakers on your key. Click optional parameters below them to add more.
- Click Send request. The panel shows the response time and row count, as a table or as raw JSON.
- Click Insert to sheet or Copy for AI.
When a sheet already exists
If a sheet with the same name is already in the spreadsheet, the panel asks what to do:- Replace: clears the sheet and writes fresh data.
- Add rows: keeps what is there and adds the new rows below, useful for building a history.
- New sheet: keeps the old sheet and writes to a new one, for example
Arbitrage (2).
What an inserted table looks like
- A bold, frozen header row with a filter on every column.
- Typed columns: odds as decimal numbers, percentages, dates and times in UTC, event ids as plain numbers.
- A named range
oddsapi_<sheet name>, so formulas and charts can refer to the table by name. - Notes two columns to the right of the table: what the columns mean, the request it came from (key masked), when it was fetched and suggested questions for an AI assistant.
Formulas
The add-on adds two custom functions. They work in any spreadsheet where the add-on is installed and your key is connected.ODDS
ODDS_TABLE
ODDS_TABLE reads the odds summary, so it needs the Growth plan or higher. On other plans it returns a message instead of prices; use =ODDS(eventId) or the Best prices recipe, which falls back to the bookmakers on your key.Refreshing formulas
Google Sheets caches custom function results and only recalculates a formula when one of its arguments changes. The add-on also reuses an identical response for 30 seconds. To fetch fresh prices on demand:- Insert a checkbox in a spare cell, for example
Z1(Insert > Checkbox), or type any value there. - Pass that cell as the
refreshargument:=ODDS(123456, "ML", , $Z$1). - Tick or untick the checkbox (or change the value) whenever you want new prices. Every formula that points at
Z1fetches again.
Older formula names
Sheets built with version 1 of the add-on keep working:ODDS_GET_ARBITRAGE and ODDS_GET_VALUE now return a pointer to the Arbitrage and Value bets recipes in the side panel, which replace them.
Auto-refresh and limits
- Recipe refresh: after you build a recipe sheet, Refresh every minute while this panel is open rewrites that sheet every 60 seconds. It stops when you close the panel, switch away from the recipe or a request fails; the panel shows why it paused.
- Formula refresh: see Refreshing formulas.
- Request limit: the panel and the formulas use your API key, so every refresh counts towards your plan’s hourly request limit (see Best Practices). When the limit is hit, the panel retries twice with a short pause, then shows Too many requests.
- Large tables: the panel writes tables in batches of 5,000 rows and shows progress, so large Playground responses do not hit Google’s time limit.
- Bookmakers per request: the API returns up to 30 bookmakers per odds request. The panel splits larger selections into several requests;
=ODDS()without abookmakeruses the first 30.
Using it with Gemini, ChatGPT and Claude
Inserted tables are built to be read by AI assistants: one header row, snake_case column names, numeric odds and UTC times. Each table’s notes include suggested questions, for example “Which bookmaker has the best price most often?”.- Gemini in Sheets: open Gemini in the spreadsheet and ask about the table directly.
- Copy for AI: every Insert button has a Copy for AI button next to it. It copies a prompt with the column names and types and the table as CSV (up to 500 rows) to your clipboard. Paste it into ChatGPT, Claude or any other assistant and add your question.
- Let the assistant query the API: to give Claude, ChatGPT, Cursor or another assistant live access to the API itself, use the Odds-API.io MCP server. Setup steps per tool are in AI & Vibe Coding.
Permissions and privacy
The add-on asks for three Google permissions, the minimum it needs:api.odds-api.io. The contents of your spreadsheets are never sent to Odds-API.io. Details: privacy policy.
Troubleshooting
A cell shows #NAME? or Unknown function
A cell shows #NAME? or Unknown function
#NAME?. Each collaborator who wants live formulas needs to install the add-on and connect their own API key. To share a static copy instead, copy the cells and use Paste special > Values only.A cell says "Add your API key"
A cell says "Add your API key"
"That key wasn't accepted" or "Your API key was not accepted"
"That key wasn't accepted" or "Your API key was not accepted"
"Not included in your plan"
"Not included in your plan"
ODDS_TABLE use the odds summary, which needs the Growth plan or higher; Explore and the Best prices recipe fall back to the bookmakers on your key. Value bets, arbitrage, outrights and settlement are add-ons. The message shows exactly what is missing, with a link to plans; add-ons are managed in your dashboard."Too many requests"
"Too many requests"
Formulas show #ERROR!, Loading... or stop updating
Formulas show #ERROR!, Loading... or stop updating
=ODDS() formulas refreshing every minute can reach it. Use fewer formulas with a market or bookmaker filter, refresh less often, or insert a recipe table from the side panel instead, which does not use the formula quota.No odds for these filters
No odds for these filters
bookmaker empty to use every bookmaker on your key, and check the market name with =ODDS(eventId) first.Remove your key or uninstall
Remove your key or uninstall
FAQ
Do I need an API key?
Do I need an API key?
Which bookmakers and sports can I use?
Which bookmakers and sports can I use?
How fresh are the odds?
How fresh are the odds?
Does it use my request quota?
Does it use my request quota?
Does it work in Excel?
Does it work in Excel?
Is the source code available?
Is the source code available?