Odds comparison for a league (Pinnacle, Unibet, BetRivers, FanDuel)

GET https://api.api.sh/odds/v1/events
1 credit / call sports try it in the playground →

Upcoming and live events of a league with each bookmaker's main lines side by side: moneyline / 1X2 (home, away, draw), spread or handicap (line and price for each side) and total (line, over, under), every price in decimal and American odds (Unibet and BetRivers also fractional). Events are matched across books by team and start time; best_moneyline gives the best price per outcome and the book offering it. Each book block carries its own event_id (use it with /odds/v1/event), start time, live flag and number of markets. Books: Pinnacle, Unibet, BetRivers (every listed league) and FanDuel (US leagues). A book that fails is listed in book_errors and the others are still returned. Odds change by the minute (cached 60 seconds; pass fresh=1 for a new read).

Every response includes credits_used: the credits this call cost.

Parameters

nametypedescription
leaguerequired string League key: nfl, ncaaf, nba, ncaab, wnba, euroleague, nhl, ahl, mlb, ufc, boxing, epl, championship, laliga, bundesliga, seriea, ligue1, eredivisie, primeira, scotland, turkey, brazil, mls, ligamx, ucl, uel, uecl. Or any Pinnacle league id from /odds/v1/sports?sport= (Pinnacle prices only). Example: nfl
books string Comma-separated books to include: pinnacle, unibet, betrivers, fanduel. Default: all that list the league. Example: pinnacle,fanduel
team string Only events whose team names contain this text (e.g. cowboys).
date string Only events starting on this UTC date (YYYY-MM-DD).

Every endpoint also takes fresh, raw, fields (see lean responses and caching).

Example

curl "https://api.api.sh/odds/v1/events?league=nfl" \
  -H "x-api-key: $APISH_KEY"

Response

A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).

The fastest way to see the full response is the playground: it runs this endpoint with your account and shows the exact JSON.