Unlimited requests · ~5–10s delayed odds
- Multi-book odds over HTTP
- Odds delayed about 5–10 seconds
- No monthly request cap — take what you need
- Standard rate limits so the servers stay up
- Free week when keys open so you can try it
Waitlist open · first 100 only
I reverse-engineered major sportsbooks so I could arb without paying insane data bills. Now I'm opening the pipes for other devs — raw odds over HTTP, not some fancy arb tool.
Capping at 100 for now so I can keep this manageable and actually help the people who get in. Drop your email — I'll reach out when keys open.
38 spots left · capped at 100 so this stays manageable
Free week at launch so you can try the feed before you pay — no enterprise trial theater.
The books I wired up for myself. One request, multi-book lines on the leagues people actually care about.
US retail + sharp books. Coverage expands with demand.
Moneyline, spread, and totals where the book offers them.
Markets: h2h (moneyline), spreads, and totals. Odds formats: Canonical American and decimal prices in the response payload.
Nothing fancy — key, sport, JSON back. Build whatever you want on top.
import requests
# Pregame NFL odds across selected books
url = "https://www.oddsvault.app/api/v1/odds"
params = {
"sport": "nfl",
"markets": "h2h,spreads,totals",
}
headers = {
"Authorization": "Bearer YOUR_API_KEY",
}
r = requests.get(url, params=params, headers=headers)
data = r.json()
for event in data["events"]:
print(event["participants"]["home"]["name"], "vs", event["participants"]["away"]["name"]){
"sport": "nfl",
"snapshot_version": 42,
"generated_at": "2026-07-18T18:42:11.000Z",
"source_freshness": [{ "book": "draftkings", "scraped_at": "..." }],
"events": [{
"event_id": "evt_8f2a1c",
"commence_time": "2026-09-10T00:20:00Z",
"participants": { "home": { "name": "Kansas City Chiefs" }, "away": { "name": "Buffalo Bills" } },
"markets": [{
"identity": { "family": "moneyline", "scope": "full_event" },
"selections": [{ "side": "home", "books": [{ "book": "draftkings", "price": -135, "price_decimal": 1.74 }] }]
}]
}]
}Auth is a Bearer key. The API serves a published snapshot only; it never waits for a sportsbook scrape on your request. Full reference + Claude Code handoff: /docs.
Same unlimited volume either way. The only real difference is how fresh the odds are — and how hard the rate limits squeeze.
Unlimited requests · ~5–10s delayed odds
Unlimited requests · odds down to the millisecond
No data licensing fees on my end — I sourced the odds myself — so I can do $39 / $79 unlimited instead of the enterprise bills I used to hate paying. Same request volume on both; Fresh is just fresher odds + looser rate limits.
The real story
Not an enterprise pitch. Just a guy who reverse-engineered books to arb on the cheap — and is opening the data up for other people in the same boat.
A while back I couldn't afford to pay for odds data, so I spent time reverse-engineering major sportsbooks — just so I could arb without bleeding cash on some overpriced feed.
It worked. I got pretty good at arbing, and eventually got banned from a decent number of books along the way — like most of us have, or will.
I decided to open up part of what I built, but with an honest boundary: the first product is a pregame snapshot API. It has documented rate limits and a 60-second default refresh target instead of fuzzy real-time promises.
Access pricing is finalized with the first invited users. The immediate focus is keeping collection, storage, and the API predictable before expanding the product surface.
Called it Odds Vault (thanks ChatGPT for the name). Not an arb detection tool or anything fancy — just raw multi-book odds for devs who want to build their own thing without paying enterprise prices like I once was.
Simple on purpose. Helpful on purpose. Not a growth-hacked SaaS deck.
01 · Why it exists
I needed multi-book odds for my own arb stack. Paid APIs were absurd, so I reverse-engineered the books and kept the pipeline running for myself first.
02 · What it is
No black-box "picks." No arb finder. Just pregame odds snapshots over HTTP so you can build dashboards, models, or whatever you're cooking.
03 · The operating promise
The recurring work is keeping scrapers healthy, retaining last-good data, and serving a stable database snapshot. Live collection is a separate future project.
Most odds APIs charge enterprise money because they buy or license dataand stack margin on top. I don't. I reverse-engineered the books myself for a personal arb setup, so there's no upstream data bill to pass on.
I got banned from enough books that I don't need this for personal tickets anymore. The scrapers still work. Opening them up felt more useful than letting the code rot.
The waitlist is capped at 100 for now because I want this manageable and actually helpful for the people who use it — not grow-for-growth's-sake.
Reselling a licensed feed with markup
AEs, contracts, minimum seats, nonsense
Servers, domain, monitoring, the pipeline I already wrote
No corporate FAQ energy. Just the honest stuff.
Nope. Just raw pregame odds snapshots. You build whatever you want on top — scanners, dashboards, models, Discord bots, your own arb logic. I'm not selling picks.
I want to keep this manageable and actually help the people who get in — not spam invites and pray. When the first wave is solid, I can open more.
Devs (and builder-types) who want multi-book odds without enterprise pricing. If you've ever stared at a $99–$200+ data bill and thought "yeah no," this is for you.
No. The initial API serves pregame full-game markets from published snapshots with a 60-second default refresh target. Live odds need a different continuous collection and delivery system.
Part of the story. Arbing hard enough eventually gets you locked out of books — like most of us. Accounts gone; the data code stayed. Odds Vault is me putting that work to use for other people.