openapi: 3.2.0
info:
title: iSports Football Odds (18 Agencies) Football Odds (18 Agencies) API
version: '2026-08-09'
description: 'Key-authenticated REST/HTTP data feeds for football (soccer) and basketball: livescores, schedules and results, match events, lineups, live text, statistics, standings, player and team profiles, transfers, referees, multi-language name packs, live-animation feeds, and pre-match / in-play / historical odds across 200+ bookmakers.
All operations are GET, authenticated with an `api_key` query parameter, and return the same `{code, message, data}` envelope with HTTP 200 — including on error (see `code`).
This document was derived by API Evangelist from the endpoint definitions the provider publishes at https://www.isportsapi.com/en/docs.html — iSports API does not publish an OpenAPI definition of its own.'
termsOfService: https://www.isportsapi.com/en/home/terms.html
contact:
name: iSports API
url: https://www.isportsapi.com/en/
x-derived-by: API Evangelist enrichment pipeline
x-derived-from: https://www.isportsapi.com/en/docs.html
x-derived-on: '2026-08-09'
servers:
- url: https://api.isportsapi.com
description: Primary API host
- url: https://api2.isportsapi.com
description: Alternate host, documented for when the primary host is slow or unreachable
security:
- apiKeyQuery: []
tags:
- name: Football Odds (18 Agencies)
paths:
/sport/football/odds/main:
get:
operationId: getFootballOddsMain
summary: Pre-match and In-play Odds (Main)
description: "• This API endpoint returns pre-match and in-play odds for major markets, including Asian Handicap, 1X2, and over/under — with both full-match and first-half breakdowns.\n\n\n\n• Returns matches with odds available for the next 14 days, covering both pre-match and in-play. Use it alongside the Live Odds Changes (Main) endpoint for real-time updates, and Schedule & Results or Match Modify Record to get basic match information.\n\n\n\n• Handicap and over/under line format: Lines are multiples of 0.25. \n\n0 = 0 goals, 0.25 = 0/0.5, 0.5 = 0.5, 0.75 = 0.5/1, 1 = 1 goal, and so on. A positive value means the home team gives goals; a negative value means the away team gives goals.\n\n\n\n• The company ID corresponds to the company:\n\n1: Macauslot, 3: Crown, 4: Ladbrokes, 7: SNAI, 8: Bet365, 9: William Hill, 12: Easybets, 14: Vcbet, 17: Mansion88, 19: Interwetten, 22: 10BET, 24: 12bet, 31: Sbobet, 35: Wewbet, 42: 18bet, 48: HK Jockey Club, 49:Bwin, 50:1xbet \n\n\n\n• Odds format: All odds values are returned in Hong Kong Odds format. \n\nTo convert to other formats: Decimal Odds = HK + 1 (e.g., 0.85 → 1.85); Malay Odds = HK if HK ≤ 1, or −(1 ÷ HK) if HK > 1 (e.g., 0.85 → 0.85, 1.5 → −0.67); Indonesian Odds = HK if HK ≥ 1, or −(1 ÷ HK) if HK < 1 (e.g., 0.85 → −1.18, 1.5 → 1.5); American Odds = HK × 100 if HK ≥ 1, or −(100 ÷ HK) if HK < 1 (e.g., 0.85 → −118, 1.5 → +150).\n\n\n\n• close field: Only supported by selected bookmakers: Macauslot (1), Crown (3), Bet365 (8), Easybets (12), Mansion88 (17), 10BET (22), 12bet (24), Sbobet (31), Wewbet (35), 18bet (42)."
tags:
- Football Odds (18 Agencies)
parameters:
- name: matchId
in: query
required: false
schema:
type: string
description: Filter results to specific matches. Separate multiple IDs with "," (e.g., matchId=322964610,322964611). Maximum 100 match IDs per request.
- name: companyId
in: query
required: false
schema:
type: string
description: Filter results to specific bookmakers. Separate multiple IDs with "," (e.g., companyId=3,8).
responses:
'200':
description: Standard iSports envelope. `code` 0 indicates success; a non-zero `code` carries the error in `message` (HTTP status is 200 in both cases).
content:
application/json:
schema:
type: object
properties:
code:
type: integer
description: 0 on success; 2 on invalid/illegal api_key
message:
type: string
description: '"success" on success; otherwise the error message'
data:
type: array
items:
type: object
properties:
handicap:
type: object
description: Asian Handicap odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
initialHandicap:
type: string
description: "Opening handicap line. \n\n Positive = home team gives goals (e.g., 1 = home −1).\n Negative = away team gives goals (e.g., -1 = home +1). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
initialHome:
type: string
description: Opening Asian Handicap odds — home side (Hong Kong Odds)
initialAway:
type: string
description: Opening Asian Handicap odds — away side (Hong Kong Odds)
instantHandicap:
type: string
description: Current handicap line. Same format as initialHandicap.
instantHome:
type: string
description: Current Asian Handicap odds — home side (Hong Kong Odds)
instantAway:
type: string
description: Current Asian Handicap odds — away side (Hong Kong Odds)
maintenance:
type: boolean
description: "true: Official data is under maintenance or experiencing an anomaly — data updates are temporarily paused \n false: Normal"
inPlay:
type: boolean
description: "true: In-play odds available \n false: Pre-match only"
changeTime:
type: integer
description: Timestamp of the last odds update (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
europeOdds:
type: object
description: 1X2 odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
initialHome:
type: string
description: Opening 1X2 odds — home win (Hong Kong Odds)
initialDraw:
type: string
description: Opening 1X2 odds — draw (Hong Kong Odds)
initialAway:
type: string
description: Opening 1X2 odds — away win (Hong Kong Odds)
instantHome:
type: string
description: Current 1X2 odds — home win (Hong Kong Odds)
instantDraw:
type: string
description: Current 1X2 odds — draw (Hong Kong Odds)
instantAway:
type: string
description: Current 1X2 odds — away win (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of the last odds update (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
overUnder:
type: object
description: Over/under odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
initialHandicap:
type: string
description: "Opening over/under line. \n\n Positive integer = exact goal total (e.g., 1 = 1 goal). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
initialOver:
type: string
description: Opening over odds (Hong Kong Odds)
initialUnder:
type: string
description: Opening under odds (Hong Kong Odds)
instantHandicap:
type: string
description: Current over/under line. Same format as initialHandicap.
instantOver:
type: string
description: Current over odds (Hong Kong Odds)
instantUnder:
type: string
description: Current under odds (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of the last odds update (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
handicapHalf:
type: object
description: First-half Asian Handicap odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
initialHandicap:
type: string
description: Opening first-half handicap line. Same format as handicap initialHandicap.
initialHome:
type: string
description: Opening first-half Asian Handicap odds — home side (Hong Kong Odds)
initialAway:
type: string
description: Opening first-half Asian Handicap odds — away side (Hong Kong Odds)
instantHandicap:
type: string
description: Current first-half handicap line. Same format as initialHandicap.
instantHome:
type: string
description: Current first-half Asian Handicap odds — home side (Hong Kong Odds)
instantAway:
type: string
description: Current first-half Asian Handicap odds — away side (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of the last odds update (Unix timestamp, GMT+0)
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
overUnderHalf:
type: object
description: First-half over/under odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
initialHandicap:
type: string
description: Opening first-half over/under line. Same format as overUnder initialHandicap.
initialOver:
type: string
description: Opening first-half over odds (Hong Kong Odds)
initialUnder:
type: string
description: Opening first-half under odds (Hong Kong Odds)
instantHandicap:
type: string
description: Current first-half over/under line. Same format as initialHandicap.
instantOver:
type: string
description: Current first-half over odds (Hong Kong Odds)
instantUnder:
type: string
description: Current first-half under odds (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of the last odds update (Unix timestamp, GMT+0)
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
externalDocs:
description: iSports API documentation
url: https://www.isportsapi.com/en/docs.html?id=24
x-documentation:
- https://www.isportsapi.com/en/docs.html?id=24
x-rate-limit: This interface is limited to 10 seconds/call;
x-recommended-call-frequency: 1 minute/call
x-plan-products:
- Odds
- Odds Pro
x-doc-modified: '2026-06-29'
/sport/football/odds/main/changes:
get:
operationId: getFootballOddsMainChanges
summary: Live Odds Changes (Main)
description: '• This API endpoint returns real-time odds changes for major market types (Handicap, Europe Odds, and Over/Under) that occurred within the last 20 seconds.
• Data is delivered incrementally in a high-efficiency format, using comma-separated strings within arrays to represent various odds parameters and flags.
• Use it alongside the Pre-match and In-play Odds (Main) endpoint to synchronize and maintain a real-time local odds database.'
tags:
- Football Odds (18 Agencies)
parameters:
- name: matchId
in: query
required: false
schema:
type: string
description: Filter results to specific matches. Separate multiple IDs with "," (e.g., matchId=322964610,322964611). Maximum 100 match IDs per request.
- name: companyId
in: query
required: false
schema:
type: string
description: Filter results to specific bookmakers. Separate multiple IDs with "," (e.g., companyId=3,8).
responses:
'200':
description: Standard iSports envelope. `code` 0 indicates success; a non-zero `code` carries the error in `message` (HTTP status is 200 in both cases).
content:
application/json:
schema:
type: object
properties:
code:
type: integer
description: 0 on success; 2 on invalid/illegal api_key
message:
type: string
description: '"success" on success; otherwise the error message'
data:
type: array
items:
type: object
properties:
handicap:
type: object
description: Asian Handicap odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
instantHandicap:
type: string
description: "Current handicap line. \n\n Positive = home team gives goals (e.g., 1 = home −1).\n Negative = away team gives goals (e.g., -1 = home +1). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
instantHome:
type: string
description: Current Asian Handicap odds — home side (Hong Kong Odds)
instantAway:
type: string
description: Current Asian Handicap odds — away side (Hong Kong Odds)
maintenance:
type: boolean
description: "true: Official data is under maintenance or experiencing an anomaly — data updates are temporarily paused \n false: Normal"
inPlay:
type: boolean
description: "true: In-play odds available \n false: Pre-match only"
changeTime:
type: integer
description: Timestamp of this odds change (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
europeOdds:
type: object
description: 1X2 odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
instantHome:
type: string
description: Current 1X2 odds — home win (Hong Kong Odds)
instantDraw:
type: string
description: Current 1X2 odds — draw (Hong Kong Odds)
instantAway:
type: string
description: Current 1X2 odds — away win (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of this odds change (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
overUnder:
type: object
description: Over/under odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
instantHandicap:
type: string
description: "Current over/under line. \n\n Positive integer = exact goal total (e.g., 1 = 1 goal). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
instantOver:
type: string
description: Current over odds (Hong Kong Odds)
instantUnder:
type: string
description: Current under odds (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of this odds change (Unix timestamp, GMT+0)
close:
type: boolean
description: "true: Betting is temporarily suspended or in-play has stopped \n false: Betting is open."
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
handicapHalf:
type: object
description: First-half Asian Handicap odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
instantHandicap:
type: string
description: "Current first-half handicap line. n\n Positive = home team gives goals (e.g., 1 = home −1).\n Negative = away team gives goals (e.g., -1 = home +1). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
instantHome:
type: string
description: Current first-half Asian Handicap odds — home side (Hong Kong Odds)
instantAway:
type: string
description: Current first-half Asian Handicap odds — away side (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of this odds change (Unix timestamp, GMT+0)
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
overUnderHalf:
type: object
description: First-half over/under odds. Each entry is a comma-separated string containing the fields below.
properties:
matchId:
type: string
companyId:
type: string
description: "1: Macauslot\n 3: Crown\n 4: Ladbrokes\n 7: SNAI\n 8: Bet365\n 9: William Hill\n 12: Easybets\n 14: Vcbet\n 17: Mansion88\n 19: Interwetten\n 22: 10BET\n 24: 12bet\n 31: Sbobet\n 35: Wewbet\n 42: 18bet\n 48: HK Jockey Club"
instantHandicap:
type: string
description: "Current first-half over/under line. \n\n Positive integer = exact goal total (e.g., 1 = 1 goal). Quarter lines as decimals (e.g., 1.25 = 1/1.5)."
instantOver:
type: string
description: Current first-half over odds (Hong Kong Odds)
instantUnder:
type: string
description: Current first-half under odds (Hong Kong Odds)
changeTime:
type: integer
description: Timestamp of this odds change (Unix timestamp, GMT+0)
Odds Type:
type: string
description: "Odds stage\n 0: Unable to determine\n 1: Early odds \n 2: Pre-match closing odds (after early odds, before kick-off) \n 3: In-play odds"
externalDocs:
description: iSports API documentation
url: https://www.isportsapi.com/en/docs.html?id=25
x-documentation:
- https://www.isportsapi.com/en/docs.html?id=25
x-rate-limit: This interface is limited to 1 second/call;
x-recommended-call-frequency: 2 seconds/call
x-plan-products:
- Odds
- Odds Pro
x-doc-modified: '2026-06-29'
/sport/football/odds/main/history:
get:
operationId: getFootballOddsMainHistory
summary: Historical Odds (Main)
description: "• This API endpoint returns historical opening and closing odds for major football betting markets.It defaults to records from GMT+0 0:00 today, while supporting a date parameter for historical back-checking up to one month.\n\n\n\n• Handicap and over/under line format: Lines are multiples of 0.25. \n\n0 = 0 goals, 0.25 = 0/0.5, 0.5 = 0.5, 0.75 = 0.5/1, 1 = 1 goal, and so on. A positive value means the home team gives goals; a negative value means the away team gives goals.\n\n\n\n• Odds format: All odds values are returned in Hong Kong Odds format. \n\nTo convert to other formats: Decimal Odds = HK + 1 (e.g., 0.85 → 1.85); Malay Odds = HK if HK ≤ 1, or −(1 ÷ HK) if HK > 1 (e.g., 0.85 → 0.85, 1.5 → −0.67); Indonesian Odds = HK if HK ≥ 1, or −(1 ÷ HK) if HK < 1 (e.g., 0.85 → −1.18, 1.5 → 1.5); American Odds = HK × 100 if HK ≥ 1, or −(100 ÷ HK) if HK < 1 (e.g., 0.85 → −118, 1.5 → +150).\n\n\n\n• The company ID corresponds to the company:\n\n1: Macauslot, 3: Crown, 4: Ladbrokes, 7: SNAI, 8: Bet365, 9: William Hill, 12: Easybets, 14: Vcbet, 17: Mansion88, 19: Interwetten, 22: 10BET, 24: 12bet, 31: Sbobet, 35: Wewbet, 42: 18bet, 48: HK Jockey Club, 49:Bwin, 50:1xbet\n\n\n\n• close field: Only supported by selected bookmakers: Macauslot (1), Crown (3), Bet365 (8), Easybets (12), Mansion88 (17), 10BET (22), 12bet (24), Sbobet (31), Wewbet (35), 18bet (42)."
tags:
- Football Odds (18 Agencies)
parameters:
- name: date
in: query
required: false
schema:
type: string
description: "Filter results by date (GMT+0 00:00–23:59). Supports back-checking within the past month. Format: yyyy-MM-dd (e.g., date=2026-06-18). \n\n\n\nIf omitted, returns data for the current day."
- name: matchId
in: query
required: false
schema:
type: string
description: Filter results to specific matches. Separate multiple IDs with "," (e.g., matchId=322964610,322964611). Maximum 100 match IDs per request.
- name: companyId
in: query
required: false
schema:
type: string
description: Filter results to specific bookmakers. Separate multiple IDs with "," (e.g., companyId=3,8).
responses:
'200':
description: Standard iSports envelope. `code` 0 indicates success; a non-zero `code` carries the error in `message` (HTTP status is 200 in both cases).
content:
application/json:
schema:
type: object
properties:
code:
type: integer
description: 0 on success; 2 on invalid/illegal api_key
message:
type: string
description: '"success" on success; otherwise the error message'
data:
type: array
items:
type: object
properties:
handicap:
type: object
description: Asian Handicap odds. Each entry is a comma-separated string contain
# --- truncated at 32 KB (157 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/isports-api/refs/heads/main/openapi/isports-api-football-odds-18-agencies-api-openapi.yml