Documentation Index
Fetch the complete documentation index at: https://docs.oddspapi.io/llms.txt
Use this file to discover all available pages before exploring further.
数据流内容
针对特定 fixtureId 的盘口结果实时赔率更新。
赔率按博彩商分组,并通过每个结果的唯一 oddsId 进行键控。
每条记录代表单个 oddsId(一个结果的一个价格)。
- 实体键:
payload.fixtureId
- 过滤器:
sportIds、tournamentIds、fixtureIds、bookmakers
- 访问权限:由您的
apiKey 决定
- 博彩商授权:✅ 是
传输语义
- 此频道是高吞吐量的
- 更新是仅最新状态
- 网关可能在负载下合并或丢弃中间更新
- 不要假设逐笔完整性
将每条消息视为状态更新,而非账本。
负载结构
oddsId:
<fixtureId>:<bookmaker>:<outcomeId>:<playerId>
结果对象(完整架构)
每个赔率条目是一个结果(outcome),包含以下字段:
| 字段 | 类型 | 描述 | |
|---|
bookmaker | string | 博彩商标识(如 "stake"、"pinnacle"、"polymarket") | |
outcomeId | integer | 结果标识符 | |
playerId | integer | 选手ID(非选手盘口为 0) | |
price | number | 小数赔率 | |
active | boolean | 此结果当前是否可用 | |
marketActive | boolean | null | 整个盘口是否激活 | |
mainLine | boolean | null | 是否为博彩商的主盘 | |
marketId | integer | 盘口标识符 | |
bookmakerMarketId | string | null | 博彩商原生盘口ID | |
bookmakerOutcomeId | string | null | 博彩商原生结果ID | |
bookmakerChangedAt | number | null | 博彩商提供的变更时间戳(毫秒) | |
priceFractional | `string | ` | 分数赔率(如 "5/2") |
priceAmerican | `integer | ` | 美式赔率(如 -110、+250) |
limit | number | null | 最大接受投注额(如有提供) | |
betslip | string | null | 可选的博彩商投注单或深链接令牌 | |
meta | object | null | 博彩商特定元数据(订单簿、阶梯等) | |
changedAt | number | 网关变更时间戳(毫秒,UTC) | |
时间戳说明
changedAt 始终存在,表示网关接受更新的时间
bookmakerChangedAt(如存在)反映博彩商自己的时间戳
- 这些值可能不同 — 不要假设它们相等
某些博彩商(如预测市场/交易所)提供丰富的元数据。
示例:
{
"meta": {
"lay": [
{ "price": 2.00, "size": 100.0 },
{ "price": 2.10, "size": 80.0 }
],
"back": [
{ "price": 1.95, "size": 50.0 }
]
}
}
典型的 meta 内容可能包括:
- 订单簿阶梯(
back / lay)
- 流动性提示
- 内部规模或刻度元数据
meta 的架构是博彩商特定的,可能会演变。
示例:传统博彩商赔率
{
"channel": "odds",
"type": "UPDATE",
"payload": {
"fixtureId": "id1100013270505136",
"odds": {
"pinnacle": {
"id1100013270505136:pinnacle:111:0": {
"bookmaker": "pinnacle",
"outcomeId": 111,
"playerId": 0,
"active": true,
"price": 1.155,
"marketActive": true,
"mainLine": true,
"bookmakerMarketId": "line/4/487/1628488896/3565645414/0/moneyline",
"bookmakerOutcomeId": "home",
"bookmakerChangedAt": 1776717657043,
"limit": 19354,
"priceAmerican": -645,
"priceFractional": "11/71",
"marketId": 111,
"changedAt": 1776717657402
},
"id1100013270505136:pinnacle:112:0": {
"bookmaker": "pinnacle",
"outcomeId": 112,
"playerId": 0,
"active": true,
"price": 5.77,
"marketActive": true,
"mainLine": true,
"bookmakerMarketId": "line/4/487/1628488896/3565645414/0/moneyline",
"bookmakerOutcomeId": "away",
"bookmakerChangedAt": 1776717657043,
"limit": 3000,
"priceAmerican": 477,
"priceFractional": "477/100",
"marketId": 111,
"changedAt": 1776717657402
}
}
}
},
"ts": 1776717657500,
"entryId": "1776717657500-84805"
}
示例:预测市场赔率(扩展字段)
{
"channel": "odds",
"type": "UPDATE",
"payload": {
"fixtureId": "id1100064864029581",
"odds": {
"polymarket": {
"id1100064864029581:polymarket:112:0": {
"bookmaker": "polymarket",
"outcomeId": 112,
"playerId": 0,
"active": true,
"price": 6.369,
"priceAmerican": 537,
"limit": 4.71,
"bookmakerMarketId": "1011497",
"bookmakerOutcomeId": "4937...",
"meta": {
"back": [{ "price": 6.369, "size": 30.0 }],
"lay": [{ "price": 100.0, "size": 15.0 }]
},
"marketActive": true,
"changedAt": 1766939876376
}
}
}
},
"ts": 1766939876700,
"entryId": "1766939876700-653"
}
实现指南
- 始终使用以下格式作为存储键
{fixtureId}:{bookmaker}:{outcomeId}:{playerId}
- 按
marketId 分组结果(参见概念)用于:
- 将
active=false 或 marketActive=false 视为硬停止
- 保留
meta 中的未知字段以保持向前兼容性