{
  "openapi": "3.0.1",
  "info": {
    "title": "Sportsbet AU Scraper 🏅 Sports Odds & Racing Prices",
    "description": "Scrape sportsbet.com.au odds: events, markets, selections and prices for AFL, NRL, soccer, cricket, tennis and more, plus horse, greyhound and harness racing with runners, jockeys, trainers, form and tote prices. Search by sport or race type, or paste page URLs.",
    "version": "1.0",
    "x-build-id": "cYebUZZuoZ5iacJ4p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~sportsbet-au-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-sportsbet-au-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~sportsbet-au-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-sportsbet-au-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~sportsbet-au-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-sportsbet-au-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 = pick sports, competitions or racing and let the actor build the lists. url = paste sportsbet.com.au pages (sport, competition, event, race or racing schedule links).",
            "default": "search"
          },
          "category": {
            "title": "What to search",
            "enum": [
              "sports",
              "racing"
            ],
            "type": "string",
            "description": "Sports lists events for the sports and competitions below. Racing lists the races of a race day. Only applies when mode = search.",
            "default": "sports"
          },
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Sport names to cover, e.g. Australian Rules, Soccer, Rugby League, Tennis, Cricket, Basketball - US. Leave empty and name competitions instead to search by competition only. Only applies when mode = search and What to search = Sports betting.",
            "items": {
              "type": "string"
            }
          },
          "competitions": {
            "title": "Competitions",
            "type": "array",
            "description": "Optional competition names or ids that narrow the sports above, e.g. AFL, NRL, English Premier League, 4165. Leave empty for every competition of the chosen sports. Only applies when mode = search and What to search = Sports betting.",
            "items": {
              "type": "string"
            }
          },
          "eventKind": {
            "title": "Event kind",
            "enum": [
              "all",
              "matches",
              "futures"
            ],
            "type": "string",
            "description": "Matches are head-to-head games. Futures are season-long and outright markets such as premiership winners. Only applies in sports search.",
            "default": "all"
          },
          "raceTypes": {
            "title": "Race types",
            "type": "array",
            "description": "Which racing codes to list. Only applies when mode = search and What to search = Racing.",
            "items": {
              "type": "string",
              "enum": [
                "horse",
                "greyhound",
                "harness"
              ],
              "enumTitles": [
                "Horse racing",
                "Greyhound racing",
                "Harness racing"
              ]
            },
            "default": [
              "horse"
            ]
          },
          "raceDate": {
            "title": "Race date",
            "type": "string",
            "description": "today, tomorrow or a date as YYYY-MM-DD (Australian Eastern time). Only applies when mode = search and What to search = Racing.",
            "default": "today"
          },
          "raceRegion": {
            "title": "Race region",
            "enum": [
              "all",
              "australia-nz",
              "international"
            ],
            "type": "string",
            "description": "Limit racing to Australia and New Zealand meetings or to international meetings. Only applies in racing search.",
            "default": "all"
          },
          "trackNames": {
            "title": "Tracks",
            "type": "array",
            "description": "Optional track names (partial match), e.g. Flemington, Randwick. Leave empty for every track. Only applies in racing search.",
            "items": {
              "type": "string"
            }
          },
          "upcomingOnly": {
            "title": "Upcoming races only",
            "type": "boolean",
            "description": "Skip races that have already been run. Turn off to include resulted races. Only applies in racing search.",
            "default": true
          },
          "marketNames": {
            "title": "Market names",
            "type": "array",
            "description": "Optional market name filter (partial match), e.g. Head to Head, Line, Win or Place. Only markets whose name contains one of these are returned. Applies to every mode when market detail is on.",
            "items": {
              "type": "string"
            }
          },
          "minOdds": {
            "title": "Minimum win price",
            "minimum": 1,
            "type": "number",
            "description": "Only return selections priced at or above this decimal win price, e.g. 2.5. Applies to every mode when market detail is on."
          },
          "maxOdds": {
            "title": "Maximum win price",
            "minimum": 1,
            "type": "number",
            "description": "Only return selections priced at or below this decimal win price, e.g. 10. Applies to every mode when market detail is on."
          },
          "eachwayOnly": {
            "title": "Each-way markets only",
            "type": "boolean",
            "description": "Only return selections from markets that offer each-way betting. Applies to every mode when market detail is on.",
            "default": false
          },
          "urls": {
            "title": "Page URLs",
            "type": "array",
            "description": "Paste one or more sportsbet.com.au pages: the home page, a sport (/betting/australian-rules), a competition (/betting/australian-rules/afl), an event, a race, the live betting page, the racing schedule or the results page. Several URLs are supported. The search fields above are ignored in this mode. Left untouched, URL mode scrapes one example of each supported page type.",
            "default": [
              "https://www.sportsbet.com.au/",
              "https://www.sportsbet.com.au/betting/australian-rules",
              "https://www.sportsbet.com.au/betting/australian-rules/afl",
              "https://www.sportsbet.com.au/betting/soccer/australia/australian-a-league-men",
              "https://www.sportsbet.com.au/betting/australian-rules/afl/afl-premiership-winner-2027-10966930",
              "https://www.sportsbet.com.au/betting/live-betting",
              "https://www.sportsbet.com.au/racing-schedule/horse/today",
              "https://www.sportsbet.com.au/results",
              "https://www.sportsbet.com.au/betting/australian-rules/afl?utm_source=x&action=y",
              "https://www.sportsbet.com.au/horse-racing",
              "https://www.sportsbet.com.au/horse-racing/international/funabashi/race-11-11123076",
              "https://app.sportsbet.com.au/"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch full market detail",
            "type": "boolean",
            "description": "Fetch every event's full market list and emit one row per selection (runner or outcome) with prices, handicaps and, for racing, jockey, trainer, form, pedigree and track details. Turn off to emit one lighter row per event.",
            "default": true
          },
          "maxPages": {
            "title": "Max pages per run",
            "minimum": 1,
            "type": "integer",
            "description": "Optional safety stop on how many competition or race-day lists to read in total. This does NOT cap the run: leave it empty for unlimited pages and the run is bounded solely by Max items."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "The run's single hard cap: maximum rows across all searches. Defaults to 20 (also when the field is omitted through the API). Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Connection used for requests. Residential proxies are required for this site and are preselected; keep the preselected country. Datacenter proxies are not accepted by the site."
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large pull without returning or charging for rows already collected there. For recurring monitoring of the same search, use Incremental changes below instead."
          },
          "incrementalMode": {
            "title": "Incremental changes",
            "type": "boolean",
            "description": "For recurring runs, return only NEW, UPDATED and REAPPEARED rows; rows unchanged since the last run are not returned or billed. Each row is compared on every field except the scrape time and the recent price tick list (oddsFluctuations), which stay in the output but never count as a change; with Change scope set to price and availability only, the comparison is limited to prices, status flags and other price types. Each row gets changeType, changedFields, firstSeenAt and lastSeenAt; outside incremental mode these four fields are empty. The baseline is kept per State key; changing the search settings starts a new baseline unless State key is set.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Incremental mode only. Optional name for this campaign's saved baseline. Leave empty to derive it from the search settings, so each distinct search keeps its own baseline."
          },
          "emitUnchanged": {
            "title": "Emit unchanged",
            "type": "boolean",
            "description": "Incremental mode only. Also return (and bill as normal rows) rows whose values did not change.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired",
            "type": "boolean",
            "description": "Incremental mode only. Return an EXPIRED row for rows no longer found after Expire after missed scans complete scans (billed like any returned row). EXPIRED means the row was not in the scanned lists; it does not prove the market was closed, so read the status fields for that. Only after a complete scan: a Max items or Max pages cut, a row filter, a resume, an early stop or a failed fetch disables it.",
            "default": false
          },
          "changeScope": {
            "title": "Change scope",
            "enum": [
              "all",
              "priceAndStock"
            ],
            "type": "string",
            "description": "Incremental mode only. All fields compares every field. Price and availability only compares just the prices, status flags and other price types, so a renamed event or a changed weather note never creates a billable row.",
            "default": "all"
          },
          "compactUpdates": {
            "title": "Compact updates",
            "type": "boolean",
            "description": "Incremental mode only. UPDATED and EXPIRED rows become slim: identifiers, link, current prices and status, plus priceChanges (old and new value) and variantChanges (other price types). NEW rows stay complete.",
            "default": false
          },
          "expireAfterMissedScans": {
            "title": "Expire after missed scans",
            "minimum": 1,
            "type": "integer",
            "description": "Incremental mode only, with Emit expired. A row is marked EXPIRED only after being absent from this many complete scans in a row. Raise it so a market that briefly drops from the list is not expired.",
            "default": 1
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Incremental mode only. Extra field names (dotted for nested, e.g. otherPrices.placePrice) that never mark a row as UPDATED and are left out of changedFields; they stay in the output. oddsFluctuations and scrapedAt are always ignored.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}