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.
- Copy the parlayapi-sheets Apps Script file into your sheet
- Add your free key and call the custom formulas in cells
- Attach a time-driven trigger sized to your credit budget
- 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