{
  "openapi": "3.0.1",
  "info": {
    "title": "BetMGM Scraper - Live Sports Odds, Markets & Player Props",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "KEejAfLiJwBhqP4zB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~betmgm-com-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-betmgm-com-odds-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~betmgm-com-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-betmgm-com-odds-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~betmgm-com-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-betmgm-com-odds-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search lists events by sport and filters. URL mode reads the event pages you paste below.",
            "default": "search"
          },
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Sport 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.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regionIds": {
            "title": "Region ids",
            "type": "array",
            "description": "Optional numeric region ids (for example 9 = USA). Empty = all regions. To filter by a region or league name instead, use the Text filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "competitionIds": {
            "title": "Competition ids",
            "type": "array",
            "description": "Optional numeric competition or league ids (for example 6004 = NBA group). Empty = all competitions. To filter by a league name instead, use the Text filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchTerm": {
            "title": "Text filter",
            "type": "string",
            "description": "Keep only events whose name, league or region contains this text (for example Knicks)."
          },
          "stage": {
            "title": "Event stage",
            "enum": [
              "all",
              "live",
              "prematch"
            ],
            "type": "string",
            "description": "All events, only events in play now, or only upcoming events.",
            "default": "all"
          },
          "state": {
            "title": "State",
            "enum": [
              "NY",
              "NJ",
              "PA",
              "AZ",
              "CO",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "MD",
              "MA",
              "MI",
              "NV",
              "NC",
              "OH",
              "TN",
              "VA",
              "WV",
              "WY",
              "DC"
            ],
            "type": "string",
            "description": "US state whose odds board is read. Prices can differ slightly between states.",
            "default": "NY"
          },
          "mainLinesOnly": {
            "title": "Main lines only",
            "type": "boolean",
            "description": "Keep only each event's main line (moneyline). Off returns every market returned.",
            "default": false
          },
          "urls": {
            "title": "Event URLs",
            "type": "array",
            "description": "Event page links (…/sports/events/<teams>-<id>), links carrying fixtureIds=<id>, 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.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch all markets",
            "type": "boolean",
            "description": "Search 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.",
            "default": false
          },
          "includeResults": {
            "title": "Final scores of past games",
            "type": "boolean",
            "description": "Also 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.",
            "default": false
          },
          "resultsDaysBack": {
            "title": "Results: days back",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "How many days back to collect final scores (1 to 14). Only used when Final scores of past games is on.",
            "default": 2
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 0,
            "type": "integer",
            "description": "Optional 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."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Stop 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.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Datacenter proxy is the default and works on every plan. Residential is recommended for the most reliable results, especially for large or frequent runs. If a connection is refused or keeps failing, the actor switches to a more robust one automatically.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "Run ID of an earlier run of this actor. Rows it already collected are not collected or charged again."
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Remember 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.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Also output unchanged events",
            "type": "boolean",
            "description": "Incremental mode only. Output odds rows that did not change as UNCHANGED rows (each is a charged row).",
            "default": false
          },
          "emitExpired": {
            "title": "Output expired rows",
            "type": "boolean",
            "description": "Incremental mode only. In URL mode, report a market that is no longer offered as EXPIRED (a charged row).",
            "default": true
          },
          "stateKey": {
            "title": "State key (optional)",
            "type": "string",
            "description": "Name of the remembered baseline. Leave empty to derive it from your sports, filters and links. Use the same key on every scheduled run."
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Field names (dotted paths allowed, e.g. quote.line) that never count as a change. scrapedAt is always ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally 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."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page",
            "type": "string",
            "description": "URL or id of the Notion page under which event pages are created. Required for the Notion export, ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max events to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on events written to each selected connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}