Skip to main content
我们持续改进Odds API。 此页面列出新功能、变更、修复和重大变更。
所有时间戳均为UTC。 如果变更影响数据形状或行为,将标记为重大变更。

2026-10-01

下文中与盘口相关的全部内容——新增的 marketType、各项重命名、period 变更—— 都仅是数据变更。没有任何端点、字段或类型发生改变,且全部通过 GET /markets(以及 GET /fixtures/markets)提供。 在该日期当天或之后重新拉取一次目录即可保持最新;赔率载荷本身不受影响, 只是会开始携带新的 outcomeId。

新增

  • GET /{lang}/fixtures/odds/parlay — 根据一组 oddsIds 计算串关赔率,可跨赛事与运动项目。参见串关与 SGP。
  • GET /{lang}/fixtures/odds/sgp — 计算带相关性的同场串关,由博彩公司报价。price 体现相关性,singlesPrice 为简单乘积。
  • 两个新端点上的 missingOddsIds — 列出未能找到的已请求各关,因此空的部分不会产生歧义。
  • 所有端点支持 X-API-Key 请求头认证,与 apiKey 查询参数并存。请只使用其中一种。参见认证。
  • 新增 64 个电竞 marketType 取值和 568 个 marketType × period 组合——覆盖 Counter-Strike、League of Legends、Dota、Valorant 和 Rainbow Six 的目标类、首个目标与连杀盘口。地图级盘口归入新的 sportId 83(电竞无尽对决 Mobile Legends)。
  • 新增 195 个 period 键,全部为子赛段网格——p1r1 … p5r36(地图内的回合)与 p1g2 … p5g6(网球)。词汇表从 19 个取值增长到 213 个,并保持仅追加。
电竞目标的总分 / 让分 / 单队总分 — totals-kills、totals-towers、totals-turrets、totals-dragons、totals-barons、totals-roshans、totals-inhibitors、totals-barracks、totals-rounds、totals-headshots、spreads-kills、spreads-towers、spreads-turrets、spreads-dragons、spreads-roshans、spreads-inhibitors、spreads-barracks、spreads-rounds、teamtotals-kills-team1/-team2、teamtotals-towers-team1/-team2、teamtotals-turrets-team1/-team2、teamtotals-dragons-team1/-team2、teamtotals-barons-team1/-team2、teamtotals-roshans-team1/-team2、teamtotals-inhibitors-team1/-team2、teamtotals-barracks-team1/-team2、teamtotals-rounds-team1/-team2首个目标 — firstblood、firsttower、firstbaron、firstroshan、firstinhibitor、firstbarracks连杀 — triplekill、quadrakill、pentakill其他 — 1x2-kills、drawnobet-kills、oddeven-kills、oddeven-rounds、racetokills、winningmargin-rounds、playertotals-kills、playertotals-headshots、toqualify此前并不存在的重命名目标 — spreads-bookings、players-commitpenalty、players-goalieshutouts、players-goalsagainst、players-nextgoalscorer、players-powerplaypoints、players-secondgoalscorer、players-shorthandedgoals、players-shorthandedgoalscorer、players-thirdgoalscorer。它们之所以是“新增”,只是因为原有盘口迁移到了这些取值——参见下方的重命名对照表。

变更

  • 24 个 marketType 取值被重命名,以统一各运动项目的命名,共影响冰球、足球和板球中的 222 个盘口。单数前缀 player-、spread-、total- 统一为其他地方已在使用的复数形式 players-、spreads-、totals-。
  • 74 个盘口的 period 发生变化。 其中 28 个由 fulltime 改为 result,覆盖 26 个在常规时间之后不存在计分阶段的运动项目——对它们而言这两个取值本就是同一个数字的两种叫法,参见各项目的周期。另外 46 个原本 period 为空白,现已填充。全过程 marketId 均保持不变。
  • 已不存在 period 为空的盘口。 如果您曾为空字符串做特殊处理,现在可以删掉那个分支。
fulltime → result——26 个运动项目的 1x2 盘口: MMA 203、拳击 213、沙滩排球 303、壁球 343、三人篮球 353、冰壶 393、Padel 403、足球特别项目 443、沙滩手球 473、田径 483、羽毛球 493、草地滚球 503、越野 513、电竞使命召唤 563、电竞守望先锋 573、电竞彩虹六号 583、电竞火箭联盟 593、电竞星际争霸 603、电竞无畏契约 613、电竞传说对决 623、电竞王者荣耀(King of Glory)633、柔道 643、电竞王者荣耀(Honor of Kings)653、速度赛车 663、高尔夫 673、自行车 683。拳击还额外移动了两条 Total Rounds 线(216、218)——它们是该项目最后两个仍停留在 fulltime 的盘口,而拳击其余的 Total Rounds 线早已使用 result。空白 → 已填充,共 46 个盘口:
其中 13 项重命名会并入已经存在的 marketType — players-anytimegoalscorer、 players-assists、players-blocks、players-firstgoalscorer、players-goals、 players-lastgoalscorer、players-points、players-saves、players-shots、 players-shotsongoal、spreads-corners、totals-fours 和 totals-sixes 原本就与其单数形式同时存在于注册表中。如果您按 marketType 分组,这些分组只会变大 而不会消失——同一概念下的重复写法被消除了。moneyline → toqualify 这一行是唯一一项并非纯命名调整的改动:一个原本类型为 moneyline 的足球盘口 现在改为 toqualify,这正是它一直以来的实际含义。它也是本次发布中唯一一个 marketName 发生变化的盘口——由 Winner (incl. overtime) 改为 To Qualify。
如果您按 marketType × period 来索引盘口,请重新拉取注册表并重新生成这些分组。 共有 296 个盘口的 marketType 或 period 发生变化——硬编码或缓存的映射会悄无声息地不再匹配。如果您按 marketId 索引,则不会有任何影响。 没有任何 marketId 被移除, 也没有任何盘口新增或丢失 outcomeId;现有的 32,950 个 id 全部仍然有效, 新增的 13,891 个纯属新增。

2026-04-09

新增

  • 赛事视图:venue 场馆部分 — 所有赛事响应新增嵌套对象,包含 venueId、venueName 和 venueLocation。按语言翻译。
  • 赛事视图:clock 时钟部分 — 所有赛事响应新增嵌套对象,包含 currentPeriod、currentTime、remainingTime、remainingTimeInPeriod 和 stopped。在赛事填充时钟数据之前,所有键均为 null。
  • 赛事视图:participant1ShortName / participant2ShortName — 赛事响应 participants 部分新增字段,来源于翻译后的参赛方数据。
  • 赛事视图:seasonRound — 赛事响应 season 部分新增字段。
  • 期货视图:marketId — 期货响应 market 部分现包含来自期货表的 marketId。名称字段(marketName、marketType、playerMarket、participantMarket)暂时为 null。
  • 参赛方端点:participantShortName — GET /{lang}/participants 响应现包含每个参赛方的 participantShortName。
  • 新REST端点:GET /{lang}/venues?venueIds=... — 返回带有翻译后 venueName 和 venueLocation 的场馆数据。
  • 新WebSocket频道:clocks — 按赛事传递实时时钟更新(与 scores 相同的路由:按 fixtureId、运动、赛事过滤)。支持恢复/重放。

重大变更

  • 赛事响应结构变更 — 所有赛事端点(REST和WebSocket)现包含三个新顶级键:venue(对象)、clock(对象),以及更新的 participants / season 部分。严格解析赛事响应的客户端应更新其模型。
    • season 现包含 seasonRound: integer | null
    • participants 现包含 participant1ShortName: string | null 和 participant2ShortName: string | null
    • venue: { venueId, venueName, venueLocation } 在 season 之后添加
    • clock: { currentPeriod, currentTime, remainingTime, remainingTimeInPeriod, stopped } 在 scores 之后添加
  • 期货响应结构变更 — market.marketId 现已填充(整数或null),不再始终为 null。

2025-12-12

新增

  • WebSocket 恢复和重放支持,使用entryId游标
  • 新WebSocket频道:
    • injuries
    • lineups
    • stats
  • WebSocket网关的AsyncAPI 3.0参考

改进

  • 减少了odds和scores的WebSocket延迟
  • 改进了sportIds、tournamentIds和bookmakers的过滤

修复

  • 修复了一些odds更新在没有博彩公司门控的情况下交付的问题
  • 修复了某些赛事在过渡期间live标志不正确的问题

2025-11-28

重大变更

  • odds.payload.odds键现在始终是博彩公司范围的
    • 期望扁平结构的旧客户端必须更新

新增

  • 支持receiveType: "binary"(MessagePack)
  • 在所有更新消息中添加了entryId

2025-11-10

新增

  • 初始WebSocket网关
  • 频道:
    • fixtures
    • scores
    • odds
    • bookmakers