接口说明
按需请求
- 请求方式
GET- 请求地址
https://api.superscore.cn/football/odds/oddsHistoryById- Content-Type
application/x-www-form-urlencoded;charset=UTF-8
请求头与鉴权
| 字段 | 类型 | 必填 | 文档示例值 | 说明 |
|---|---|---|---|---|
token | string | 是 | 传商户KEY | token(传商户KEY)仅供测试,正式站请设置IP |
商户密钥仅保存在自己的服务端。测试 token 与正式 IP 授权的适用范围以本表及账户授权说明为准。
请求参数
Query 查询参数
| 字段 | 类型 | 必填 | 文档示例值 | 说明 |
|---|---|---|---|---|
matchId | int32 | 是 | 0 | 比赛ID(必填) |
bookmakerId | int32 | 否 | 0 | 盘口公司ID(可选,不填返回所有) |
marketId | int32 | 否 | 0 | 市场ID(可选,不填返回所有) |
示例值用于说明字段;比赛、球队、联赛等 ID 应从实际接口取得,不能直接使用占位值。字段中的日期、枚举、分页范围与更新建议完整保留原始说明。
调用示例
替换 YOUR_MERCHANT_KEY、YOUR_MATCH_ID 等占位值后,在已授权的服务端调用。示例不会在本页面发起真实请求。
cURL
curl --get 'https://api.superscore.cn/football/odds/oddsHistoryById' \
--header 'token: YOUR_MERCHANT_KEY' \
--data-urlencode 'matchId=YOUR_MATCH_ID' \
--data-urlencode 'bookmakerId=YOUR_BOOKMAKER_ID' \
--data-urlencode 'marketId=YOUR_MARKET_ID'JavaScript / Node.js
// 仅在服务端保存商户密钥;替换示例占位值。
const url = new URL("https://api.superscore.cn/football/odds/oddsHistoryById");
url.search = new URLSearchParams({
"matchId": "YOUR_MATCH_ID",
"bookmakerId": "YOUR_BOOKMAKER_ID",
"marketId": "YOUR_MARKET_ID"
});
const response = await fetch(url, {
method: "GET",
headers: {
"token": "YOUR_MERCHANT_KEY"
}
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const result = await response.json();
if (result.success !== true) throw new Error(String(result.message || result.code));
console.log(result.data);Python 标准库示例
# 标准库示例;商户密钥仅保存在服务端。
import json
from urllib.parse import urlencode
from urllib.request import Request, urlopen
parameters = {
"matchId": "YOUR_MATCH_ID",
"bookmakerId": "YOUR_BOOKMAKER_ID",
"marketId": "YOUR_MARKET_ID"
}
headers = {
"token": "YOUR_MERCHANT_KEY"
}
url = "https://api.superscore.cn/football/odds/oddsHistoryById"
if parameters:
url += '?' + urlencode(parameters)
with urlopen(Request(url, headers=headers, method="GET"), timeout=15) as response:
result = json.load(response)
if not result.get('success'):
raise RuntimeError(result.get('message') or result.get('code'))
print(result.get('data'))返回参数
字段路径保留完整层级;[] 表示数组元素,<key> 表示按数据内容变化的映射键。success、code、message 与 data 均按接口定义列出。
| 字段路径 | 类型 | 说明与枚举 |
|---|---|---|
success | boolean | 状态码 |
code | string | 状态编号 |
message | string | 描述 |
data | array | 数据 |
data[].bookmakerId | int32 | 盘口公司ID |
data[].bookmakerName | string | 盘口公司名称 |
data[].markets | array | 市场列表 |
data[].markets[].marketId | int32 | 市场ID |
data[].markets[].marketName | string | 市场名称 |
data[].markets[].history | object | 赔率历史数据 |
data[].markets[].history.matchId | int32 | 比赛ID |
data[].markets[].history.bookmakerId | int32 | 盘口公司ID |
data[].markets[].history.marketId | int32 | 市场ID: 1=欧赔, 2=亚盘, 3=大小球 ,4=角球 ,5=上半场欧赔, 6=上半场亚盘, 7=上半场大小球 ,8=上半场角球 |
data[].markets[].history.marketName | string | 市场名称 |
data[].markets[].history.history | array | 历史记录列表(按时间排序,最早的在前) |
data[].markets[].history.history[].time | int64 | 时间戳(秒) |
data[].markets[].history.history[].oddsType | int32 | 赔率类型: 1=初盘, 2=即时盘, 3=临场盘, 4=滚球盘 |
data[].markets[].history.history[].minute | string | 比赛进行时间 |
data[].markets[].history.history[].score | string | 当前比分 |
data[].markets[].history.history[].handicap | string | 盘口值/让球值(市场级别,如 "0.5", "1/1.5") |
data[].markets[].history.history[].outcomes | array | 赔率结果列表,支持任意市场类型 |
data[].markets[].history.history[].outcomes[].name | string | 结果名称: home, draw, away, over, under, 1-0, yes, no 等 |
data[].markets[].history.history[].outcomes[].value | double | 赔率值 |
data[].markets[].history.history[].outcomes[].handicap | string | 该结果的盘口值(可选,用于分盘口如 "0/0.5") |
data[].markets[].history.status | int32 | 比赛状态 |
data[].markets[].history.updateTime | int64 | 更新时间 |
响应结构示例
下面的值仅展示字段类型,不是实时数据或真实调用结果。动态 map 的键取决于实际返回,不编造固定字段。
展开完整 JSON 结构
{
"success": false,
"code": "示例字符串",
"message": "示例字符串",
"data": [
{
"bookmakerId": 0,
"bookmakerName": "示例字符串",
"markets": [
{
"marketId": 0,
"marketName": "示例字符串",
"history": {
"matchId": 0,
"bookmakerId": 0,
"marketId": 0,
"marketName": "示例字符串",
"history": [
{
"time": 0,
"oddsType": 0,
"minute": "示例字符串",
"score": "示例字符串",
"handicap": "示例字符串",
"outcomes": [
{
"name": "示例字符串",
"value": 0,
"handicap": "示例字符串"
}
]
}
],
"status": 0,
"updateTime": 0
}
}
]
}
]
}错误处理与使用说明
- 先检查 HTTP 状态,再解析 JSON;网络失败或非 JSON 响应不能当作成功。
- 业务响应 success 为 false 时,读取 code 和 message;不要把业务错误与 HTTP 状态混为一谈。
- 保存原始错误码、请求时间及接口路径用于排查,日志中移除商户密钥。
- 按该接口的数据更新建议、账户授权和调用频率请求;日期和时间戳单位以字段说明为准。
- 允许字段缺失或数据为空,按接口中的稳定 ID 关联资料,不依赖数组顺序。