# Is there a bet365 API?

> bet365 publishes no public odds API for third parties. What that means, the two routes to its prices, and what to check in a feed that includes bet365.

Published 1 July 2026 · updated 5 November 2026

**Is there a bet365 API for third parties? No. bet365 publishes no public odds API and no key to sign up for, so its prices reach a product in one of two ways: a team collects them itself, or it licenses a feed that already carries them.**

## Why the missing API shapes your build

Betfair publishes an API for its exchange ([getting Betfair lay odds](https://oddsrelay.io/blog/how-to-get-betfair-lay-odds) covers it). bet365 offers developers nothing comparable. So every bet365 price in a third-party product arrives through a supplier, not through bet365.

With no spec from bet365, the field names, event ids and market keys are the supplier's own, and so is the job of keeping them working. Check both before you write a line of integration code.

## What people mean by a "bet365 API"

The search covers three different needs. Separate them before you pick a route:

- **Raw bet365 prices**: the back odds bet365 is showing for each market, as JSON. Enough for odds comparison and content.
- **bet365 prices paired with exchange lay**: each bet365 back price beside the lay price for the same selection on an exchange, with the money available at that price. Matched betting and oddsmatchers run on this pair.
- **bet365 as one book among many**: bet365 prices under the same event ids as the other bookmakers, so your matching code needs no bet365 branch.

## Two routes to bet365 odds

The first route is to build your own collection. The first capture is the small part. The upkeep is the rest: keeping prices complete, matching bet365's events to the exchanges' events, and noticing when a source goes quiet. A stale price is worse than a missing one, because it looks usable and isn't.

The second route is to license a feed that includes bet365. You receive bet365 as one book in a dataset someone else maintains, and you spend the time on your product. Unless odds collection is itself your product, license it. [Buy vs build](https://oddsrelay.io/blog/buy-vs-build-odds-data) weighs the two routes in full.

## What to check before you license a bet365 feed

Four checks separate a feed you can build on from one that turns into a support queue:

- **bet365 on every plan.** It should come with the base plan, so the book you most need is not the one priced on top.
- **Pairing against the exchanges you use.** Each bet365 back price should arrive beside real lay prices with the stake available, so your matcher has nothing left to join.
- **Freshness you can check yourself.** Look for a timestamp per venue in every reply and a public page showing which venues are live, so you can see how old a bet365 price is instead of taking a claim on trust.
- **A published contract.** A machine-readable schema and the same response shape on every call, so a deep market or a missing selection does not break your parser.

Comparisons of named providers against checks like these live on [the comparison pages](https://oddsrelay.io/compare), each sourced and dated. [bet365 odds APIs compared](https://oddsrelay.io/compare/bet365-odds-apis) runs the same checks in more depth, with what each provider's own pages say about bet365.

## bet365 on the OddsRelay feed

bet365 is included on every plan, for featured football and UK and Irish racing. The feed covers 140+ bookmakers, 60+ of them live in the UK & Ireland, and the matched boards pair bookmaker back prices against Betfair, Smarkets and Matchbook. The [bet365 page](https://oddsrelay.io/bookmakers/bet365) lists what it carries, [the bet365 odds data guide](https://oddsrelay.io/blog/bet365-odds-data-guide) goes deeper, and [the coverage page](https://oddsrelay.io/coverage) shows whether it is live right now.

To see only bet365 on the standard board, filter by its venue key. Sending `?quote=true` on the same request prices the call without spending tokens.

Request · bet365 on the standard board · example:

```bash
curl --compressed \
  -H "Authorization: Bearer $ODDSRELAY_KEY" \
  "https://api.oddsrelay.io/v2/odds/standard?bookmakers=bet365&sports=soccer"
```

Response · trimmed to one outcome · example:

```json
{
  "meta": {
    "feed_type": "standard", "region": "uk", "odds_format": "decimal",
    "processed_at": "2026-09-20T12:18:11.402Z",
    "last_seen": {
      "bet365": { "soccer": "2026-09-20T12:18:07Z" },
      "matchbook": { "soccer": "2026-09-20T12:18:09Z" },
      "smarkets": { "soccer": "2026-09-20T12:18:05Z" }
    },
    "count": 1,
    "version": "v2",
    "next_cursor": null
  },
  "data": [{
    "event_id": "or_evt_917dd44bce05",
    "commence_time": "2026-09-20T14:00:00Z",
    "home_team": "Arsenal",
    "away_team": "Chelsea",
    "markets": [{
      "key": "h2h",
      "outcomes": [{
        "name": "Arsenal",
        "back": [{ "bookmaker": "bet365", "price": 2.1, "link": null }],
        "lay": [
          { "exchange": "matchbook", "price": 2.14, "available": 412, "link": null },
          { "exchange": "smarkets", "price": 2.16, "available": 95, "link": null }
        ]
      }]
    }]
  }]
}
```

Each bet365 back price arrives beside the exchange lay offers for the same selection, each with its `available` money. Working out a rating or a qualifying loss from that pair takes a few lines at your own commission rate, the same sums the [oddsmatcher widget](https://oddsrelay.io/widgets/oddsmatcher) runs:

Your arithmetic on the example pair · example:

```js
const back = 2.1, lay = 2.14, commission = 0.02, stake = 10

const rating = (back / lay) * 100                          // 98.1
const layStake = (back * stake) / (lay - commission)       // 9.91
const qualifyingLoss = layStake * (1 - commission) - stake // -0.29
```

The `bookmakers`, `exchanges`, `markets` and kick-off filters are in the [matched board filters guide](https://oddsrelay.io/docs/guides/matched-board-filters). If you want bet365's own markets rather than the pairs, the raw board carries them per bookmaker, and [walking raw](https://oddsrelay.io/docs/guides/walking-raw) shows how to page through it. For past prices rather than today's board, [bet365 historical odds](https://oddsrelay.io/blog/bet365-historical-odds) sets out what OddsRelay's archive holds.

## Every reply dates its prices

Every reply carries the time its board was built, in the `X-Processed-At` header and, on the envelope, `meta.processed_at`. A matched envelope also carries `meta.last_seen`, which gives the last read of each venue per sport. Now minus `last_seen.bet365.soccer` is an upper bound on how old a bet365 football price in that reply can be. Every product on sale must meet a maximum update time of 10–20 s for match odds, and for every market within six hours of kick-off. Further from kick-off, prices in the other markets can be older. The [freshness guide](https://oddsrelay.io/docs/guides/freshness) explains each timestamp.

## Put bet365 prices in your product

[See coverage](https://oddsrelay.io/coverage) lists bet365 and the exchanges beside it. The [quickstart](https://oddsrelay.io/docs/guides/quickstart) takes a key to a first call.

A product that shows bet365 prices to other people runs on [Enterprise](https://oddsrelay.io/enterprise). That first call works on your own Free key.

## Sources

- [Betfair Developer Program: the Exchange API](https://developer.betfair.com/), checked 29 September 2026

18+ · OddsRelay supplies odds data only and takes no bets. Please gamble responsibly.

Source: https://oddsrelay.io/blog/is-there-a-bet365-api
