BetMGM Scraper icon

BetMGM Scraper

Scrape BetMGM (betmgm.com) live and upcoming sports betting odds. Extract events, moneylines, spreads, totals, player props, scores and start times.…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

BetMGM Scraper at a glance

BetMGM Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes event, sport, competition, starttime and eventstatus, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Other
Pricing
$2.00 per 1,000 results (Free plan), from $1.50 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
23 options

Scrape BetMGM (betmgm.com) live and upcoming sports betting odds. Extract events, moneylines, spreads, totals, player props, scores and start times. Get decimal and American odds for sportsbook monitoring, market comparison and odds analysis.

What BetMGM Scraper can do

  • One row per market. Each row carries the headline selection plus a full quote object listing every selection with decimal odds, American odds, implied probability and line.
  • Live and upcoming events. Filter to events in play now or upcoming only, with current score, period scores and clock for live games.
  • Every market on demand. Moneylines, spreads, totals and player props for each event when you turn on all markets.
  • Two ways in. Search by sport, region, competition or text, or paste event links.
  • State boards. Pick the US state whose odds board you want to read.
  • Final scores of past games. Turn on Final scores of past games to also get one row per finished game with the final score, winner and venue, linked to the odds event id where the game matches one.

Choose what to collect

These inputs let you configure BetMGM Scraper - Live Sports Odds, Markets & Player Props. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch lists events by sport and filters. URL mode reads the event pages you paste below.

Choices: search, url

sportsarraySport names (basketball, soccer, football or american football, hockey or ice hockey, baseball, tennis, golf, cricket, boxing, formula 1) or numeric sport ids. Leave empty for every sport.
regionIdsarrayOptional numeric region ids (for example 9 = USA). Empty = all regions. To filter by a region or league name instead, use the Text filter.
competitionIdsarrayOptional numeric competition or league ids (for example 6004 = NBA group). Empty = all competitions. To filter by a league name instead, use the Text filter.
searchTermstringKeep only events whose name, league or region contains this text (for example Knicks).
stagestringAll events, only events in play now, or only upcoming events.

Choices: all, live, prematch

statestringUS state whose odds board is read. Prices can differ slightly between states.

Choices: NY, NJ, PA, AZ, CO, IL, IN, IA, KS, KY, LA, MD, MA, MI, NV, NC, OH, TN, VA, WV, WY, DC

Show 16 more inputs
More input fields
InputWhat it controls
mainLinesOnlybooleanKeep only each event's main line (moneyline). Off returns every market returned.
urlsarrayEvent page links (…/sports/events/-), links carrying fixtureIds=, or bare event ids such as 20101854 or 2:7913596. Every market of each event is returned. Links that are not events (home page, sport or league pages) are skipped with a warning. Leave empty to read the next open event. Search filters are ignored in URL mode.
fetchDetailsbooleanSearch mode returns each event's headline markets. Turn on to load every market (spreads, totals, player props) for each event; one extra request per event. URL mode always returns every market.
includeResultsbooleanAlso return the final score of every finished game in the selected sports (search mode only): home and away team, final score, winner, venue and the odds event id where it can be linked. One row per finished game; games not yet over, postponed or canceled are never returned. Covered: NFL, NBA, WNBA, MLB, NHL, college football and basketball, and the major soccer leagues and cups; other sports return no final scores. Final scores come from espn.com, not from the sportsbook. Each result row is one dataset item.
resultsDaysBackintegerHow many days back to collect final scores (1 to 14). Only used when Final scores of past games is on.
maxPagesintegerOptional page limit for search mode. Empty or 0 = unlimited. This does not cap results by default; it defers to Max items (default 20), which is the only default cap.
maxItemsintegerStop after this many odds rows (one row per market). This is the only default cap (20); Max pages does not cap and defers to it. 0 = no limit.
resumeFromRunIdstringRun ID of an earlier run of this actor. Rows it already collected are not collected or charged again.
incrementalModebooleanRemember each odds row between runs and label every row NEW, UPDATED or REAPPEARED. Unchanged rows are skipped and not charged. In URL mode, a market that is no longer offered is reported once as EXPIRED. Search results are a bounded window, so they never report EXPIRED.
emitUnchangedbooleanIncremental mode only. Output odds rows that did not change as UNCHANGED rows (each is a charged row).
emitExpiredbooleanIncremental mode only. In URL mode, report a market that is no longer offered as EXPIRED (a charged row).
stateKeystringName of the remembered baseline. Leave empty to derive it from your sports, filters and links. Use the same key on every scheduled run.
ignoreFieldsForChangesarrayField names (dotted paths allowed, e.g. quote.line) that never count as a change. scrapedAt is always ignored.
mcpConnectorsarrayOptionally send a readable summary of each odds row into the apps you already use via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify Settings, then select it here. Notion gets a page per odds row; other connectors receive a best-effort write. Leave empty to skip. The dataset is never changed.
notionParentPageUrlstringURL or id of the Notion page under which event pages are created. Required for the Notion export, ignored by other connectors.
maxNotifyListingsintegerCap on events written to each selected connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

eventevent (text)
sportsport (text)
competitioncompetition (text)
startTimestartTime (text)
eventStatuseventStatus (text)
marketmarket (text)
lineline (text)
outcomeoutcome (text)
oddsodds (text)
americanOddsamericanOdds (text)
isMainLineisMainLine (text)
homeTeamhomeTeam (text)
Show 18 more fields
awayTeamawayTeam (text)
scorescore (text)
urlurl (text)
canonicalcanonical (text)
familyfamily (text)
periodperiod (text)
quotequote (text)
statusDetailstatusDetail (text)
homeScorehomeScore (text)
awayScoreawayScore (text)
periodsperiods (text)
winnerwinner (text)
venuevenue (text)
eventIdeventId (text)
changeTypechangeType (text)
changedFieldschangedFields (text)
firstSeenAtfirstSeenAt (text)
lastSeenAtlastSeenAt (text)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordKey": "betmgm:00000000:0000000000",
  "eventId": "00000000",
  "event": "Team A at Team B",
  "homeTeam": "Team B",
  "awayTeam": "Team A",
  "sport": "Basketball",
  "competition": "NBA",
  "startTime": "2026-01-01T00:00:00.000Z",
  "eventStatus": "scheduled",
  "market": "Moneyline",
  "canonical": "moneyline",
  "isMainLine": true,
  "outcome": "Team A",
  "odds": 1.91,
  "americanOdds": -110,
  "quote": {
    "selections": [
      {
        "name": "Team A",
        "role": "away",
        "decimal": 1.91,
        "american": -110,
        "impliedProbability": 0.5236,
        "line": null
      },
      {
        "name": "Team B",
        "role": "home",
        "decimal": 1.91,
        "american": -110,
        "impliedProbability": 0.5236,
        "line": null
      }
    ]
  }
}

Ways to use this data

  • Odds comparison: line up BetMGM prices against other books in a spreadsheet or model.
  • Line movement tracking: schedule runs and keep only the rows whose odds changed.
  • Betting research: build datasets of spreads, totals and player props across sports.
  • Live dashboards: feed in-play scores and prices into alerts.
  • Results and model back-testing: pair past final scores with the odds you collected.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does BetMGM Scraper return?

The documented output for BetMGM Scraper includes event, sport, competition, starttime, eventstatus, market, line and outcome. Availability of each field depends on the source page and the selected mode.

How much does BetMGM Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I schedule it?

Yes. Use incremental mode with a fixed State key so each run delivers only changed rows.

Why did my run return nothing?

The filters may match no events right now, for example Live only when no game is in play.

Can I use it with AI tools?

Yes. Connect the dataset through the Apify MCP server or send rows to your apps with the connectors above.

Ready to collect with BetMGM Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.