Arbitrage betting API
Build an arbitrage bot with sub-second bet365 odds
For: Arb bots, surebet aggregators, multi-book comparison tools
The problem
Arbitrage opportunities exist for seconds. A stale feed — even 30 seconds old — means you're pricing on numbers that the market has already moved past. You need rate limits that let you re-poll every market, every few seconds, without credit-metering anxiety.
How TickOdds helps
TickOdds delivers bet365 odds as fast as they change, via WebSocket (sub-100ms) or HTTP polling at 2,000 req/min on the Pro tier. Flat rate — poll as hard as you want. Combine with any multi-book feed to compute surebet opportunities, or pair TickOdds with a Pinnacle/Betfair feed for classic bet365-vs-Pinnacle arbs.
Recommended: Pro tier
Based on the throughput this workload needs.
See pricing →Workflow
- 1Connect to the WebSocket at /ws/live?apiKey=YOUR_KEY
- 2Subscribe to the sports you care about (e.g. soccer, tennis)
- 3Receive push updates every time a bet365 line changes
- 4Cross-reference with your second feed to compute surebet %
- 5Flag opportunities >1% to your Telegram / dashboard / bot
Code example
python
import asyncio
import websockets
import json
async def arbitrage_bot():
uri = "wss://api.tickodds.com/ws/live?apiKey=YOUR_KEY"
async with websockets.connect(uri) as ws:
# Subscribe to soccer and tennis
await ws.send(json.dumps({
"action": "subscribe",
"sports": ["soccer", "tennis"]
}))
async for message in ws:
event = json.loads(message)
if event.get("type") == "odds_update":
# event.data has the updated markets
for market in event["data"]["markets"]:
# Compare with your other book's price
surebet_pct = compute_surebet(
market, fetch_pinnacle_price(market["id"])
)
if surebet_pct > 1.0:
alert(f"{surebet_pct:.2f}% arb on {market['name']}")
asyncio.run(arbitrage_bot())Related endpoints
- WS /ws/live
- GET /api/v1/matches
- GET /api/v1/live/events