Bet365 Real-Time Odds REST API | Live & Pre-Match Betting Odds avatar

Bet365 Real-Time Odds REST API | Live & Pre-Match Betting Odds

Pricing

from $2.99 / 1,000 requests

Go to Apify Store
Bet365 Real-Time Odds REST API | Live & Pre-Match Betting Odds

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

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

5

Monthly active users

5 days ago

Last modified

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

Bet365 — live odds across 39 sports
Step 1 — Pick your endpoint
Step 2 — Call the API
Step 3 — Real odds, structured JSON, instant response

 

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
 Bet365 Odds
➤ You are here
 DraftKings Odds
Lines, props, SGP
 BetMGM Odds
18 states, 22 sports
 PrizePicks Props
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-league or nba instead of opaque IDs
  • Outrights -- league winner, top scorer, relegation, and other futures markets
  • Day Pass -- $6.99 for 24h of real-time data. /inplay and /match/{id} with ~1ms latency, 60+ markets per match, no per-request charges

 

Endpoints

Discovery (free)

EndpointMethodDescription
/healthGETHealth check and connection status
/sportsGETAll 49 sports with slugs
/competitionsGETAll competitions for a sport with slugs

Odds (per request or included in Day Pass)

EndpointMethodPer callDescription
/competition/{id}GET$0.003All matches in a competition with 1X2/spread/total odds
/match/{id}GET$0.005Full match detail: all markets, player props, selections
/searchGET$0.002Search matches, competitions, teams
/inplayGET$0.002Full in-play schedule across all sports
/outrightsGET$0.002Futures catalog (league winner, top scorer, relegation)
/outright/{id}GET$0.003Specific outright market odds

Day Pass

EndpointMethodDescription
POST /day-passPOSTActivate 24h Day Pass ($6.99). All endpoints become free for 24 hours. /inplay and /match/{id} serve real-time data (~1ms).
GET /day-passGETCheck 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

ParamTypeDefaultDescription
sportstringsoccerSport slug: soccer, basketball, tennis, ice-hockey, american-football, baseball, etc.

/competition/{id}

ParamTypeDefaultDescription
sportstringrequiredSport slug
odds_formatstringdecimaldecimal, 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}

ParamTypeDefaultDescription
tabstringallMarket tab: popular, asian, goals, half, corners, specials. Omit for all markets.
odds_formatstringdecimaldecimal, fractional, or american
ParamTypeDefaultDescription
qstringrequiredSearch query. Matches against team names, competition names, player names.
odds_formatstringdecimaldecimal, fractional, or american

/inplay

ParamTypeDefaultDescription
odds_formatstringdecimaldecimal, fractional, or american

/outrights

ParamTypeDefaultDescription
sportstringrequiredSport slug

/outright/{id}

ParamTypeDefaultDescription
odds_formatstringdecimaldecimal, fractional, or american

 

Competition Slugs

Use human-readable slugs instead of opaque IDs. Pass them as {id} on /competition/{id}.

SlugCompetition
england-premier-leagueEngland Premier League
spain-la-ligaSpain La Liga
germany-bundesligaGermany Bundesliga
italy-serie-aItaly Serie A
france-ligue-1France Ligue 1
champions-leagueUEFA Champions League
europa-leagueUEFA Europa League
nbaNBA
nflNFL
nhlNHL
mlbMLB
atp-wimbledonATP 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."
}
StatusErrorMeaning
400Unknown competitionSlug or ID not recognized
400Unknown sportSport slug not valid
400Missing required parameterRequired query param missing
404Match not foundMatch ID doesn't exist
404Outright not foundOutright ID doesn't exist
500Internal errorUnexpected 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:

TabMarkets included
popularFull Time Result, Both Teams to Score, Over/Under 2.5, Double Chance
asianAsian Handicap, Asian Total, Asian Corners
goalsOver/Under, Correct Score, Half Time/Full Time, Goals Odd/Even
halfHalf Time Result, Half Time Over/Under, Half Time Correct Score
cornersTotal Corners, Match Corners, Team Corners, Corner Handicap
specialsPlayer 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:

SportSlugCompetitions
Soccersoccer500+
Basketballbasketball150+
Tennistennis200+
Ice Hockeyice-hockey80+
American Footballamerican-football20+
Baseballbaseball30+
Cricketcricket50+
Dartsdarts15+
Esportsesports40+
MMAmma10+

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.

PlanCostBest for
Per request$0.003/callOccasional lookups, monitoring a few markets
Day Pass$6.99/24hHeavy 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

FeaturePer requestDay Pass
Response timeStandardFaster
/inplay dataSnapshot at request timeReal-time
/match/{id} marketsUp to 50+ markets60+ markets with live updates
Per-request charges$0.003/callNone for 24h
Data freshnessPoint-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.