# How to get Betfair lay odds (and alternatives)

> Betfair's Exchange API returns its own lay prices and the money behind them. What that route involves, what it leaves to you, and when a matched feed fits.

Published 1 July 2026 · updated 5 November 2026

**The direct answer to how to get Betfair lay odds is Betfair's own Exchange API, which returns its lay prices and the money available at each once you have a Betfair account and an application key.** That gets you one exchange's lay side. Pairing it with a bookmaker's back price is still your job.

## Does Betfair have a public API for lay odds?

Yes. Betfair runs a documented developer programme for its exchange. You create an application key, log in to get a session token, and request prices for the markets you care about. The price call is `listMarketBook`. Ask for best offers in its price projection and each runner comes back with `availableToBack` and `availableToLay`: a price and the stake available at it. It is a legitimate, supported route.

Betfair sets the terms of access, and they change. Check the current conditions for application keys, and any fees, in Betfair's own developer documentation. A forum thread or a blog post, this one included, can be out of date.

## What the direct route leaves with you

- **One exchange.** You see Betfair's lay price and no other exchange's. When another exchange has a lower lay for the same runner, the Betfair API cannot tell you.
- **A delayed key to start.** The delayed application key returns prices on a delay. Undelayed data needs a live key, granted on Betfair's conditions. [The Betfair API delay](https://oddsrelay.io/blog/betfair-api-5-second-delay) covers what that means for a build.
- **Betfair's own ids.** Markets and runners come with Betfair's identifiers and names. Mapping them to the same match and the same selection at each bookmaker is work you write and keep fixing.
- **Session and upkeep.** Logging in, keeping the session alive, handling errors and following the API's changes all stay with you, for one venue.

## Why a lay price needs a back price beside it

For matched betting, a [lay price](https://oddsrelay.io/glossary/lay-odds) on its own tells you little. What matters is the pair: a bookmaker's back price and an exchange's lay price for the same selection, with enough [liquidity](https://oddsrelay.io/glossary/liquidity) behind the lay to place the stake, the subject of [why lay liquidity matters](https://oddsrelay.io/blog/why-lay-liquidity-matters). The closer the lay sits to the back, the smaller the qualifying loss.

The numbers people compare pairs by are arithmetic on those two prices and your commission rate. Here is that arithmetic, written as you would write it on your side:

The customer's arithmetic on one back/lay pair · example:

```ts
// back and lay are decimal prices, stake is your back stake,
// commission is your exchange's rate as a fraction (0.02 for 2%).
const rating = (back / lay) * 100;
const layStake = (back * stake) / (lay - commission);
const ifBackWins = stake * (back - 1) - layStake * (lay - 1);
const ifLayWins = layStake * (1 - commission) - stake;
// The two outcomes come out equal: that figure is the qualifying loss (or profit).
```

[Qualifying loss and ratings explained](https://oddsrelay.io/blog/qualifying-loss-and-ratings-explained) goes further into the numbers.

## What a matched feed sends instead

OddsRelay's matched boards put bookmaker back prices from 140+ bookmakers, 60+ of them live in the UK & Ireland beside lay offers from Betfair, Smarkets and Matchbook. Each outcome carries a `back` list and a `lay` list, and each lay offer names its exchange and the money `available` at that price.

One event from GET /v2/odds/standard (trimmed) · example:

```json
{
  "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": "william_hill", "price": 2.9, "link": null }],
      "lay": [
        { "exchange": "matchbook", "price": 3.0, "available": 175, "link": null },
        { "exchange": "smarkets", "price": 3.05, "available": 240, "link": null }
      ]
    }]
  }]
}
```

The pair arrives already matched to the same event and selection, so the id mapping above is not yours to maintain. A lay with no money at its price never makes a pair. Rating the pair and working out the qualifying loss stay on your side, as in the code above, and the [oddsmatcher widget](https://oddsrelay.io/widgets/oddsmatcher) shows both.

The lay list holds each exchange's own offer, lowest price first. You choose between them: the best price, the most money available, or only the exchanges you hold accounts with. The `exchanges` filter narrows a request to the ones you name, and the [matched board filters guide](https://oddsrelay.io/docs/guides/matched-board-filters) lists the rest. To do the pairing yourself, the raw product gives each exchange's `back_price`, `lay_price` and `available` beside every bookmaker's `price`, with no commission applied.

A matched board reply carries `meta.processed_at`, the board's time, and `meta.last_seen`, the last read of each venue and sport, so you can bound a price's age yourself. [The freshness guide](https://oddsrelay.io/docs/guides/freshness) covers both.

## Which route fits

If Betfair alone is your product, go direct. If you are building a matched-betting tool, build on the pair. One exchange's lay side is the easy half of that job.

## Start with the coverage page

Check which exchanges and bookmakers the feed covers on [the coverage page](https://oddsrelay.io/coverage), see the [Betfair Exchange page](https://oddsrelay.io/bookmakers/betfair-exchange) for that venue alone, and read [the quickstart](https://oddsrelay.io/docs/guides/quickstart) for your first request.

## Sources

- [Betfair Exchange API: Application Keys](https://betfair-developer-docs.atlassian.net/wiki/spaces/1smk3cen4v3lu3yomq5qye0ni/pages/2687105/Application+Keys), checked 29 September 2026
- [Betfair Exchange API: listMarketBook](https://betfair-developer-docs.atlassian.net/wiki/spaces/1smk3cen4v3lu3yomq5qye0ni/pages/2687510/listMarketBook), checked 29 September 2026
- [Betfair Exchange API: Betting Type Definitions (ExchangePrices)](https://betfair-developer-docs.atlassian.net/wiki/spaces/1smk3cen4v3lu3yomq5qye0ni/pages/2687465/Betting+Type+Definitions), checked 29 September 2026

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

Source: https://oddsrelay.io/blog/how-to-get-betfair-lay-odds
