Odds API Credits

5,000,000 requests/month · Monitor usage & optimize pulls

The Odds API

Pro plan · 5,000,000 requests/month

Healthy
Monthly Credits Used0.845%
42,262 used4,957,738 remaining of 5,000,000

Used

42,262

Remaining

4,957,738

Monthly Limit

5M

Last updated: 4/23/2026, 8:33:10 AM

Monthly Usage Projections

How different polling strategies use your 5M monthly budget

Current — 10 sports × every 2h3,600 / mo
Optimized — 6 in-season sports × every 30 min8,640 / mo
Aggressive — 6 in-season sports × every 5 min51,840 / mo

💡 Even at 5-minute polling for all 10 sports (288,000 req/mo), you'd use only 1.7% of your monthly budget. You have enormous headroom.

Current Pull Architecture

Sports tracked

NFL, MLB, NBA, NCAAF, NCAAB, NHL, EPL, MLS, UCL, Golf

10 sports

Markets per pull

h2h + spreads + totals per sport per request

3 markets

Bookmakers per pull

DK, FD, BetMGM, Caesars, PointsBet, BetRivers, WH, Bovada, MyBookie, BetOnline

10 books

Background poll interval

Cron in oddsService.ts → startOddsPolling()

Every 2 hours

Requests per cycle

One per sport (markets bundled in single call)

10 requests

Current monthly estimate

10 sports × 12 polls/day × 30 days

~3,600 req

Budget consumed

Leaves 99.28% unused — massive room to increase frequency

0.07%

Optimization Strategies

Ranked by impact. You have 5M credits — use them strategically.

HIGH IMPACT

Reduce poll interval to 5–15 minutes

Your current 2-hour interval means odds can be 119 minutes stale. At 5-min polling for all 10 sports you'd use ~288K req/mo — just 5.8% of your budget. Line movement and arb windows open and close in minutes.

Freshness ↑ 24×

Poll in-season sports more frequently than off-season

NFL is off-season right now. Poll MLB, NBA, NHL, EPL, MLS, UCL every 5 min. Poll NFL/NCAAF/NCAAB every 30 min or skip entirely until their season starts. Saves ~30% of requests.

Saves ~30%
MEDIUM IMPACT

Add player props market to game detail pulls

Currently you only fetch h2h, spreads, and totals. The Odds API also serves player_props (anytime TD, passing yards, etc.) — these are high-value for premium subscribers and each game-level props pull costs 1 request.

New revenue feature

Fetch scores endpoint for auto-settle

The /scores endpoint costs 1 request per sport and returns final scores for the last 3 days. Use this instead of re-fetching full odds to settle picks — much cheaper than a full odds pull.

Saves settle credits

Use event-level pulls for game detail page

Currently game detail re-fetches the full sport odds list to find one game. The /events/{id}/odds endpoint fetches a single game's odds for 1 credit. Switch game detail to use this endpoint.

10× cheaper per detail view
LOW IMPACT / NICE TO HAVE

Cache-hit rate monitoring

Track how often the frontend reads from DB cache vs. triggering a live API pull. If cache-hit rate is >95%, your polling interval is already optimal.

Visibility

Skip sports with no upcoming games

Before each poll, check if the sport has games in the next 48 hours using the /sports endpoint (free, 0 credits). Skip the odds pull if no games are scheduled.

Saves ~20% off-season

Narrow bookmaker list per market

For the arb scanner you need all 10 books. For the pick feed you only need the top 4 (DK, FD, BetMGM, Caesars). Splitting these into two call types reduces payload size and processing time.

Faster processing

You're in great shape

At current usage you'll consume ~0.07% of your monthly budget. The biggest opportunity is not saving credits — it's spending more of them on fresher data. Dropping to 5-minute polls would make your arb scanner and line movement alerts dramatically more valuable to subscribers.

Quick Implementation Guide

  1. In server/services/oddsService.ts → change TWO_HOURS to FIVE_MINUTES = 5 * 60 * 1000
  2. Add a season check: skip sports where inSeason = false to save ~30% off-season
  3. In server/services/gameDataService.ts → replace the sport-wide odds pull in game detail with /events/{id}/odds
  4. Add markets: "h2h,spreads,totals,player_props" to unlock prop betting picks for VIP subscribers