Sportsbet AU Scraper icon

Sportsbet AU Scraper

Scrape sportsbet.com.au odds: events, markets, selections and prices for AFL, NRL, soccer, cricket, tennis and more, plus horse, greyhound and harness…

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

Sportsbet AU Scraper at a glance

Sportsbet AU Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes row type, sport, competition / track, event and starts, 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.40 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
Region
Oceania
Pricing
$2.00 per 1,000 results (Free plan), from $1.40 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
30 options

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.

What Sportsbet AU Scraper 🏅 Sports Odds & Racing Prices can do

  • Every market, every selection. One row per runner or outcome with decimal win price, the fractional numerator and denominator, place price and price type, so a head to head, a line market and a premiership future all land in one schema.
  • Full racing detail. Horse, greyhound and harness races with jockey, trainer, barrier, weight, last starts, pedigree, speed rating, recent price ticks and the race overview.
  • Three ways in. Search by sport and competition, search a race day by code, region and track, or paste any supported page link.
  • Precise filters. Matches or futures, Australia and New Zealand or international meetings, tracks, market names, minimum and maximum price and each-way markets only.
  • Built for monitoring. Incremental mode returns only new and changed prices, with a price and availability scope, compact change rows and a grace period before a market is marked expired.
  • One clear cap. Max items is the only default limit, so a run does exactly as much as you ask.

Choose what to collect

These inputs let you configure Sportsbet AU Scraper 🏅 Sports Odds & Racing Prices. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredsearch = 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).

Choices: search, url

categorystringSports lists events for the sports and competitions below. Racing lists the races of a race day. Only applies when mode = search.

Choices: sports, racing

sportsarraySport 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.
competitionsarrayOptional 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.
eventKindstringMatches are head-to-head games. Futures are season-long and outright markets such as premiership winners. Only applies in sports search.

Choices: all, matches, futures

raceTypesarrayWhich racing codes to list. Only applies when mode = search and What to search = Racing.
raceDatestringtoday, tomorrow or a date as YYYY-MM-DD (Australian Eastern time). Only applies when mode = search and What to search = Racing.
Show 23 more inputs
More input fields
InputWhat it controls
raceRegionstringLimit racing to Australia and New Zealand meetings or to international meetings. Only applies in racing search.

Choices: all, australia-nz, international

trackNamesarrayOptional track names (partial match), e.g. Flemington, Randwick. Leave empty for every track. Only applies in racing search.
upcomingOnlybooleanSkip races that have already been run. Turn off to include resulted races. Only applies in racing search.
marketNamesarrayOptional 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.
minOddsnumberOnly return selections priced at or above this decimal win price, e.g. 2.5. Applies to every mode when market detail is on.
maxOddsnumberOnly return selections priced at or below this decimal win price, e.g. 10. Applies to every mode when market detail is on.
eachwayOnlybooleanOnly return selections from markets that offer each-way betting. Applies to every mode when market detail is on.
urlsarrayPaste 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.
fetchDetailsbooleanFetch 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.
maxPagesintegerOptional 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.
maxItemsintegerThe 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.
resumeFromRunIdstringPaste 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.
incrementalModebooleanFor 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.
stateKeystringIncremental 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.
emitUnchangedbooleanIncremental mode only. Also return (and bill as normal rows) rows whose values did not change.
emitExpiredbooleanIncremental 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.
changeScopestringIncremental 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.

Choices: all, priceAndStock

compactUpdatesbooleanIncremental 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.
expireAfterMissedScansintegerIncremental 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.
ignoreFieldsForChangesarrayIncremental 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.
mcpConnectorsarrayOptionally 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).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each 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.

recordTypeRow type (text)
sportSport (text)
competitionNameCompetition / track (text)
nameEvent (text)
startTimeStarts (text)
statusStatus (text)
marketNameMarket (text)
selectionNameSelection (text)
handicapHandicap (text)
winPriceWin price (number)
placePricePlace price (number)
changeTypeChange (text)
Show 34 more fields
urlURL (link)
trackNameTrack (text)
raceTypeRace type (text)
raceNumberRace (number)
runnerNumberRunner (number)
drawNumberDraw (number)
jockeyJockey (text)
trainerTrainer (text)
weightGramWeight (g) (number)
isOutScratched (boolean)
shortFormForm (text)
sireSire (text)
damDam (text)
ageAge (number)
sexSex (text)
speedSpeed (number)
distanceDistance (m) (number)
trackStatusTrack (text)
weatherWeather (text)
changedFieldsChanged fields (array)
firstSeenAtFirst seen (text)
lastSeenAtLast seen (text)
expiredAtexpiredAt
priceChangesPrice changes (object)
variantChangesOther price changes (array)
impliedProbabilityImplied prob. (number)
priceRankPrice rank (text)
isFavouriteFavourite (text)
priceMovePctMove vs open % (number)
marketOverroundOverround (number)
tipRankTip rank (text)
finishPositionFinished (text)
runnerOverviewForm note (text)
formFiguresForm (text)

Example output

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

{
  "recordType": "selection",
  "rowId": "1000000:2000000:3000000",
  "eventId": 1000000,
  "name": "R5 Example Handicap",
  "displayName": "R5 Example Park",
  "sport": "Horses - Aus/NZ",
  "competitionName": "Example Park",
  "region": "Australia",
  "startTime": "2026-11-03T05:00:00Z",
  "status": "PRICED",
  "marketId": 2000000,
  "marketName": "Win or Place",
  "eachwayAvailable": true,
  "numPlaces": 3,
  "selectionId": 3000000,
  "selectionName": "Example Runner",
  "winPrice": 6.5,
  "winPriceNum": 11,
  "winPriceDen": 2,
  "placePrice": 1.88,
  "priceCode": "L",
  "otherPrices": [
    {
      "priceCode": "NTP",
      "winPrice": 8.1,
      "placePrice": null
    }
  ],
  "trackName": "Example Park",
  "raceType": "horse",
  "raceNumber": 5,
  "country": "Australia",
  "distance": 1675,
  "trackStatus": "Good (4)",
  "weather": "fine",
  "runnerNumber": 1,
  "drawNumber": 6,
  "jockey": "Jane Doe",
  "trainer": "John Roe",
  "weightGram": 61500,
  "isOut": false,
  "shortForm": "0X0X",
  "oddsFluctuations": [
    7.5,
    8,
    7.5,
    8.5,
    9
  ],
  "sire": "Sire Name (AUS)",
  "dam": "Dam Name (AUS)",
  "age": 8,
  "sex": "G",
  "speed": 0,
  "url": "https://www.sportsbet.com.au/horse-racing/australia-nz/example-park/race-5-1000000",
  "scrapedAt": "2026-11-03T00:00:00Z"
}

Ways to use this data

  • Odds comparison and aggregation: pull Australian prices into your own comparison table, one stable schema across sports and racing.
  • Betting models and research: build price histories and closing line datasets for AFL, NRL, soccer, tennis, cricket and racing.
  • Racing analysis: join runner form, pedigree, barrier and weight data with live prices for ratings and value hunting.
  • Price alerts and dashboards: schedule incremental runs and react to price moves, scratchings and market suspensions.
  • Media and content teams: feed fixtures, markets and prices into previews, tipping pages and newsletters.

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 Sportsbet AU Scraper return?

The documented output for Sportsbet AU Scraper includes row type, sport, competition / track, event, starts, status, market and selection. Availability of each field depends on the source page and the selected mode.

How much does Sportsbet AU Scraper cost?

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

How do I list only matches, or only futures?

Use Event kind in sports search. Matches are head to head games; futures are season-long and outright markets such as premiership winners.

Which sports and competitions can I use?

Any sport or competition listed on sportsbet.com.au. Type the names as shown on the site (for example Australian Rules, Rugby League, Soccer, AFL, NRL) or paste the sport or competition page in url mode.

Why did my run fail instead of returning an empty dataset?

Two different situations both fail the run rather than report a false result. In url mode, if none of the pasted links are recognisable sportsbet.com.au pages, the run fails once the pasted links have been checked, before any page is scraped, because that is a problem with the input. Separately, if every request is refused, the run fails with a connection message instead of claiming nothing matched. A genuinely empty selection, where the site was reached but nothing matched, still succeeds with an empty dataset and a status message.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Sportsbet AU Scraper?

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