Starter
250KOdds
- Requests
- 250K / month
- Streams
- 500 stream-hours / month
- Stream connections
- 3 concurrent
- All Bookmakers
- All Markets
- 120 requests/min
- Self-serve
Bets
- Positive EV and arbitrage bets
- Up to 4 bookmakers
Get ready-made pre-match arbitrage opportunities with bookmaker legs and prices. REST and streaming included. From $50/month.
Arbitrage exists when the best prices across opposing outcomes imply less than 100%. We match the legs and deliver the opportunity.
Illustrative example
{
"items": [
{
"id": "example-arbitrage-001",
"event_id": "example-event",
"selection_1_bookmaker_name": "bet365",
"selection_1_odds": 2.10,
"selection_2_bookmaker_name": "pinnacle",
"selection_2_odds": 2.10,
"arbitrage_percentage": 5.0
}
]
}
Copy a request or give the prompt to your AI agent.
X-API-Keyarbitrage/v1/bets/snapshot?strategies=arbitrage
Build an arbitrage alert bot using https://api.odds-api.net/v1. Keep ODDS_API_KEY server-side and send it in the X-API-Key header.
Load /bets/snapshot?strategies=arbitrage&limit=50. Display each opportunity's bookmaker legs, prices and arbitrage percentage. Handle an empty items array.
Retain resume and pass it as since to /bets/stream?strategies=arbitrage. Apply upsert and delete events by ID so expired opportunities leave the board.const apiKey = process.env.ODDS_API_KEY;
if (!apiKey) throw new Error("Set ODDS_API_KEY first.");
const response = await fetch(
"https://api.odds-api.net/v1/bets/snapshot?strategies=arbitrage&limit=50",
{ headers: { "X-API-Key": apiKey } }
);
if (!response.ok) throw new Error(await response.text());
const { items, resume } = await response.json();
console.log(items);
// Retain resume for the matching bet stream.import os
import requests
response = requests.get(
"https://api.odds-api.net/v1/bets/snapshot",
headers={"X-API-Key": os.environ["ODDS_API_KEY"]},
params={"strategies": "arbitrage", "limit": 50},
timeout=20,
)
response.raise_for_status()
data = response.json()
print(data["items"])
# Retain data["resume"] for the matching bet stream.curl --fail-with-body --get \
'https://api.odds-api.net/v1/bets/snapshot' \
--header "X-API-Key: $ODDS_API_KEY" \
--data-urlencode 'strategies=arbitrage' \
--data-urlencode 'limit=50'Paid plans include arbitrage feeds. Your bet-feed bookmaker limit is separate from odds-catalog access.
Enterprise grade
Custom projects, scoped with your team.
Yes. The feed returns prepared opportunities with bookmaker legs, prices and an arbitrage percentage.
Select your bet bookmakers in your account. Your plan sets the limit, separately from general odds-catalog access.
The service covers pre-match odds. SSE and WebSocket deliver updates to those pre-match opportunities.
Yes. Load a snapshot, then apply stream updates and deletions. Your app handles alerts, stake calculations and execution.
Yes. Paid plans include prepared positive EV and arbitrage feeds, within their bookmaker and usage limits.
Choose your bookmakers and connect your app.