Bovada Data API

Bovada API for Pre-Match, Live Odds & Results

Access odds from Bovada, the offshore sportsbook favoured by US bettors, across 25 sports — full NFL, NBA, MLB, and NHL boards, ~50 markets on a typical soccer match, esports, and every futures market from the Super Bowl to the Breeders' Cup. Decimal, fractional, and American odds on every line, paginated REST endpoints, a real-time WebSocket feed with live statistics, and a 30-day results archive. One API key for all bookmakers.

What a Bovada API Response Looks Like

GET /api/bovada/soccer/events?page=1&limit=5
{
  "total": 1642,
  "page": 1,
  "limit": 5,
  "totalPages": 329,
  "hasNextPage": true,
  "events": [
    {
      "sport": "soccer",
      "league": "Premier League",
      "country": "England",
      "eventId": "29010184",
      "home": "Crystal Palace",
      "away": "Manchester City",
      "live": false,
      "startTime": "2026-08-28T19:00:00.000Z",
      "slug": "/sports/soccer/europe/england/premier-league/crystal-palace-manchester-city-202608281500",
      "markets": [
        {
          "canonicalMarket": "MATCH_RESULT",
          "rawName": "3-Way Moneyline",
          "period": "FULL_TIME",
          "isActive": true,
          "marketId": "515573157",
          "selections": [
            {
              "canonicalOutcome": "HOME",
              "rawName": "Crystal Palace",
              "odds": 5,
              "rawOdds": "5.00",
              "fractional": "4/1",
              "american": "+400",
              "isActive": true,
              "selectionId": "2365548222",
              "moreInfo": { "competitorId": "29010184-16118423" }
            },
            {
              "canonicalOutcome": "AWAY",
              "rawName": "Manchester City",
              "odds": 1.657895,
              "rawOdds": "1.657895",
              "fractional": "25/38",
              "american": "-152",
              "isActive": true,
              "selectionId": "2365548223",
              "moreInfo": { "competitorId": "29010184-16094787" }
            },
            {
              "canonicalOutcome": "DRAW",
              "rawName": "Draw",
              "odds": 4.1,
              "rawOdds": "4.100",
              "fractional": "31/10",
              "american": "+310",
              "isActive": true,
              "selectionId": "2365548224"
            }
          ],
          "moreInfo": {
            "key": "3W-1X2",
            "marketTypeId": "1",
            "descriptionKey": "Win/Draw/Win",
            "group": "Game Lines",
            "periodAbbr": "RT",
            "periodName": "Regulation Time"
          }
        },
        {
          "canonicalMarket": "ASIAN_HANDICAP",
          "rawName": "Goal Spread",
          "period": "FULL_TIME",
          "line": 0.75,
          "isActive": true,
          "marketId": "521189908",
          "selections": [
            {
              "canonicalOutcome": "HOME",
              "rawName": "Crystal Palace",
              "odds": 2.02,
              "rawOdds": "2.02",
              "fractional": "51/50",
              "american": "+102",
              "line": 0.75,
              "isActive": true,
              "selectionId": "2387165310"
            },
            {
              "canonicalOutcome": "AWAY",
              "rawName": "Manchester City",
              "odds": 1.819672,
              "rawOdds": "1.819672",
              "fractional": "50/61",
              "american": "-122",
              "line": -0.75,
              "isActive": true,
              "selectionId": "2387165311"
            }
          ],
          "moreInfo": {
            "key": "2W-HCAP",
            "marketTypeId": "120738",
            "descriptionKey": "Main Dynamic Asian Goal Handicap",
            "group": "Game Lines",
            "periodAbbr": "RT",
            "periodName": "Regulation Time"
          }
        }
        /* ... 277 more markets */
      ],
      "moreInfo": {
        "sportCode": "SOCC",
        "eventType": "GAMEEVENT",
        "competitionId": "6673859",
        "leagueLink": "/soccer/europe/england/premier-league",
        "numMarkets": 279,
        "region": "Europe",
        "lastModified": 1787936339620
      }
    }
  ]
}

Live Events — Score, Clock & Statistics

GET /api/bovada/live-events?sport=soccer&limit=1
{
  "total": 66,
  "page": 1,
  "limit": 1,
  "sport": "soccer",
  "events": [
    {
      "sport": "soccer",
      "league": "3. Liga",
      "country": "Poland",
      "eventId": "30082816",
      "home": "Kotwica Kornik",
      "away": "BKS Bydgoszcz",
      "startTime": "2026-08-28T15:30:00.000Z",
      "slug": "/sports/soccer/europe/poland/3-liga/kotwica-kornik-bks-bydgoszcz-202608281130",
      "score": {
        "home": "4",
        "away": "0"
      },
      "matchClock": {
        "period": "2H",
        "periodId": "2",
        "running": true,
        "minute": 63,
        "second": 49
      },
      "statistics": {
        "football": {
          "home": { "yellowCards": 2, "redCards": 0, "corners": 0 },
          "away": { "yellowCards": 0, "redCards": 1, "corners": 1 },
          "penalties": { "home": 1, "away": 0 }
        }
      },
      "moreInfo": {
        "sportCode": "SOCC",
        "eventType": "GAMEEVENT",
        "competitionId": "9830485",
        "leagueLink": "/soccer/europe/poland/3-liga",
        "numMarkets": 17,
        "region": "Europe",
        "gameStatus": "IN_PROGRESS"
      },
      "markets": [
        {
          "canonicalMarket": "ASIAN_HANDICAP",
          "rawName": "Goal Spread",
          "period": "FULL_TIME",
          "line": -4.25,
          "isActive": true,
          "marketId": "522752208",
          "selections": [
            { "canonicalOutcome": "HOME", "rawName": "Kotwica Kornik", "odds": 1.78125, "american": "-128", "line": -4.25, "isActive": true, "selectionId": "2393192158" },
            { "canonicalOutcome": "AWAY", "rawName": "BKS Bydgoszcz", "odds": 1.9804, "american": "-102", "line": 4.25, "isActive": true, "selectionId": "2393192159" }
          ]
        }
        /* ... */
      ]
    }
  ]
}

Match Results — Final Scores for 30 Days

GET /api/bovada/results?sport=soccer&page=1&limit=5
{
  "total": 105,
  "page": 1,
  "limit": 5,
  "totalPages": 21,
  "hasNextPage": true,
  "results": [
    {
      "sport": "soccer",
      "league": "Copa Goiano U20",
      "country": "Brazil",
      "eventId": "30223581",
      "home": "Aparecidense GO U20",
      "away": "Vila Nova GO U20",
      "startTime": "2026-08-28T13:00:00.000Z",
      "slug": "/sports/soccer/south-america/brazil/copa-goiano-u20/aparecidense-go-u20-vila-nova-go-u20-202608280900",
      "score": {
        "home": "1",
        "away": "1"
      },
      "matchClock": {
        "period": "FINAL",
        "periodId": "6",
        "running": false
      },
      "statistics": {
        "football": {
          "home": { "yellowCards": 3, "redCards": 0, "corners": 5 },
          "away": { "yellowCards": 2, "redCards": 1, "corners": 7 },
          "penalties": { "home": 0, "away": 0 }
        }
      },
      "moreInfo": {
        "sportCode": "SOCC",
        "eventType": "GAMEEVENT",
        "competitionId": "6890934",
        "leagueLink": "/soccer/south-america/brazil/copa-goiano-u20",
        "region": "South America",
        "gameStatus": "GAME_END"
      }
    }
  ]
}

Why Use PulseScore for Bovada Data

25 Sports With Full Market Coverage

Pre-match odds from Bovada across 25 sports — Soccer, American Football, Basketball, Baseball, Ice Hockey, Tennis, Table Tennis, Esports, Volleyball, Badminton, Cricket, Darts, Snooker, MMA, Boxing, Rugby League, Rugby Union, Australian Rules, Lacrosse, Golf, Formula 1, Motorsports, Cycling, Horse Racing, and Pro Wrestling — with paginated league and event endpoints and the complete market list for every fixture.

Four Prices on Every Selection

Every selection carries the price the way you need it: canonical decimal odds, Bovada's raw odds string, the fractional price (4/1), and the American line (+400), plus Bovada's competitorId. Markets keep the board's own key (3W-1X2, 2W-HCAP, 2W-OU), display group (Game Lines, Alternate Lines, Game Props, Goal Props, Corners, Combo Props) and period name, so alternate-line ladders, corners and player props are easy to tell apart. A soccer fixture averages ~50 markets and runs past 650.

Fixtures and Futures in One Feed

Bovada's futures and outrights — Super Bowl winner, NBA Championship, Italian GP, TOUR Championship, Breeders' Cup — sit in the same collections as fixtures, flagged with moreInfo.eventType 'RANKEVENT' and moreInfo.outright true, with the market title in home and an empty away. Cycling, Formula 1, golf, horse racing, motorsports and pro wrestling are outright-only; NFL, NBA, MLB and NHL mix both.

Live Scores, Clock & Statistics

Live events carry the current score, a match clock with Bovada's short period code ('1H', 'HT', '2H', 'FINAL', 'Set 2', 'P3', 'Q4', 'S3', 'G2', '1 INN'), its periodId, a running flag and minute/second or time-left-in-period, the board's gameStatus (PRE_GAME, IN_PROGRESS, HALF_TIME, GAME_END) and — where published — a statistics block: yellow and red cards, corners and penalties for soccer and eSoccer, per-set scores and the current server for tennis, table tennis and volleyball.

Live WebSocket Streaming

Real-time push of every in-play event for the chosen sport, broadcast roughly every second with live scores, the match clock, and statistics. All 25 sports are subscribable. PRO, MAX, and ULTRA plans only — connect once and receive each update as it happens.

30-Day Results Mirror

The results feed mirrors Bovada's in-play board: every event that goes live is stored with the last score, match clock and statistics the board published and kept for 30 days — final once matchClock.period reads FINAL. Filter by sport, league, or team name to settle bets, grade models, or backfill your own database across soccer, esports, tennis, table tennis, ice hockey, basketball, volleyball and more.

Frequently Asked Questions

What data does the Bovada API provide?

PulseScore provides pre-match odds, live in-play odds, and match results from Bovada (bovada.lv), the Curaçao-licensed offshore sportsbook serving US and Canadian bettors, across 25 sports. Each event includes normalized market data with canonical market types, selections, and decimal odds — alongside Bovada's own raw, fractional, and American prices — plus the raw market and outcome names as Bovada displays them.

What sports are covered?

The 25 sports Bovada publishes markets for: Soccer, American Football, Basketball, Baseball, Ice Hockey, Tennis, Table Tennis, Esports, Volleyball, Badminton, Cricket, Darts, Snooker, MMA, Boxing, Rugby League, Rugby Union, Australian Rules, Lacrosse, Golf, Formula 1, Motorsports, Cycling, Horse Racing, and Pro Wrestling. Every sport exposes /leagues, /leagues/:league/events, /events (paginated), and /events/:eventId and can be subscribed to over WebSocket. Cycling, Formula 1, golf, horse racing (Breeders' Cup futures), motorsports, and pro wrestling carry futures and tournament outrights only.

How are leagues, futures, and outcomes named?

Everything is in English. League names are the plain competition names Bovada shows — 'Premier League', 'La Liga', 'NFL', 'NBA', 'Setka Cup', 'BLAST Open Porto' — with a country field where the board files the competition under one and a moreInfo.leagueLink path (/soccer/europe/england/premier-league) on every event; leagues also expose the breadcrumb as moreInfo.path, which is how you tell tennis tours apart. Futures and outrights sit in the same collections as fixtures: they carry moreInfo.eventType 'RANKEVENT' and moreInfo.outright true, with the market title in home and an empty away. Market rawName values are Bovada's own labels such as '3-Way Moneyline', 'Spread', 'Total Goals O/U', 'Asian Total Goals', and 'Total Corners'; outcomes are named by team or player, or Over / Under, with the numeric line on the market and each selection. Every selection carries decimal odds plus rawOdds, fractional (4/1), and american (+400). The canonical fields — canonicalMarket, canonicalOutcome, and period — are identical across every bookmaker on PulseScore.

Does it include match results?

Yes. /api/bovada/results mirrors Bovada's in-play board: every event that goes live is stored with the last score, match clock, and statistics the board published and kept for 30 days — an entry is final once matchClock.period reads FINAL (moreInfo.gameStatus GAME_END). Filter by sport, league, or team (exact name, case-insensitive), look up a single result with /results/events/:eventId, or discover covered sports with /results/sports. Soccer, esports, tennis, table tennis, and volleyball results also carry a statistics block.

How are the markets structured?

All markets use a canonical format: each market has a type (e.g., MATCH_RESULT, OVER_UNDER, ASIAN_HANDICAP), period (FULL_TIME, FIRST_HALF), and selections with decimal odds and handicap lines where applicable. The same structure is shared across all sports and all bookmakers on PulseScore — write your integration once.

Is there a free tier?

Yes. The BASIC plan is free and includes 500 API requests per month. Upgrade to PRO, MAX, or ULTRA for unlimited requests.

Does the Bovada API support live in-play data?

Yes. Live in-play events are available via REST (/api/bovada/live-events, /live-events/sports, /live-events/events/:eventId) and via WebSocket at wss://api.pulsescore.net/api/bovada/ws/live. The WebSocket pushes every in-play event for the subscribed sport roughly every second, including the live score, a match clock with Bovada's period code ('1H', 'HT', '2H', 'Set 2', 'Q4', 'P3') and running clock, moreInfo.gameStatus, and statistics — cards, corners, and penalties for soccer, per-set scores and the current server for tennis, table tennis, and volleyball. PRO, MAX, and ULTRA plans only.

Start Using the Bovada API Today

Free tier available. No credit card required. Get your API key in 30 seconds.