Betfair Exchange odds API
Betfair Exchange prices as structured JSON through one REST API.
Betfair Exchange is a betting exchange with the bookmaker key betfair_exchange. SockOdds is independent and is not affiliated with or endorsed by Betfair Exchange.
Leagues
Betfair Exchange prices are delivered for 10 leagues as of 12 October 2026: Bundesliga, English Premier League, La Liga, Ligue 1, MLS, NBA, College football, NHL, Rugby League World Cup and Serie A.
Request Betfair Exchange prices
Filter any odds request to Betfair Exchange with bookmakers=betfair_exchange:
curl -sS "https://api.sockodds.com/v1/odds?league=bundesliga&bookmakers=betfair_exchange&markets=result&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
-H "Authorization: Bearer $SOCKODDS_API_KEY"const response = await fetch(`https://api.sockodds.com/v1/odds?league=bundesliga&bookmakers=betfair_exchange&markets=result&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));import json, os, urllib.request
from datetime import datetime, timezone
request = urllib.request.Request(
f"https://api.sockodds.com/v1/odds?league=bundesliga&bookmakers=betfair_exchange&markets=result&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
print(json.dumps(json.load(response), indent=2))Response from a local copy of the API with invented test prices
{
"data": [
{
"id": "ev_000ckk0f7k5n",
"name": "Bayer Leverkusen v Bayern Munich",
"league": {
"key": "bundesliga",
"name": "Bundesliga"
},
"scheduled_start": "2026-10-16T10:00:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "bayern_munich",
"name": "Bayern Munich"
}
},
{
"role": "home",
"identity": {
"key": "bayer_leverkusen",
"name": "Bayer Leverkusen"
}
}
],
"markets": [
{
"id": "mk_6j63ysznbx2v7ckt",
"key": "result",
"name": "Result (with the draw)",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_0ehcc3qwzvxxn8hx",
"name": "Bayer Leverkusen",
"side": "home",
"line": null,
"prices": [
{
"bookmaker": "betfair_exchange",
"decimal_odds": 2.01,
"implied_probability": 0.497512,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_hsye8b66y30abbsz",
"name": "Draw",
"side": "draw",
"line": null,
"prices": [
{
"bookmaker": "betfair_exchange",
"decimal_odds": 3.33,
"implied_probability": 0.3003,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_jhwtphb770vxvg61",
"name": "Bayern Munich",
"side": "away",
"line": null,
"prices": [
{
"bookmaker": "betfair_exchange",
"decimal_odds": 3.53,
"implied_probability": 0.283286,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
}
]
}
]
}
],
"meta": {
"count": 1,
"cursor": null
},
"links": {
"next": null
}
}Plans
Betfair Exchange is included on Rookie and Pro. See pricing for the bookmakers each plan includes.