Welcome to the Hades Data API. This guide is for:
All endpoints use JSON for requests and responses. A session must be started before most actions.
All requests require a valid sessionId (returned from /session/start).
sessionId as a parameter or in the request body, as specified per endpoint./session/info to check session health.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 errorsafe_retry in error responses before retrying to avoid duplicate bets./session/status and /session/active to diagnose login/session issues.POST /session/start).POST /session/login) for account/betting access.sessionId for all subsequent requests.Use a unique user-agent and proxy for each session to avoid detection and rate-limiting. Simulate a real device/browser if possible.
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 Codebet365_url (string, optional): Bet365 URL, default bet365.comExample 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 Scenario:
Start a session before any other API call. Save the sessionId for all future requests.
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"
}
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 Scenario:
Call this endpoint before placing a bet or extracting data to ensure your session is still alive.
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
}
Tip: Automate this call in your bot or script to avoid forced logouts.
Purpose: Log in to Bet365 using your credentials on an existing session. Required for account actions and bet placement.
Parameters:
sessionId (string, required): The session to authenticate.username (string, required): Bet365 account username.password (string, required): Bet365 account password.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
}
}
Example Response (Failure):
{
"ok": false,
"error": "Invalid credentials or account restricted."
}
Usage Scenario:
Call this after starting a session. If you get an error, check your credentials, proxy, and user-agent.
Purpose: Retrieve account balance, bet history, and other account details. (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"
},
{
"betId": "B1234567891",
"stake": 5.00,
"returns": 0.00,
"status": "lost",
"placedAt": "2025-11-05T20:00:00Z"
}
]
}
Usage Scenario:
Check your account balance before placing a bet, or retrieve your bet history for analysis.
Purpose: Retrieve structured market data (MA/PA/MG records) for a given event or fixture. Useful for odds, lines, and market availability.
Parameters:
sessionId (string, required): Your active session.pd (string, required): Event hash or ID (from Bet365 URLs or data dumps).Example Request:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"pd": "#AC#B1#C1#D1002#G938#J20#Q1#F^3#"
}
Example Response:
{
"ma": [
{"id": 1, "name": "Match Winner", "selections": [ ... ]},
{"id": 2, "name": "Total Goals", "selections": [ ... ]}
],
"pa": [ ... ],
"mg": [ ... ]
}
Usage Scenario:
Extract all available markets and odds for a specific match or event.
Purpose: Retrieve props data for a given event or fixture. Props include player, team, and special markets.
Parameters:
sessionId (string, required): Your active session.pd (string, required): Event hash or ID.Example Request:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"pd": "#AC#B1#C1#D1002#G938#J20#Q1#F^3#"
}
Example Response:
{
"parsed": [
{"type": "Player Points", "options": [ ... ]},
{"type": "Team Specials", "options": [ ... ]}
]
}
Usage Scenario:
Extract player and team prop markets for advanced analytics or betting.
Purpose: Fetch competitions splash for a session and PD. Returns parsed MG records for available competitions.
Example Response:
{
"competitions": [
{"id": 1001, "name": "Premier League", "events": [ ... ]},
{"id": 1002, "name": "La Liga", "events": [ ... ]}
]
}
Usage Scenario:
List all competitions and events available for a given session and event context.
Purpose: Retrieve race coupon data for one or more events. Useful for horse and greyhound racing automation.
Parameters:
sessionId (string, required): Your active session.lid, zid, cid, cgid, ctid (strings, required): Location/event identifiers (from Bet365 data or URLs).pd (string or list, required): Event hash or ID(s), comma-separated for multiple.Example Request (query params):
/racing/racecoupon?sessionId=b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456&lid=1&zid=2&cid=3&cgid=4&ctid=5&pd=#AC#B1#C1#D1002#G938#J20#Q1#F^3#
Example Response:
{
"parsedSummary": {
"raceId": "R12345",
"runners": [ ... ],
"startTime": "2025-11-06T15:00:00Z"
},
"hierarchy": {
"track": "Ascot",
"country": "UK"
}
}
Usage Scenario:
Extract all runners and race details for a specific event or set of events.
Purpose: Place a bet using your session. (Requires login)
Parameters:
sessionId (string, required): Your active session.stake (number, required): Amount to bet.selectionId (string, required): The selection to bet on (from market data).marketId (string, required): The market to bet in.Example Request (single bet):
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"stake": 10.00,
"selectionId": "S123456",
"marketId": "M98765"
}
Example Request (multiple bet):
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"stake": 5.00,
"selections": [
{"selectionId": "S123456", "marketId": "M98765"},
{"selectionId": "S654321", "marketId": "M12345"}
],
"type": "multiples"
}
Example Response (success):
{
"ok": true,
"betId": "B1234567890",
"returns": 18.50
}
Example Response (failure):
{
"ok": false,
"error": "Insufficient funds.",
"safe_retry": false
}
Usage Scenarios:
- Place a single or multiple bet. For multiples, provide all selections in the selections array.
- Always check for safe_retry before retrying a failed bet to avoid duplicates.
- If you receive a geolocation or device error, use the relevant endpoints to verify your session.
Purpose: Make a custom upstream request using your session. Useful for advanced scraping, custom endpoints, or unsupported actions.
Parameters:
sessionId (string, required): Your active session.host (string, required): Upstream host (e.g., "www.bet365.com").path (string, required): Path to request (e.g., "/sports").params (object, optional): Query/body parameters.method (string, required): HTTP method ("GET" or "POST").Example Request:
{
"sessionId": "b365-2e1f8c7a-1234-4bcd-9e8f-abcdef123456",
"host": "www.bet365.com",
"path": "/sports",
"params": {"foo": "bar"},
"method": "GET"
}
Example Response:
{
"status": 200,
"body": "...raw response from upstream..."
}
Usage Scenario:
Use this endpoint for unsupported or experimental actions, or to fetch raw data from Bet365. Always monitor for errors and rate limits.
/session/info and /session/status to check session health./session/info and /account/info.safe_retry in the response.Other endpoints are available for:
If you need something not listed, just ask or consult the full API documentation.