Crypto Bookmaker API: Access 1xBet, Stake & 9 Crypto Sportsbooks via One API
Why Developers Want Crypto Bookmaker Data
1xBet processes over 1,000 events daily across 50+ sports. Stake is the world’s largest crypto-native sportsbook. BC.Game and Rollbit offer 130+ markets per fixture.
None of them have a public API.
If you want odds from crypto bookmakers, you’ve got three options: open accounts with each book (and fund them with crypto), scrape their frontends (and get blocked), or use an aggregator that already has the data.
OddsPapi provides odds from 9 crypto bookmakers alongside 350+ total bookmakers through a single REST API. No crypto wallet. No VPN. No scraping. Just a query parameter and JSON responses.
Why Crypto Bookmakers Matter for Quantitative Betting
Crypto bookmakers aren’t just “offshore books with Bitcoin deposits.” They serve a specific function in a serious bettor’s data stack:
Independent Pricing
Crypto books use different market makers and have different liability profiles than regulated bookmakers. This means their odds move independently — creating arbitrage windows that don’t exist in US-only or Europe-only datasets.
Here’s a real example from a Danish 1. Division fixture (Hvidovre IF vs Hillerød):
| Bookmaker | Type | Home | Draw | Away |
|---|---|---|---|---|
| Pinnacle | Sharp | 2.20 | 3.39 | 3.38 |
| 1xBet | Crypto | 2.14 | 3.34 | 3.26 |
| BC.Game | Crypto | 2.12 | 3.25 | 3.20 |
| Stake | Crypto | 2.14 | 3.25 | 3.10 |
| Bet365 | Soft | 2.15 | 3.40 | 3.30 |
Notice how crypto books consistently price below Pinnacle on the Away outcome — a 3-5% implied probability gap. That’s a signal, not noise.
Higher Limits, Fewer Restrictions
Regulated bookmakers limit winning accounts aggressively. Crypto books like 1xBet and Stake accept higher stakes with minimal restrictions. For developers building execution systems, this data is essential for understanding where volume can actually be placed.
Niche Market Depth
1xBet covers 50+ sports including esports (CS2, LoL, Dota 2), kabaddi, pesapallo, and futsal. If you’re modeling niche markets, crypto bookmakers are often the only books with odds.
Crypto Bookmaker Coverage on OddsPapi
OddsPapi aggregates odds from 9 crypto bookmakers — more than any competing odds API:
| Bookmaker | API Slug | Markets per Fixture | Key Strength |
|---|---|---|---|
| 1xBet | 1xbet |
54+ | Deepest sport coverage (50+ sports), 1,000+ daily events |
| BC.Game | bcgame |
136+ | Highest market depth among crypto books |
| Rollbit | rollbit |
138+ | Market depth rivaling BC.Game, crypto-native |
| Roobet | roobet |
136+ | Strong market coverage, popular in LATAM |
| Vave | vave |
95+ | Mid-tier coverage, growing rapidly |
| Stake | stake |
32+ | Largest crypto sportsbook globally |
| Cloudbet | cloudbet |
36+ | OG crypto bookmaker (est. 2013), Bitcoin pioneer |
| Duelbits | duelbits |
37+ | Crypto-native, esports focus |
| Mystake | mystake |
11+ | Niche crypto book, growing coverage |
Note: stake.bet.br (Stake Brazil) is also available as a separate bookmaker with 44+ markets — useful for developers building regional arbitrage tools for the Brazilian market.
The Old Way vs OddsPapi
| Feature | Scraping / Direct Access | OddsPapi API |
|---|---|---|
| API Access | None (must scrape frontends) | REST API + WebSocket |
| Setup Time | Days (per bookmaker) | 5 minutes (one API key) |
| Crypto Wallet Needed | Yes (per bookmaker) | No |
| VPN / Geo-restrictions | Often required | None |
| Historical Data | Not available | Free tier |
| Other Bookmakers | One at a time | 350+ in one call |
| Rate Limits | Get blocked after ~100 requests | 250 free requests/month |
| Data Format | HTML scraping (fragile) | Structured JSON |
Python Tutorial: Access Crypto Bookmaker Odds
Here’s how to pull odds from all 9 crypto bookmakers using Python and the OddsPapi API.
Step 1: Authenticate
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.oddspapi.io/v4"
# Test authentication
response = requests.get(f"{BASE_URL}/sports", params={"apiKey": API_KEY})
print(f"Status: {response.status_code}")
print(f"Sports available: {len(response.json())}")
Important: The API key is a query parameter, not a header. Don’t put it in Authorization.
Step 2: Find Fixtures
from datetime import datetime, timedelta, timezone
now = datetime.now(timezone.utc)
params = {
"apiKey": API_KEY,
"sportId": 10, # Soccer
"from": now.strftime("%Y-%m-%dT%H:%M:%SZ"),
"to": (now + timedelta(days=3)).strftime("%Y-%m-%dT%H:%M:%SZ")
}
response = requests.get(f"{BASE_URL}/fixtures", params=params)
fixtures = response.json()
# Filter to fixtures with odds
with_odds = [f for f in fixtures if f.get("hasOdds")]
print(f"Fixtures with odds: {len(with_odds)}")
fixture = with_odds[0]
fixture_id = fixture["fixtureId"]
print(f"{fixture['participant1Name']} vs {fixture['participant2Name']}")
Step 3: Get Odds & Filter Crypto Bookmakers
CRYPTO_SLUGS = [
"1xbet", "stake", "bcgame", "cloudbet",
"duelbits", "rollbit", "roobet", "vave", "mystake"
]
response = requests.get(
f"{BASE_URL}/odds",
params={"apiKey": API_KEY, "fixtureId": fixture_id}
)
odds_data = response.json()
all_bookmakers = odds_data.get("bookmakerOdds", {})
# Filter to crypto bookmakers only
crypto_odds = {
slug: data for slug, data in all_bookmakers.items()
if slug in CRYPTO_SLUGS
}
print(f"Total bookmakers: {len(all_bookmakers)}")
print(f"Crypto bookmakers: {len(crypto_odds)}")
for slug, data in sorted(crypto_odds.items()):
markets = data.get("markets", {})
print(f" {slug}: {len(markets)} markets")
Step 4: Compare Crypto vs Sharp Pricing
This is where crypto data gets interesting. Compare 1xBet and Stake pricing against Pinnacle (the sharp benchmark):
MARKET_ID = "101" # Full Time Result (1X2)
OUTCOMES = {"101": "Home", "102": "Draw", "103": "Away"}
COMPARE = ["pinnacle", "1xbet", "bcgame", "stake", "bet365"]
print(f"{'Bookmaker':12s} | {'Home':>6s} | {'Draw':>6s} | {'Away':>6s}")
print("-" * 42)
for slug in COMPARE:
book = all_bookmakers.get(slug, {})
market = book.get("markets", {}).get(MARKET_ID, {})
outcomes = market.get("outcomes", {})
prices = {}
for oid, label in OUTCOMES.items():
price = outcomes.get(oid, {}).get("players", {}).get("0", {}).get("price")
prices[label] = f"{price:.2f}" if price else "-"
if any(v != "-" for v in prices.values()):
print(f"{slug:12s} | {prices['Home']:>6s} | {prices['Draw']:>6s} | {prices['Away']:>6s}")
Step 5: Crypto-to-Traditional Arb Scanner
The real power of having crypto bookmaker data: cross-market arbitrage detection. This script finds the best price for each outcome across all 350+ bookmakers (crypto + traditional) and checks for arb opportunities:
MARKET_ID = "101" # Full Time Result
OUTCOMES = {"101": "Home", "102": "Draw", "103": "Away"}
best_prices = {}
for outcome_id, label in OUTCOMES.items():
best_prices[outcome_id] = {"slug": "", "price": 0, "label": label}
# Find best price across ALL bookmakers
for slug, book_data in all_bookmakers.items():
market = book_data.get("markets", {}).get(MARKET_ID, {})
outcomes = market.get("outcomes", {})
for oid in OUTCOMES:
price = outcomes.get(oid, {}).get("players", {}).get("0", {}).get("price")
if price and price > best_prices[oid]["price"]:
best_prices[oid] = {"slug": slug, "price": price, "label": OUTCOMES[oid]}
# Calculate combined implied probability
print("Best prices across 350+ bookmakers:")
total_implied = 0
for oid, data in best_prices.items():
implied = 1 / data["price"]
total_implied += implied
is_crypto = data["slug"] in CRYPTO_SLUGS
tag = " [CRYPTO]" if is_crypto else ""
print(f" {data['label']:5s}: {data['price']:.3f} @ {data['slug']}{tag}")
margin = (total_implied - 1) * 100
print(f"\nCombined implied probability: {total_implied:.4f}")
print(f"Margin: {margin:+.2f}%")
if margin < 0:
print(f"\n>>> ARBITRAGE DETECTED: {abs(margin):.2f}% guaranteed profit <<<")
else:
print(f"\nNo arbitrage (margin {margin:.2f}% above breakeven)")
Why Crypto Books Price Differently
If you're building quantitative models, understanding why crypto bookmaker prices diverge from the sharp market is as important as detecting the divergence.
Different market makers. Regulated bookmakers often license odds feeds from the same providers (Kambi, SBTech). Crypto books like 1xBet and BC.Game use independent pricing engines, creating structural divergence from the "consensus" line.
Different customer base. Crypto books attract recreational crypto holders and regional bettors who are geo-blocked from regulated markets. This shifts the demand curve, especially on crypto-popular sports like esports and MMA.
Slower line movements. Sharp bookmakers (Pinnacle, Singbet) move lines within seconds of information hitting the market. Some crypto books lag behind by minutes — creating short-lived windows for value.
The practical takeaway: if your model only uses Pinnacle and US soft books, you're missing pricing signals from an entire market segment. Adding crypto bookmaker data to your pipeline improves both arbitrage detection and model calibration.
Use Cases
Cross-Market Arbitrage Scanning
The most obvious use case. Crypto bookmakers frequently misprice relative to regulated markets, especially on niche sports and live betting. With OddsPapi, you can scan crypto books alongside Pinnacle, Bet365, DraftKings, and 350+ others in a single API call.
Model Validation & Calibration
If your model predicts outcomes, you want to compare its implied probabilities against as many independent pricing sources as possible. Crypto books provide an "offshore consensus" that's structurally different from the Pinnacle-anchored Western consensus.
Esports & Niche Sports Data
1xBet covers 50+ sports — including CS2, League of Legends, Dota 2, Valorant, and dozens of niche sports that regulated bookmakers don't touch. If you're building esports models, 1xBet data via OddsPapi is likely your best source of market-implied probabilities.
Regional Market Analysis
Stake operates stake.bet.br as a separate Brazilian entity with its own pricing. Combined with Brazilian books like EstrelaBet and Betano BR (also on OddsPapi), you can build regional arbitrage tools targeting the booming Latin American market.
Frequently Asked Questions
Does 1xBet have a public API?
No. 1xBet does not offer a public API for odds data. OddsPapi aggregates 1xBet odds alongside 350+ other bookmakers through a unified REST API, so you can access the data without an account or crypto wallet.
Do I need a crypto wallet to use this?
No. OddsPapi provides the odds data — you don't need accounts with any bookmaker, crypto wallets, or VPNs. Just an API key (free tier available).
Which crypto bookmakers does OddsPapi cover?
Currently 9 crypto bookmakers: 1xBet, Stake, BC.Game, Cloudbet, Duelbits, Rollbit, Roobet, Vave, and Mystake. Stake Brazil (stake.bet.br) is also available as a separate bookmaker.
Are crypto bookmaker odds real-time?
On the REST API (including free tier), odds are near-real-time with polling. For true real-time streaming, OddsPapi's WebSocket API pushes odds updates as they happen — available on Pro tier.
Can I backtest strategies with crypto bookmaker historical data?
Yes. OddsPapi includes free historical odds data on the free tier — including data from all crypto bookmakers. This lets you backtest cross-market arbitrage strategies, model calibration, and line movement analysis without paying for premium plans.
How does crypto bookmaker pricing compare to Pinnacle?
Crypto books typically price independently of the Pinnacle-anchored "sharp consensus." In our testing, crypto books showed 3-5% implied probability divergence from Pinnacle on certain outcomes — creating arbitrage and value opportunities that don't exist in regulated-market-only datasets.
Stop Scraping Offshore Books
Crypto bookmakers hold some of the most valuable pricing data in the betting ecosystem — independent odds, niche market depth, and structural inefficiencies that regulated books don't have.
OddsPapi puts all of it in one API call, alongside Pinnacle, Bet365, DraftKings, and 350+ more bookmakers. No wallets. No VPNs. No scraping.
Get your free API key — 250 requests/month, all crypto bookmakers included, historical data for backtesting. Start scanning in 5 minutes.