What is OddsPapi? The Sports Betting API Built for Developers
What is OddsPapi?
OddsPapi is a sports betting data API that aggregates odds from 348 bookmakers — including sharps like Pinnacle, Singbet, and SBOBet — into a single REST and WebSocket interface. It was built for developers, quants, and sharp bettors who need comprehensive odds data without enterprise contracts or screen-scraping hacks.
If you’ve searched for “OddsPapi” and ended up on The Odds API’s website, you’re not alone. Google confuses the two brands. This page exists to set the record straight.
The Problem OddsPapi Solves
Before OddsPapi, developers who needed odds data had two options:
| Option | Coverage | Price | Problem |
|---|---|---|---|
| Enterprise feeds (Sportradar, LSports) | 300+ bookmakers | $5,000–$50,000/month | Out of reach for indie devs |
| Generic APIs (The Odds API, SportsGameOdds) | ~40 bookmakers | $0–$200/month | No sharps, no crypto books, no Asian markets |
| Scraping | Whatever you can get | “Free” (until you get banned) | Fragile, slow, legally grey |
OddsPapi is the third option: enterprise-grade coverage at developer-friendly prices. 348 bookmakers. 59 sports. Free tier included.
OddsPapi vs The Odds API: Head-to-Head
The most common comparison. Here’s how they stack up:
| Feature | OddsPapi | The Odds API |
|---|---|---|
| Bookmakers | 348 | ~40 |
| Sharp bookmakers (Pinnacle, Singbet, SBOBet) | Yes | Pinnacle only |
| Crypto/niche books (1xBet, GG.BET) | Yes | No |
| Brazilian bookmakers (EstrelaBet, Betano) | Yes | No |
| Asian Handicap (native market IDs) | Yes — each line has its own ID | Limited |
| Historical odds | Free tier | Paid plans only |
| Real-time WebSockets | Yes | No (polling only) |
| Sports covered | 59 | ~20 |
| Free tier | Yes | Yes (500 requests/month) |
The Odds API is solid for hobby projects that only need US sportsbooks. But if you’re building anything that requires sharp lines, global coverage, or historical backtesting — OddsPapi covers ground that they simply don’t.
What You Can Build With OddsPapi
OddsPapi’s coverage opens up use cases that aren’t possible with 40-bookmaker APIs:
- Arbitrage scanners — Cross 348 bookmakers to find guaranteed-profit opportunities. More books = more arbs.
- CLV (Closing Line Value) trackers — Benchmark your picks against Pinnacle’s closing line. The gold standard for measuring edge.
- Sharp-vs-soft line monitors — Track how Pinnacle and Singbet move vs Bet365 and DraftKings. Spot steam moves early.
- Betting models — Backtest against free historical odds data. No API charges for historical queries.
- Odds comparison platforms — Build your own OddsPortal. 348 bookmakers, real-time data, one API.
- Regional betting tools — Brazil (EstrelaBet, Betano), Asia (Singbet, SBOBet), or any market.
Quick Start: Your First API Call
OddsPapi authenticates via a query parameter. No OAuth, no headers, no SDK required.
Step 1: Get Your Free API Key
Sign up at oddspapi.io/signup. No credit card needed.
Step 2: Discover Sports
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.oddspapi.io/v4"
# List all 59 sports
sports = requests.get(f"{BASE}/sports", params={"apiKey": API_KEY}).json()
for sport in sports[:5]:
print(f"{sport['sportName']} (ID: {sport['sportId']})")
Step 3: Get Fixtures
# Get upcoming Premier League fixtures
fixtures = requests.get(f"{BASE}/fixtures", params={
"apiKey": API_KEY,
"sportId": 10, # Soccer
"tournamentId": 1 # Premier League
}).json()
for match in fixtures[:3]:
home = match["participants"][0]["name"]
away = match["participants"][1]["name"]
print(f"{home} vs {away}")
Step 4: Compare Odds Across Bookmakers
# Get odds for a specific fixture
fixture_id = fixtures[0]["id"]
odds = requests.get(f"{BASE}/fixtures/{fixture_id}/odds", params={
"apiKey": API_KEY,
"marketId": 101 # Full Time Result (1X2)
}).json()
# Compare Pinnacle vs Bet365
for slug in ["pinnacle", "bet365"]:
if slug in odds.get("bookmakerOdds", {}):
market = odds["bookmakerOdds"][slug]["markets"]["101"]
outcomes = market["outcomes"]
prices = []
for oid, outcome in outcomes.items():
price = outcome["players"]["0"]["price"]
prices.append(f"{outcome['name']}: {price}")
print(f"{slug}: {', '.join(prices)}")
Core API Concepts
If you’re coming from other sports data APIs, here’s the terminology mapping:
| What You Call It | OddsPapi Term | Example |
|---|---|---|
| League | Tournament | Premier League (ID: 1) |
| Game / Match | Fixture | Arsenal vs Liverpool |
| Team | Participant | Arsenal |
| Bet type | Market | Full Time Result (ID: 101) |
Authentication is a query parameter (?apiKey=YOUR_KEY), not a header. Odds responses are nested: bookmakerOdds → slug → markets → marketId → outcomes → outcomeId → players → 0 → price.
Coverage That Actually Matters
348 bookmakers isn’t just a number. It means coverage across every category:
| Category | Examples | Why It Matters |
|---|---|---|
| Sharps | Pinnacle, Singbet (Crown), SBOBet | True market prices. The benchmark for CLV and model validation. |
| US Sportsbooks | DraftKings, FanDuel, BetMGM | Largest regulated market. Player props, boosts. |
| Exchanges | Betfair, Smarkets | Back/lay spreads, true market depth. |
| Crypto / Niche | 1xBet, Stake, GG.BET | Highest limits, crypto payouts, esports. |
| Regional (Brazil) | EstrelaBet, Betano, Pixbet | Fastest-growing regulated market in the world. |
| Prediction Markets | Polymarket, Kalshi | Election odds, crypto events, non-sports. |
Free Tier vs Paid Plans
OddsPapi’s free tier is designed to let you build and ship before you pay:
| Feature | Free | Pro |
|---|---|---|
| Bookmakers | 348 | 348 |
| Sports | 59 | 59 |
| Historical odds | Included | Included |
| Real-time WebSockets | — | Yes |
| Rate limits | Standard | Higher |
| Support | Community | Priority |
Historical odds on the free tier is a key differentiator. Most competitors charge for historical data. OddsPapi gives it away so you can backtest your models before committing.
Frequently Asked Questions
Is OddsPapi the same as The Odds API?
No. OddsPapi and The Odds API are completely different companies. OddsPapi aggregates 348 bookmakers (including sharps like Pinnacle and Singbet). The Odds API covers approximately 40 bookmakers. The names are similar, but the products are different.
Does OddsPapi have a free tier?
Yes. The free tier includes all 348 bookmakers, 59 sports, and historical odds. No credit card required.
What sports does OddsPapi cover?
59 sports including soccer, basketball, American football (NFL), tennis, esports (CS2, LoL, Dota 2), MMA, baseball, ice hockey, and more.
How does authentication work?
API key as a query parameter: ?apiKey=YOUR_KEY. No OAuth tokens, no bearer headers, no SDK needed.
Can I get Pinnacle odds through OddsPapi?
Yes. Pinnacle’s own API is closed to the public. OddsPapi aggregates Pinnacle odds alongside 347 other bookmakers, accessible on the free tier.
Get Started
Stop scraping. Stop paying enterprise rates for data you can get for free.
348 bookmakers. 59 sports. Free historical odds. One API call.