bet365 Odds Scraper icon

bet365 Odds Scraper

Scrape bet365 live in-play and pre-match odds across 20+ sports. Extract fixture listings, full event betting markets, decimal odds and price…

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

bet365 Odds Scraper at a glance

bet365 Odds Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes id, matchup, home, away and sport, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $4.00 per 1,000 results on the Apify Free plan and from $3.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
Pricing
$4.00 per 1,000 results (Free plan), from $3.40 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
13 options

Scrape bet365 live in-play and pre-match odds across 20+ sports. Extract fixture listings, full event betting markets, decimal odds and price snapshots. Supports scheduled incremental monitoring to track odds changes over time.

What bet365 Odds Scraper can do

  • Six sports, competition by competition. Soccer, tennis, basketball, ice hockey, baseball and American football. Sport mode walks every competition the site lists for the sport and reads each fixture's listed prices and start time; the live In-Play grid is read for the region you pick.
  • The live state rides along. Each fixture snapshot carries the game-status line (period, clock state) and a broadcast marker where bet365 offers live video, so in-play monitoring needs no second source.
  • Full market boards per event. Paste bet365 event links and the run reads the complete market board: every listed group and selection with its displayed price, converted to decimal alongside the book's own display.
  • Built for scheduled monitoring. Incremental mode keeps a per-scope baseline and emits NEW, UPDATED, REAPPEARED and EXPIRED fixtures. Odds movements are the change signal, while the ticking status line and clock never bill a phantom update.

Choose what to collect

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

Supported input fields
InputWhat it controls
modestring · requiredlive = the In-Play board snapshot (every fixture currently live with its displayed prices). sport = the pre-match board of one sport. urls = read pasted bet365 event links one by one with the full market board.

Choices: live, sport, urls

sportstringWhich sport's pre-match board to walk in sport mode: every competition the site lists for it, with each fixture's listed prices and start time.

Choices: soccer, tennis, basketball, ice-hockey, baseball, american-football

urlsarraybet365 event page links (www.bet365.com/#/... deep links). Each link is read with its full market board.
regionstringWhich bet365 regional site to read (the run's connection exits from this region). Use CA for the Ontario site.

Choices: GB, CA, AU, IE, DE, IT, ES, FR, NL, BR, AR, US

fetchDetailsbooleanUrls mode always reads each pasted event's full board; this documents the surcharge event. In live/sport mode the board snapshot already carries the displayed prices.
maxItemsintegerStop after this many fixture snapshots. Leave 0 for no limit.
resumeFromRunIdstringContinue a previous run: fixtures already delivered by that run are skipped. Enter the run ID of the earlier run (or a dataset ID).
Show 6 more inputs
More input fields
InputWhat it controls
incrementalModebooleanScheduled monitoring: keep a per-scope baseline and emit NEW, UPDATED, REAPPEARED and EXPIRED fixtures instead of every snapshot. Odds movements are the change signal.
stateKeystringOptional name for the incremental baseline. Use separate keys to monitor several scopes independently.
emitUnchangedbooleanIncremental mode only: also push fixtures whose odds did not move (changeType UNCHANGED).
emitExpiredbooleanIncremental mode only: after a complete scan, push rows for fixtures from the previous scan that are no longer present (changeType EXPIRED).
ignoreFieldsForChangesarrayAdditional record fields that must never make a row UPDATED (the ticking status line and clock are already ignored by default).
mcpConnectorsarrayApify MCP connector IDs to notify with the first collected rows (for example Notion). Leave empty to skip.

Fields in the output

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

idid
matchupmatchup
homehome
awayaway
sportsport
competitioncompetition
startTimestartTime
statusstatus
inPlayinPlay
scorescore
hasLiveMediahasLiveMedia
fixtureIdfixtureId
Show 13 more fields
leagueCodeleagueCode
urlurl
oddsTimestampoddsTimestamp
changeTypechangeType
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt
resultOddsresultOdds
pricesprices
eventStatuseventStatus
marketGroupsmarketGroups
selectionsselections
detailFetcheddetailFetched
changedFieldschangedFields

Example output

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

{
  "id": "bet365:9c2f41ab77e31d",
  "matchup": "A Rublev vs T Etcheverry",
  "home": "A Rublev",
  "away": "T Etcheverry",
  "status": "Set 1 Game 4",
  "hasLiveMedia": true,
  "prices": [
    {
      "handicap": null,
      "displayPrice": "4/11",
      "decimalPrice": 1.364
    },
    {
      "handicap": null,
      "displayPrice": "11/5",
      "decimalPrice": 3.2
    }
  ],
  "oddsTimestamp": "2026-11-03T10:00:00+00:00"
}

Ways to use this data

  • Traders and model builders: pull pre-match and in-play prices for the sports you follow on a schedule, and diff odds movements between runs.
  • Live-betting monitors: watch the In-Play board for a region and alert when a fixture's displayed price moves.
  • Tipster and content pipelines: read full market boards for pasted event links to publish a match's complete market list.
  • Multi-region coverage: run one scope per region (GB, Ontario/CA, AU and more) with separate incremental baselines.

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 bet365 Odds Scraper return?

The documented output for bet365 Odds Scraper includes id, matchup, home, away, sport, competition, starttime and status. Availability of each field depends on the source page and the selected mode.

How much does bet365 Odds Scraper cost?

It costs $4.00 per 1,000 results on the Apify Free plan and from $3.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.

Can I schedule recurring odds monitoring?

Yes. Turn on incremental mode, set a stateKey, and schedule the actor. Each run keeps a baseline per scope and pushes only NEW, UPDATED, REAPPEARED or EXPIRED fixtures. Odds movements are the change signal; the ticking status line and clock never mark a row UPDATED.

Why did my run fail with "the site refused every connection"?

bet365 fronts aggressive connection scoring and refuses a large share of fresh exits; the actor rotates across fresh exits per read, but a wave can close every exit for a while. Re-run later; this is the site's edge, not a bug in the input.

Why does a sportboard sometimes show fewer fixtures than the site?

The live board rotates through the day: overnight windows genuinely have few live events, and suspended markets can hide rows. Pre-match walks (sport mode) carry the fullest board for the chosen sport.

Can I use this with AI agents and MCP?

Yes, the actor works from the Apify MCP server: add abotapi/bet365-odds-scraper and ask for odds naturally. Every field in the dataset is plain JSON for agents.

Ready to collect with bet365 Odds Scraper?

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