Volleyball Odds API: Live Odds from 70+ Bookmakers (Free Tier)
Why Volleyball Odds Data Is Hard to Find
Volleyball is the third most-watched sport on the planet. Over 800 million fans globally. Billions wagered every year across the VNL, CEV Champions League, Serie A, Polish SuperLiga, and hundreds of domestic leagues.
But try to find a volleyball odds API and you’ll hit a wall. Most providers treat volleyball like a second-class sport. A handful of bookmakers, match winner only, maybe the top 5 leagues if you’re lucky. No set handicaps, no totals, no sharp lines.
OddsPapi covers 256 volleyball tournaments with odds from 70+ bookmakers per fixture — including Pinnacle. Match winner, set handicaps, set totals, individual set winners, all in real-time. And the free tier gives you enough calls to build and test a real model.
Volleyball Odds Coverage: OddsPapi vs The Competition
| Feature | The Odds API | SportsGameOdds | OddsPapi |
|---|---|---|---|
| Bookmakers per match | ~10-15 | ~20 | 70+ |
| Sharp books (Pinnacle) | No | No | Yes |
| Crypto sportsbooks | No | No | Yes (bcgame, rollbit, roobet, stake, blaze) |
| Markets per fixture | 1-2 | Limited | 10+ (match winner, set handicaps, set totals) |
| Tournaments | ~10 leagues | ~15 leagues | 256 tournaments |
| NCAA Volleyball | No | Limited | Yes (82+ fixtures) |
| Asian leagues (Japan SV League) | No | No | Yes |
| Live/in-play odds | Delayed | Limited | Real-time (REST + WebSocket) |
| Historical data | Paid add-on | No | Free tier |
| Free tier | 500 req/mo | Limited | 250 req/mo |
256 Tournaments: From VNL to NCAA
OddsPapi covers 256 volleyball tournaments globally. If bookmakers are pricing it, we have it:
| Level | Examples | Bookmakers |
|---|---|---|
| International | FIVB World Championship, VNL, Olympic Tournament, European Championship | 70+ |
| European Clubs | CEV Champions League, CEV Cup, CEV Challenge Cup | 60+ |
| Top Domestic | SuperLega (Italy), Liga Siatkówki (Poland), Bundesliga (Germany), Extraliga (Czech Republic) | 60-70 |
| Americas | NCAA Regular Season (USA), Pro Volleyball Federation Women (USA) | 30-50 |
| Asia-Pacific | SV League (Japan), SV League Women (Japan), Proliga (Indonesia) | 30-50 |
| Other Europe | Ligue B (France), Elitserien (Sweden), Serie A1 Women (Italy), MEVZA | 40-60 |
That’s not 10 “top leagues.” It’s 256 tournaments across every continent where volleyball is bet on professionally — including men’s and women’s competitions at every level.
Volleyball Markets: Match Winner to Set Handicaps
Each volleyball fixture on OddsPapi can have 10+ unique markets. Here are the key market IDs you’ll need for API calls:
| Market | Market ID | Description |
|---|---|---|
| Match Winner | 231 | Who wins the match (2-way) |
| 1st Set Winner | 233 | Who wins set 1 |
| 2nd Set Winner | 235 | Who wins set 2 |
| 3rd Set Winner | 237 | Who wins set 3 |
| 4th Set Winner | 239 | Who wins set 4 |
| 5th Set Winner | 2311 | Who wins set 5 (decider) |
| Total Sets O/U 2.5 | 2313 | Over/Under 2.5 total sets |
| Total Sets O/U 3.5 | 2315 | Over/Under 3.5 total sets |
| Total Sets O/U 4.5 | 2317 | Over/Under 4.5 total sets |
| Set Handicap -1.5 | 2319 | Team must win by 2+ sets |
| Set Handicap +1.5 | 2321 | Team can lose by 1 set |
| Set Handicap -2.5 | 2323 | Team must win 3-0 |
| Set Handicap +2.5 | 2325 | Team can lose 0-3 and still cover |
Why set handicaps matter: In volleyball, a 3-0 sweep pays very differently than a 3-2 grind. Set handicaps let you express a view on match dominance, not just the winner. And with Pinnacle pricing these markets, you’re working with sharp lines — not inflated soft-book margins.
Tutorial: Pull Volleyball Odds with Python
Here’s a step-by-step guide to pulling live volleyball odds from OddsPapi. Every code snippet below was tested against the live API.
Step 1: Authentication
OddsPapi uses a query parameter for authentication — no OAuth, no headers, no tokens:
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.oddspapi.io/v4"
# Test your key
response = requests.get(f"{BASE_URL}/sports", params={"apiKey": API_KEY})
print(response.status_code) # 200 = you're in
Step 2: Discover Volleyball Tournaments
Volleyball is sportId: 23. Fetch all 256 tournaments:
response = requests.get(
f"{BASE_URL}/tournaments",
params={"apiKey": API_KEY, "sportId": 23}
)
tournaments = response.json()
print(f"Total volleyball tournaments: {len(tournaments)}")
# Filter to tournaments with upcoming fixtures
active = [t for t in tournaments if t["futureFixtures"] > 0]
print(f"Active tournaments: {len(active)}")
for t in active[:10]:
print(f" {t['tournamentName']} ({t['categoryName']}) - {t['futureFixtures']} fixtures")
Output:
Total volleyball tournaments: 256
Active tournaments: 92
NCAA, Regular Season (USA) - 82 fixtures
Ligue B (France) - 35 fixtures
Pro Volleyball Federation, Women (USA) - 33 fixtures
SV League (Japan) - 28 fixtures
SuperLega (Italy) - 12 fixtures
Proliga (Indonesia) - 10 fixtures
Serie A1 Women (Italy) - 8 fixtures
Extraliga (Czech Republic) - 8 fixtures
...
Step 3: Fetch Fixtures
Pull upcoming volleyball fixtures within a date range (max 10 days):
response = requests.get(
f"{BASE_URL}/fixtures",
params={
"apiKey": API_KEY,
"sportId": 23,
"from": "2026-04-03",
"to": "2026-04-06"
}
)
fixtures = response.json()
with_odds = [f for f in fixtures if f["hasOdds"]]
print(f"Fixtures (3 days): {len(fixtures)}")
print(f"With odds: {len(with_odds)}")
for f in with_odds[:5]:
print(f" {f['participant1Name']} vs {f['participant2Name']}")
print(f" Tournament: {f['tournamentName']} ({f['categoryName']})")
print(f" Kick-off: {f['startTime']}")
print(f" Fixture ID: {f['fixtureId']}")
Step 4: Parse Odds
Grab odds for a specific fixture. The response is nested — bookmakerOdds → slug → markets → marketId → outcomes:
fixture_id = "id2300080670394400" # Fatra Zlin vs VK Ostrava
response = requests.get(
f"{BASE_URL}/odds",
params={"apiKey": API_KEY, "fixtureId": fixture_id}
)
data = response.json()
bookmaker_odds = data["bookmakerOdds"]
print(f"Bookmakers: {len(bookmaker_odds)}")
# Parse Match Winner (market 231) from Pinnacle
pinnacle = bookmaker_odds["pinnacle"]["markets"]["231"]["outcomes"]
for outcome_id, outcome in pinnacle.items():
for player_id, player in outcome["players"].items():
print(f" Outcome {outcome_id}: {player['price']}")
Output:
Bookmakers: 64
Outcome 231: 1.595 # Home
Outcome 232: 2.37 # Away
Step 5: Compare Pinnacle vs Soft Books
This is where the sharp line matters. Compare Pinnacle’s match winner odds against soft books to spot value:
# Compare Match Winner (market 231) across bookmakers
compare_books = ["pinnacle", "unibet", "stake", "bcgame", "kto"]
for slug in compare_books:
if slug not in bookmaker_odds:
continue
markets = bookmaker_odds[slug].get("markets", {})
m231 = markets.get("231", {}).get("outcomes", {})
prices = {}
for outcome_id, outcome in m231.items():
for player_id, player in outcome["players"].items():
prices[outcome_id] = player["price"]
if prices:
print(f" {slug:15s} | Home: {prices.get('231', 'N/A'):>6} Away: {prices.get('232', 'N/A'):>6}")
Output:
pinnacle | Home: 1.595 Away: 2.37
unibet | Home: 1.73 Away: 2.0
stake | Home: 1.66 Away: 2.19
bcgame | Home: 1.52 Away: 2.3
kto | Home: 1.73 Away: 2.0
Pinnacle has the tightest margin. Notice how Unibet and KTO are pricing the home team at 1.73 while Pinnacle has 1.595 — that’s a significant gap that a sharp model would flag. The crypto books (bcgame at 1.52) are pricing even lower, suggesting they’re following different feed providers.
Step 6: Full Script — Volleyball Odds Scanner
Here’s a complete script that scans upcoming volleyball fixtures and finds the best odds across bookmakers:
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.oddspapi.io/v4"
# Get upcoming volleyball fixtures
fixtures_resp = requests.get(
f"{BASE_URL}/fixtures",
params={
"apiKey": API_KEY,
"sportId": 23,
"from": "2026-04-03",
"to": "2026-04-06"
}
)
fixtures = [f for f in fixtures_resp.json() if f["hasOdds"]]
print(f"Scanning {len(fixtures)} volleyball fixtures...\n")
for fixture in fixtures[:5]:
name = f"{fixture['participant1Name']} vs {fixture['participant2Name']}"
print(f"{name} - {fixture['tournamentName']}")
odds_resp = requests.get(
f"{BASE_URL}/odds",
params={"apiKey": API_KEY, "fixtureId": fixture["fixtureId"]}
)
bo = odds_resp.json().get("bookmakerOdds", {})
# Find best odds for Match Winner (market 231)
best_home = {"price": 0, "book": ""}
best_away = {"price": 0, "book": ""}
for slug, bdata in bo.items():
m231 = bdata.get("markets", {}).get("231", {}).get("outcomes", {})
for oid, odata in m231.items():
for pid, pdata in odata.get("players", {}).items():
price = pdata.get("price", 0)
if oid == "231" and price > best_home["price"]:
best_home = {"price": price, "book": slug}
elif oid == "232" and price > best_away["price"]:
best_away = {"price": price, "book": slug}
print(f" Best Home: {best_home['price']} ({best_home['book']})")
print(f" Best Away: {best_away['price']} ({best_away['book']})")
print(f" Books: {len(bo)}\n")
70+ Bookmakers: Who Covers Volleyball?
Here’s a breakdown of the bookmaker types you’ll find on OddsPapi volleyball fixtures:
| Category | Bookmakers | Markets |
|---|---|---|
| Sharp | Pinnacle | 7-10 per match |
| Crypto | bcgame, rollbit, roobet, blaze, stake, duelbits, vave | Up to 20 per match |
| European | Unibet, Bwin, Coral, Ladbrokes, LeoVegas, Winamax, BetMGM UK | 4-7 per match |
| Brazilian | EstrelaBet, Sportingbet BR, Stake BR, KTO, Blaze | 1-7 per match |
| Regional | BetRivers, Dafabet, SportyBet, TabTouch, Svenska Spel | 1-7 per match |
Notable: Bet365, DraftKings, FanDuel, Singbet, and SBOBet do not currently price volleyball through our feed. If sharp volleyball lines are your priority, Pinnacle is the anchor — and OddsPapi is one of the only APIs that includes it.
Real-Time Volleyball Odds via WebSocket
REST polling works for pre-match odds. But volleyball sets move fast — a set can swing in 5 minutes. For live in-play volleyball betting models, OddsPapi’s WebSocket feed pushes odds updates the moment bookmakers adjust their lines.
Instead of polling every 30 seconds and missing moves, you get instant updates across all 70+ bookmakers simultaneously. When Pinnacle shifts a set handicap line from -1.5 to -2.5 mid-match, your system knows within milliseconds — not minutes.
This matters most for:
- Live set handicap trading — volleyball momentum shifts are rapid and predictable
- In-play arb detection — soft books lag behind Pinnacle on set-by-set adjustments
- Model validation — compare your live model predictions against real-time market prices
Free Historical Volleyball Data
Most odds APIs charge extra for historical data. OddsPapi includes it on the free tier. That means you can:
- Backtest set handicap models — did your 3-0 sweep prediction model beat Pinnacle’s closing line?
- Track line movements — how do volleyball opening lines move from 24h pre-match to tip-off?
- Compare bookmaker accuracy — which books consistently misprice volleyball compared to Pinnacle?
- Build training data — feed historical odds into ML models for match outcome prediction
For volleyball specifically, historical data is valuable because the sport is less efficiently priced than soccer or basketball. Soft books often set volleyball lines based on basic ELO, leaving gaps for anyone with better data.
FAQ
What sport ID is volleyball in OddsPapi?
Volleyball is sportId: 23. Beach Volleyball is a separate sport at sportId: 30.
Does OddsPapi cover NCAA volleyball?
Yes. NCAA volleyball (tournament ID 27743) regularly has 80+ upcoming fixtures with odds from 30+ bookmakers.
Which sharp bookmakers cover volleyball?
Pinnacle covers volleyball with 7-10 markets per match including match winner, set totals, and set handicaps. Bet365, Singbet, and SBOBet do not currently price volleyball through our feed.
How many markets are available per volleyball match?
Typically 10+ unique markets: match winner (231), individual set winners (233-2311), total sets over/under (2313-2317), and set handicaps (2319-2339).
Can I get live in-play volleyball odds?
Yes. OddsPapi offers both REST API polling and WebSocket feeds for real-time volleyball odds updates across all bookmakers.
Is there a free tier for volleyball data?
Yes. The free tier includes 250 requests per month — enough to build and test a volleyball model. Historical data is also included at no extra cost.
Stop Scraping. Start Building.
Volleyball is one of the most underserved sports in the odds API space. Most providers give you 10 bookmakers and a match winner market. OddsPapi gives you 70+ bookmakers, Pinnacle sharp lines, set handicaps, set totals, and 256 tournaments — from the VNL and CEV Champions League to NCAA and the Japanese SV League.
Get your free API key and start pulling volleyball odds in minutes. No credit card. No enterprise sales call. Just data.