Documentation
Olympus API Reference
Sessions, authentication, market extraction and betting flows for the Olympus Data API. This is the operational handbook for desks that actually put money at risk.
This console runs on a limited, demo-tier backend. It’s designed for getting a feel for the schema and flows, not for production throughput.
Welcome to the Olympus Data API. This guide is for:
- Data extractors: Automate sports, racing, and props data collection.
- Automated bettors: Log in, place bets, and manage accounts programmatically.
- Developers: Integrate Bet365 data and actions into your own tools, dashboards, or bots.
All endpoints use JSON for requests and responses. A session must be started before most actions.
Authentication & Session Tokens
All requests require a valid sessionId (returned from /session/start).
- Pass the
sessionIdas a parameter or in the request body, as specified per endpoint. - Treat your session token as a secret—do not share it.
- Sessions are tied to the user-agent and proxy used at creation. Changing these may invalidate the session.
Session Lifecycle:
- Sessions expire after inactivity or if Bet365 detects automation.
- Use
/session/infoto check session health. - For account actions (login, betting, account info), you must log in after starting a session.
Error Handling & Debugging
All error responses include a JSON body with details. Common HTTP status codes:
200: Success400: Bad request (malformed or missing parameters)401: Invalid session or authentication failed403: Action not permitted (e.g., restricted account, region block)404: Resource not found429: Rate limit exceeded5XX: Internal server error
Debugging Tips:
- Most responses include a unique request ID in the headers. Save this for support or troubleshooting.
- For bet placement, check for fields like
safe_retryin error responses before retrying to avoid duplicate bets. - Use
/session/statusand/session/activeto diagnose login/session issues.
Getting Started
- Start a session (
POST /session/start). - (Optional) Log in (
POST /session/login) for account/betting access. - Use your
sessionIdfor all subsequent requests. - Extract data, place bets, or retrieve account info as needed.
Best Practice:
Use a unique user-agent and proxy for each session to avoid detection and rate-limiting. Simulate a real device/browser if possible.
Session Management
POST /session/start
Purpose: Start a new session. This is required before any data extraction or account action.
Parameters:
userAgent(string, optional): Custom user-agent string. If omitted, a random one is generated.bootstrap(bool, default: true): Whether to initialize the session with default settings.sst(string, optional): Session security token, if resuming a previous session.sessionId(string, optional): Provide to resume a previous session (rarely used).proxyUrl(string, optional): Proxy to use for this session.country_code(string, optional): Bet365 registration country code.bet365_url(string, optional): Bet365 URL, defaultbet365.com.
Example Request:
{
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"bootstrap": true,
"proxyUrl": "http://user:pass@123.45.67.89:8080"
}
Example Response:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"sst": "abc123xyz",
"proxyUrl": "http://user:pass@123.45.67.89:8080"
}
Usage: start a session before any other API call. Persist the sessionId for all future requests.
GET /session/info?sessionId=...
Purpose: Retrieve metadata about a session, including user-agent, proxy, and status.
Example Response:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"proxyUrl": "http://user:pass@123.45.67.89:8080",
"active": true,
"loggedIn": false,
"createdAt": "2025-11-06T12:34:56Z"
}
GET /session/status?sessionId=...
Purpose: Check if the session is still valid and logged in.
Example Response:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"active": true,
"loggedIn": true,
"expiresIn": 540
}
Usage: call before placing bets or heavy extraction to avoid working on a dead session.
POST /session/keepalive
Purpose: Prevent session timeout due to inactivity. Call every ~10 minutes.
Example Request:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456"
}
Example Response:
{
"ok": true,
"alive": true
}
Authentication & Account Actions
POST /session/login
Purpose: Log in to Bet365 on an existing session. Required for account/bet endpoints.
Parameters:
sessionId(string, required)username(string, required)password(string, required)
Example Request:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"username": "myuser123",
"password": "mypassword!"
}
Example Response (success):
{
"ok": true,
"accountInfo": {
"username": "myuser123",
"country": "UK",
"currency": "GBP",
"balance": 120.50
}
}
GET /account/info?sessionId=...
Purpose: Retrieve account balance and recent bets (requires login).
Example Response:
{
"balance": 120.50,
"currency": "GBP",
"bets": [
{
"betId": "B1234567890",
"stake": 10.00,
"returns": 18.50,
"status": "settled",
"placedAt": "2025-11-06T13:00:00Z"
}
]
}
Market Data Extraction
POST /matchmarkets/markets
Purpose: Retrieve structured MA/PA/MG market data for an event.
Parameters: sessionId, pd (event hash/ID).
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"pd": "#AC#B1#C1#D1002#G938#J20#Q1#F^3#"
}
POST /props
Purpose: Retrieve props data for a given event.
Parameters: sessionId, pd.
GET /splashcontent/competitions_from_session
Purpose: Fetch parsed competition MG records for a session and PD.
Racing Data
GET /racing/racecoupon
Purpose: Retrieve race coupon data for one or more events.
Placing Bets
POST /bet/place
Purpose: Place a single or multiple bet. Requires login.
Always inspect safe_retry on failures before retrying to avoid duplicates.
Generic Proxy & Advanced Usage
POST /request
Purpose: Make a custom upstream request using your session for unsupported flows.
Automation, Anti-Bot & Troubleshooting
Tips
- Rotate user-agents and proxies.
- Use keepalive.
- Log request IDs and error bodies.
- Handle 403/429 with backoff and rotation.
More Endpoints & Advanced Features
Additional endpoints exist for event refresh, cookies, geolocation/device simulation, unsettled bets, cashout and more. If you’re doing something exotic, talk to us.