Back to API-Sports in Google Sheets
SheetXAI logo
API-Sports logo
API-Sports · Google Sheets Guide

Pull Pre-Match Bookmaker Odds for Upcoming Fixtures Into Google Sheets

2026-05-13
4 min read
See the Excel version →

The Scenario

You are a sports betting analyst. You have 20 upcoming Premier League fixture IDs in a Google Sheet and you need pre-match odds from three bookmakers loaded into a comparison table before the Saturday 12:30 PM kickoff. Your arbitrage model flags rows where the implied probability spread across bookmakers exceeds 3%. It is Friday at 7 PM.

The bad version:

  • You find the API-Sports odds endpoint, construct the URL with one of the fixture IDs and the bookmaker IDs for William Hill (5), Bet365 (8), and Betway (14)
  • The response nests home/draw/away odds inside a bookmakers array inside a bets array inside the fixture response
  • You write a parsing script, run it for fixture ID one, get the structure, discover that Betway is missing odds for two fixtures entirely
  • You handle the null case, rerun across all 20 fixtures, format the output, export to CSV
  • You open it in Sheets and discover the column order is wrong for your model's JOIN
  • It is 9 PM on Friday and you have not run the model yet.

The faster version is one prompt.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent inside your spreadsheet that reads the fixture IDs already in column A and calls the odds endpoint for each one with the bookmaker parameters you specify.

Open the SheetXAI sidebar and type:

For each fixture ID in column A, fetch pre-match odds from bookmakers William Hill, Bet365, and Betway and write home odds, draw odds, and away odds for each bookmaker into columns B through J. If a bookmaker has no odds for a fixture, write 'N/A' into those cells rather than leaving them blank.

SheetXAI iterates through the 20 fixture IDs, calls the odds endpoint for each, extracts the home/draw/away values for all three bookmakers, and writes the nine-column odds table with N/A for any missing bookmaker rather than leaving gaps that break your model's JOIN.

What You Get

A 20-row odds comparison table:

  • Fixture ID (column A) — your join key
  • William Hill home / draw / away (columns B–D)
  • Bet365 home / draw / away (columns E–G)
  • Betway home / draw / away (columns H–J)

N/A placeholders where a bookmaker has not yet published odds mean your implied probability formula does not divide by blank cells and error out.

What If the Data Is Not Quite Ready

Arbitrage research needs more than a raw odds table. SheetXAI can add the probability layer and the flag logic inline.

When you want implied probability calculated per cell

You need implied probability (1 / decimal odds) for each home/draw/away position across all three bookmakers to feed the spread calculation.

After writing the odds table, add nine implied probability columns (one per bookmaker per outcome) in columns K through S. Use the formula 1 divided by the decimal odds. Format as percentages rounded to one decimal place. Write 'N/A' for any cell where the odds were N/A.

When you want the spread flagged automatically

Your model flags rows where the maximum implied probability minus the minimum implied probability for the same outcome across bookmakers exceeds 3%. You want that done inside the sheet.

For each fixture row, calculate the spread in implied probability for home odds, draw odds, and away odds separately. Add three flag columns (T, U, V) labelled 'Home Spread Flag', 'Draw Spread Flag', and 'Away Spread Flag'. Write TRUE if the spread for that outcome exceeds 3%, FALSE otherwise. Highlight TRUE cells in orange.

When some fixture IDs have been updated and you need a refresh for specific rows only

Odds shift overnight. Three fixture IDs had their odds updated and you want to refresh only those rows without re-pulling all 20.

Re-fetch the odds from William Hill, Bet365, and Betway for fixture IDs 1028845, 1028853, and 1028871 only. Overwrite the existing values in those rows. Leave all other rows unchanged.

When you want the full arbitrage brief ready for Saturday morning in one pass

It is Friday evening and you want the raw odds table, implied probabilities, spread flags, a filtered 'Flagged Fixtures' tab for rows where any spread exceeds 3%, and a summary showing how many fixtures have at least one flagged outcome.

For each fixture ID in column A, fetch pre-match odds from William Hill, Bet365, and Betway and write home/draw/away odds for each into columns B–J. Calculate implied probabilities in columns K–S. Flag rows where implied probability spread exceeds 3% for any outcome. Create a 'Flagged Fixtures' tab with only those rows. Write the total count of flagged fixtures into cell A1 of the main tab.

The pattern: instead of pulling the odds and then running the spread model as a separate step, you describe the full analysis and SheetXAI builds both the data table and the model output in one pass.

Try It

Get the 7-day free trial of SheetXAI and ask it to pull pre-match odds for a list of fixture IDs directly into your sheet. The API-Sports integration is included in every SheetXAI plan. For related workflows, see how to pull a full Premier League fixture list and standings or the API-Sports in Google Sheets overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more