Olympus Logo

OLYMPUS

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 sessionId as 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/info to 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: Success
  • 400: Bad request (malformed or missing parameters)
  • 401: Invalid session or authentication failed
  • 403: Action not permitted (e.g., restricted account, region block)
  • 404: Resource not found
  • 429: Rate limit exceeded
  • 5XX: 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_retry in error responses before retrying to avoid duplicate bets.
  • Use /session/status and /session/active to diagnose login/session issues.

Getting Started

  1. Start a session (POST /session/start).
  2. (Optional) Log in (POST /session/login) for account/betting access.
  3. Use your sessionId for all subsequent requests.
  4. 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, default bet365.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.