Use case: spreadsheet builders

Build a live odds tracker in Google Sheets

Turn a spreadsheet into a live odds board with one Apps Script file, scheduled refreshes, and CSV export for the historical side.

Who this is for

Bettors and analysts who live in spreadsheets and want live prices, best lines, and devig math in cells instead of another app. No backend, no add-on store: one Apps Script file and a free API key.

Recommended workflow
  1. Copy the parlayapi-sheets Apps Script file into your sheet
  2. Add your free key and call the custom formulas in cells
  3. Attach a time-driven trigger sized to your credit budget
  4. Import historical closing lines via the CSV export when you need history

The three endpoints this build uses

GET /v1/sports/{sport_key}/oddsThe board your formulas render: games, books, markets, and current prices in one JSON response.
GET /v1/sports/{sport_key}/best-lineBest price per outcome with its book label, ideal for a one-row-per-outcome sheet layout.
GET /v1/historical/closing-lines.csvA day of prop closing lines as CSV per request, which Sheets and Excel open natively for the analysis tabs.

Working code

// Extensions > Apps Script, then use in a cell: =PARLAY_ODDS("americanfootball_nfl")
function PARLAY_ODDS(sportKey) {
  const resp = UrlFetchApp.fetch(
    "https://parlay-api.com/v1/sports/" + sportKey + "/odds?regions=us&markets=h2h",
    { headers: { "X-API-Key": "YOUR_KEY" } }
  );
  const games = JSON.parse(resp.getContentText());
  return games.map(g => [g.away_team, g.home_team,
    g.bookmakers[0].markets[0].outcomes.map(o => o.name + " " + o.price).join("  ")]);
}

Which tier fits

A few refreshes a day on a trimmed board fits the free tier's 1,000 monthly credits. Hourly or multi-sport refresh schedules land on Starter. Current limits are on the pricing page.

Example repo

Start from parlayapi-sheets, an open-source starting point for this exact build.

Build links

/answers/odds-api-google-sheets/answers/how-odds-api-credits-work/answers/odds-api-no-credit-card