Bet365 Real-Time Odds REST API | Live & Pre-Match Betting Odds
Pricing
from $2.99 / 1,000 requests
Bet365 Real-Time Odds REST API | Live & Pre-Match Betting Odds
Bet365 betting odds in real time via REST API. Pre-match and live odds for 39 sports. Full Time Result, Asian Handicap, Over/Under, Player Props, Outrights. Decimal, fractional, American formats. Instant responses via Standby mode.
Pricing
from $2.99 / 1,000 requests
Rating
0.0
(0)
Developer
Zen Studio
Actor stats
0
Bookmarked
8
Total users
5
Monthly active users
5 days ago
Last modified
Categories
Share
Real-time Bet365 odds via REST API. Pre-match and live odds for 39 sports. Full Time Result, Asian Handicap, Over/Under, Player Props, Outrights. Day Pass for real-time data.
11 endpoints. $0.003 per request or $6.99/day unlimited. JSON in, JSON out.
How It Works
|
|
|
|
|
|
|
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start building with this API.
Bet365 Odds API. Base: https://zen-studio--bet365-real-time-odds.apify.actor Auth: ?token=APIFY_TOKEN (get at https://console.apify.com/account/integrations). Endpoints: GET /sports (all sports with slugs), GET /competitions?sport=X (competitions for a sport), GET /competition/{id}?sport=X (match odds for a competition, id=slug like nba or england-premier-league), GET /match/{id}?tab=X (full match detail with all markets and player props, tabs: popular/asian/goals/half/corners/specials), GET /search?q=X (search matches/teams), GET /inplay (in-play schedule), GET /outrights?sport=X (futures catalog), GET /outright/{id} (outright odds), POST /day-pass (activate $6.99/24h unlimited pass with real-time data), GET /day-pass (check pass status). All odds endpoints accept odds_format=decimal|fractional|american. With Day Pass active: all endpoints free, /inplay and /match/{id} serve ~1ms real-time data. Competition slugs: nba ncaab nhl mlb afl england-premier-league england-championship scotland-premiership euroleague.
Also available as an MCP server — add zen-studio/bet365-real-time-odds for natural language access.
| Zen Studio Sports Betting • Real-time odds across every major sportsbook | |||
|
➤ You are here |
Lines, props, SGP |
18 states, 22 sports |
Projections and lines |
Key Features
- Full market depth -- match result, Asian handicap, over/under, both teams to score, correct score, player props, corners, specials, and more
- 39 sports -- soccer, basketball, tennis, ice hockey, American football, baseball, cricket, darts, esports, MMA, and 29 more
- Three odds formats -- decimal (default), fractional, American on every endpoint
- Human-readable slugs -- use
england-premier-leagueornbainstead of opaque IDs - Outrights -- league winner, top scorer, relegation, and other futures markets
- Day Pass -- $6.99 for 24h of real-time data.
/inplayand/match/{id}with ~1ms latency, 60+ markets per match, no per-request charges
Endpoints
Discovery (free)
| Endpoint | Method | Description |
|---|---|---|
/health | GET | Health check and connection status |
/sports | GET | All 49 sports with slugs |
/competitions | GET | All competitions for a sport with slugs |
Odds (per request or included in Day Pass)
| Endpoint | Method | Per call | Description |
|---|---|---|---|
/competition/{id} | GET | $0.003 | All matches in a competition with 1X2/spread/total odds |
/match/{id} | GET | $0.005 | Full match detail: all markets, player props, selections |
/search | GET | $0.002 | Search matches, competitions, teams |
/inplay | GET | $0.002 | Full in-play schedule across all sports |
/outrights | GET | $0.002 | Futures catalog (league winner, top scorer, relegation) |
/outright/{id} | GET | $0.003 | Specific outright market odds |
Day Pass
| Endpoint | Method | Description |
|---|---|---|
POST /day-pass | POST | Activate 24h Day Pass ($6.99). All endpoints become free for 24 hours. /inplay and /match/{id} serve real-time data (~1ms). |
GET /day-pass | GET | Check Day Pass status (active/expired/none, remaining hours) |
Quick Start
1. List sports
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/sports?token=YOUR_APIFY_TOKEN"
2. Get soccer competitions
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/competitions?sport=soccer&token=YOUR_APIFY_TOKEN"
3. Get Premier League match odds
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/competition/england-premier-league?sport=soccer&token=YOUR_APIFY_TOKEN"
4. Get full match detail with all markets
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/match/e282e4f7ddd8?token=YOUR_APIFY_TOKEN"
5. Get Asian handicap markets only
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/match/e282e4f7ddd8?tab=asian&token=YOUR_APIFY_TOKEN"
6. Search for a team
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/search?q=lakers&token=YOUR_APIFY_TOKEN"
7. Get in-play schedule
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/inplay?token=YOUR_APIFY_TOKEN"
8. Get outright markets for soccer
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/outrights?sport=soccer&token=YOUR_APIFY_TOKEN"
9. Get outright odds
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/outright/6d09504757e3?token=YOUR_APIFY_TOKEN"
Parameters
/sports
No parameters. Returns all 49 sports.
/competitions
| Param | Type | Default | Description |
|---|---|---|---|
sport | string | soccer | Sport slug: soccer, basketball, tennis, ice-hockey, american-football, baseball, etc. |
/competition/{id}
| Param | Type | Default | Description |
|---|---|---|---|
sport | string | required | Sport slug |
odds_format | string | decimal | decimal, fractional, or american |
The {id} can be a human-readable slug (e.g., england-premier-league, nba) or an opaque ID returned by /competitions. 56 competitions have hardcoded slugs.
/match/{id}
| Param | Type | Default | Description |
|---|---|---|---|
tab | string | all | Market tab: popular, asian, goals, half, corners, specials. Omit for all markets. |
odds_format | string | decimal | decimal, fractional, or american |
/search
| Param | Type | Default | Description |
|---|---|---|---|
q | string | required | Search query. Matches against team names, competition names, player names. |
odds_format | string | decimal | decimal, fractional, or american |
/inplay
| Param | Type | Default | Description |
|---|---|---|---|
odds_format | string | decimal | decimal, fractional, or american |
/outrights
| Param | Type | Default | Description |
|---|---|---|---|
sport | string | required | Sport slug |
/outright/{id}
| Param | Type | Default | Description |
|---|---|---|---|
odds_format | string | decimal | decimal, fractional, or american |
Competition Slugs
Use human-readable slugs instead of opaque IDs. Pass them as {id} on /competition/{id}.
| Slug | Competition |
|---|---|
england-premier-league | England Premier League |
spain-la-liga | Spain La Liga |
germany-bundesliga | Germany Bundesliga |
italy-serie-a | Italy Serie A |
france-ligue-1 | France Ligue 1 |
champions-league | UEFA Champions League |
europa-league | UEFA Europa League |
nba | NBA |
nfl | NFL |
nhl | NHL |
mlb | MLB |
atp-wimbledon | ATP Wimbledon |
56 slugs built in. Use /competitions to discover all available competitions with their slugs and IDs.
Opaque IDs also work: the ID returned by /competitions can be passed directly to /competition/{id}.
Response Format
Success
Every endpoint returns a success field.
{"success": true,"count": 12,"...": "endpoint-specific data"}
Error
{"success": false,"error": "Unknown competition: xyz. Use /competitions to discover available IDs."}
| Status | Error | Meaning |
|---|---|---|
| 400 | Unknown competition | Slug or ID not recognized |
| 400 | Unknown sport | Sport slug not valid |
| 400 | Missing required parameter | Required query param missing |
| 404 | Match not found | Match ID doesn't exist |
| 404 | Outright not found | Outright ID doesn't exist |
| 500 | Internal error | Unexpected server error |
Output Examples
/sports
{"success": true,"count": 49,"sports": [{"name": "Soccer", "sport_id": "800b8bd9a54a", "slug": "soccer"},{"name": "Basketball", "sport_id": "3fece606a9a4", "slug": "basketball"},{"name": "Tennis", "sport_id": "abc123def456", "slug": "tennis"}]}
/competition/england-premier-league?sport=soccer
{"success": true,"competition": "England Premier League","league_code": "FA Barclaycard","market": "market_40","matches": [{"match_id": "e282e4f7ddd8","home": "Arsenal","away": "Bournemouth","kickoff": "2026-04-11T12:30:00+00:00","odds": {"1": {"odds": 1.444, "odds_fractional": "4/9", "suspended": false},"X": {"odds": 4.1, "odds_fractional": "31/10", "suspended": false},"2": {"odds": 7.5, "odds_fractional": "13/2", "suspended": false}}}]}
/match/{id}
{"success": true,"match_id": "e282e4f7ddd8","home": "Arsenal","away": "Bournemouth","competition": "FA Barclaycard","kickoff": "2026-04-11T12:30:00+00:00","status": "pre_match","markets": [{"name": "Full Time Result","selections": [{"name": "Arsenal", "odds": 1.444, "odds_fractional": "4/9"},{"name": "Draw", "odds": 4.1, "odds_fractional": "31/10"},{"name": "Bournemouth", "odds": 7.5, "odds_fractional": "13/2"}]},{"name": "Player to Score or Assist","selections": [{"name": "Bukayo Saka", "last_5": "0,1,0,0,1"},{"name": "Gabriel Jesus", "last_5": "0,0,1,0,0"}]}]}
The /match/{id} endpoint returns every available market for the match. Use the tab parameter to filter by category:
| Tab | Markets included |
|---|---|
popular | Full Time Result, Both Teams to Score, Over/Under 2.5, Double Chance |
asian | Asian Handicap, Asian Total, Asian Corners |
goals | Over/Under, Correct Score, Half Time/Full Time, Goals Odd/Even |
half | Half Time Result, Half Time Over/Under, Half Time Correct Score |
corners | Total Corners, Match Corners, Team Corners, Corner Handicap |
specials | Player props, cards, substitutions, booking points |
/search?q=lakers
{"success": true,"query": "lakers","count": 32,"results": [{"match_id": "eba4aecae217","home": "WAS Wizards","away": "LA Lakers","sport": "Basketball","competition": "NBA","odds": [{"name": "1", "odds": 1.909, "line": "+16.0", "bet_summary": "WAS Wizards +16.0"},{"name": "2", "odds": 1.909, "line": "-16.0", "bet_summary": "LA Lakers -16.0"}]}]}
/outrights?sport=soccer
{"success": true,"sport": "Soccer","competitions": [{"name": "England Premier League 2025/26","country": "United Kingdom","markets": [{"name": "To Win Outright", "outright_id": "6d09504757e3"},{"name": "Top Goalscorer", "outright_id": "88277a57c3f7"},{"name": "To be Relegated", "outright_id": "3dc17a054c17"}]}]}
/outright/{id}
{"success": true,"competition": "England Premier League 2025/26","market": "Win Only","selections": [{"name": "Arsenal", "odds": 1.1, "odds_fractional": "1/10"},{"name": "Man City", "odds": 7.0, "odds_fractional": "6/1"},{"name": "Man Utd", "odds": 501.0, "odds_fractional": "500/1"}]}
Supported Sports
39 sports available. The most popular:
| Sport | Slug | Competitions |
|---|---|---|
| Soccer | soccer | 500+ |
| Basketball | basketball | 150+ |
| Tennis | tennis | 200+ |
| Ice Hockey | ice-hockey | 80+ |
| American Football | american-football | 20+ |
| Baseball | baseball | 30+ |
| Cricket | cricket | 50+ |
| Darts | darts | 15+ |
| Esports | esports | 40+ |
| MMA | mma | 10+ |
Use /sports for the full list of all 49 sports with their slugs.
Pricing
Two options: pay per request, or activate a Day Pass for unlimited access.
| Plan | Cost | Best for |
|---|---|---|
| Per request | $0.003/call | Occasional lookups, monitoring a few markets |
| Day Pass | $6.99/24h | Heavy polling, real-time live odds, arbitrage bots |
With a Day Pass active, all endpoints are free for 24 hours. Plus, /inplay and /match/{id} serve real-time data with faster response times.
Break-even point: ~2,330 requests/day. If you poll more than that, the Day Pass saves money.
Activate a Day Pass
$curl -X POST "https://zen-studio--bet365-real-time-odds.apify.actor/day-pass?token=YOUR_APIFY_TOKEN"
{"status": "activated","expires_at": "2026-04-02T09:30:00+00:00","remaining_hours": 24.0,"message": "Day pass activated. All endpoints now serve real-time data for 24 hours."}
Check status anytime:
$curl "https://zen-studio--bet365-real-time-odds.apify.actor/day-pass?token=YOUR_APIFY_TOKEN"
What the Day Pass unlocks
| Feature | Per request | Day Pass |
|---|---|---|
| Response time | Standard | Faster |
/inplay data | Snapshot at request time | Real-time |
/match/{id} markets | Up to 50+ markets | 60+ markets with live updates |
| Per-request charges | $0.003/call | None for 24h |
| Data freshness | Point-in-time | <500ms from bet365 |
When the Day Pass expires, you seamlessly fall back to per-request pricing. No interruption, no config change needed.
Use Cases
Odds Comparison
Pull competition odds from /competition/{id} across multiple leagues. Compare with other bookmakers for value bets and arbitrage opportunities.
Pre-Match Analysis
Fetch full market depth via /match/{id} before kickoff. Access Asian handicaps, over/under lines, correct score, player props, and 50+ other markets per match.
In-Play Monitoring
Poll /inplay for live events. Track which games are currently in play across all 39 sports. Combine with /match/{id} for live market prices.
Outright Tracking
Monitor futures markets via /outrights and /outright/{id}. Track league winner odds, top scorer markets, relegation prices throughout the season.
Real-Time Arbitrage
Activate a Day Pass and poll /inplay every few seconds. The real-time data updates within 500ms of bet365, giving you near-instant odds movements. Compare with other bookmakers for live arbitrage windows.
Automated Alerts
Set up a cron job that polls specific competitions and notifies when odds cross a threshold. Cost: under $1/month for hourly monitoring of 5 leagues.
FAQ
What is Standby mode? The actor runs as an always-on HTTP server. No queue, no cold start. Apify keeps it warm and routes requests directly. You get sub-second response times. See the Standby tab on the actor page for the hostname.
How much does Standby mode cost to keep running? You don't pay anything while it's idle. The actor sleeps automatically after a period of no requests and wakes up on the next call (cold start takes 2-3 seconds). You only pay compute for hours it's actually running. At 256 MB, that's roughly $0.10/hour. If you make a few requests per day, you'll barely notice it on your bill.
What odds formats are supported?
Decimal (default), fractional, and American. Pass odds_format=fractional or odds_format=american on any odds endpoint. Decimal is always included regardless of the format you choose.
How do I find competition IDs?
Start with /sports to get sport slugs. Then /competitions?sport=soccer to get competition slugs and IDs. 56 competitions have human-readable slugs like england-premier-league or nba. All others use opaque IDs.
What markets are available on /match/{id}?
Every market Bet365 offers for that match. This typically includes: Full Time Result, Double Chance, Both Teams to Score, Over/Under, Asian Handicap, Correct Score, Half Time/Full Time, Player Props (goals, assists, cards, shots), Corners, Specials, and more. Use the tab parameter to filter by category.
Can I get historical odds? No. This actor returns current live odds only. Odds change continuously and are not stored historically.
How often should I poll for odds updates? Odds update frequently, especially close to kickoff and during live events. Every 1-5 minutes is typical for pre-match monitoring. For in-play odds, every 30-60 seconds. With a Day Pass, you can poll every few seconds at no extra cost.
What is the Day Pass?
A one-time $6.99 charge that gives you 24 hours of unlimited access to all endpoints with no per-request fees. /inplay and /match/{id} serve real-time data. Activate with POST /day-pass.
What happens when my Day Pass expires?
You seamlessly fall back to per-request pricing ($0.003/call). No errors, no downtime. The next POST /day-pass activates a new 24-hour window.
Is the Day Pass per user or per actor? Per user. Each Apify account gets its own Day Pass timer. Multiple users can each have their own active pass.
Why is the Day Pass so much faster? Without a Day Pass, each request fetches live data on demand. With a Day Pass, data is always fresh and responses are faster.
Can I increase the standby idle timeout? Yes. Create a Task from this actor and set a custom idle timeout in the Standby tab. Higher timeouts keep the actor alive longer between requests but increase compute costs. The default (300 seconds) works well for polling every 30-60 seconds.
What's the difference between /competition/{id} and /match/{id}?
/competition/{id} returns all matches in a competition with headline odds (1X2, spread, total). /match/{id} returns full market depth for a single match, including player props, corners, specials, and every other available market.
Are in-play odds available?
Yes. Matches that are currently in play have live odds. Use /inplay to find active events, then /match/{id} for live market prices.
What's the difference between this and the Bet365 Live Scores actor? This actor provides betting odds and markets. The Live Scores actor provides real-time scores, lineups, events, and match statistics. Different data, different use cases. Use both together for a complete picture.
Can I use slugs everywhere?
Slugs work on /competition/{id} for the 56 hardcoded competitions. For /match/{id} and /outright/{id}, use the opaque IDs returned by the discovery endpoints.
Support
Bug reports, feature requests, or questions? Open an issue in the Issues tab.
Pre-match and in-play betting odds. 39 sports. Every market. $0.003/request or $6.99/day unlimited.

