Arbitrage • Middles • +EV
Open-source sports betting scanner that finds arbitrage opportunities, middle bets, and +EV plays across US and EU bookmakers.
| Tab | What it finds | Risk profile |
|---|---|---|
| Arbitrage | Guaranteed profit by betting both sides across different books | Zero risk |
| Middles | Line gaps where both bets can win if the result lands in between | High variance, +EV over time |
| +EV | Soft book odds better than sharp book fair value | Medium variance, profit over volume |
The scanner pulls odds from The Odds API across multiple regions (US, EU, UK, AU) and:
- Arbitrage — finds where the sum of inverse odds across books is less than 1, guaranteeing profit regardless of outcome
- Middles — finds where books disagree on spreads/totals, creating a gap where both sides can win
- +EV — compares soft book odds to sharp reference (Pinnacle), identifying bets with positive expected value
- Clone this repo
- Install dependencies:
pip install -r requirements.txt - Get a free API key from The Odds API
- Run:
python app.py
Your browser opens automatically. Enter your API key and scan.
Optional: Create a .env file with your API key to skip manual entry:
ODDS_API_KEY=your_api_key_here
| Sport | Markets |
|---|---|
| NFL, NBA, MLB, NHL | Moneyline, Spreads, Totals |
| Soccer (EPL, La Liga, etc.) | Spreads, Totals only* |
*Soccer moneyline is three-way (win/draw/lose) — excluded from two-way scanning.
Each scan uses one API call per sport. Free tier: 500 requests/month.
Default sports use ~6-10 calls per scan depending on what's in season.
ROI = guaranteed return on total stake. A 2% ROI means $2 profit on $100 staked.
Stakes are split so you get the same payout regardless of outcome.
EV = expected value based on historical probability of landing in the gap.
NFL key numbers (3, 7) significantly boost probability for spread middles — these margins occur more often due to field goals and touchdowns.
Middles lose small amounts most of the time and win big occasionally — positive EV over many bets, but high variance on any single bet.
Edge = how much better the soft book odds are compared to sharp book fair value.
Sharp books (Pinnacle) have tight lines with minimal vig (~2%). When soft books offer better odds than the sharp-implied fair price, that's a +EV bet.
Kelly staking helps size bets based on edge — quarter Kelly recommended to reduce variance.
Configurable via the UI:
- Regions (US, US2, UK, EU, AU)
- Sports selection
- Exchange commission rate (for Betfair, etc.)
- Minimum gap for middles
- Minimum edge for +EV
- Sharp reference book (Pinnacle, Betfair, Matchbook)
- Kelly fraction (full, half, quarter, tenth)
- Stake amount / bankroll
- Backend: Python, Flask
- Frontend: HTML, CSS, JavaScript
- Data: The Odds API
MIT
PRs welcome. Ideas for future versions:
- Alerts/notifications
- Historical tracking
- Three-way arbitrage (soccer moneylines)
- Player props
If this tool saves you time or helps you find an edge, consider buying me a coffee:
[![Buy Me A Coffee](https://img.shields.io/badge/Buy
If this tool saves you time or helps you find an edge, consider buying me a coffee: