Skip to content

odds api mcp server changelog

io.github.odds-api-io/odds-api-mcp-server

9 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • llms.txt +49 −43

    https://docs.odds-api.io/llms.txt

    − # Odds-API.io Documentation Index for AI Tools− # This file provides an index of documentation pages for LLMs and AI coding assistants− Odds-API.io is a sports betting odds comparison API providing real-time data from 450 bookmakers across 34 sports.− https://docs.odds-api.io/ - Introduction and overview of the API− https://docs.odds-api.io/quickstart - Get started with your first API call− https://docs.odds-api.io/authentication - API key authentication and security− https://docs.odds-api.io/guides/fetching-odds - Fetch and compare odds from multiple bookmakers− Market catalogue: GET /markets?sport=<sport> (no auth required) returns the exact market names, shape, period and prematch/live availability for a sport, use it instead of guessing a name. Every sport parameter in the API takes either spelling, the name or the slug (Ice Hockey or ice-hockey). A listed sport we do not price yet returns an empty markets array, not a 404. Handball ML is always the full-time three-way result (home, draw, away); two-way handball winner prices are under Draw No Bet. C− https://docs.odds-api.io/guides/live-events - Live events, match clock and participant logos− https://docs.odds-api.io/guides/value-bets - Prices above a fair-odds estimate, with expected value− https://docs.odds-api.io/guides/arbitrage-bets - Prematch arbitrage opportunities across your bookmakers, margins after exchange fees, stakes within bookmaker limits− https://docs.odds-api.io/guides/dropping-odds - Track significant odds movements from sharp bookmakers− https://docs.odds-api.io/guides/on-sharp - ON Sharp: consensus line from the sharpest books, fixed 2%/2.5% margin, prematch, paid plans (bookmakers=ON Sharp)− https://docs.odds-api.io/guides/websockets - Real-time odds updates via WebSocket− https://docs.odds-api.io/guides/best-practices - Optimize API usage and performance− https://docs.odds-api.io/guides/historical - Historical closing lines for backtesting− Historical data: /historical/closing-lines (bulk, paid: sport + leagues + from/to + markets + bookmakers), /historical/events and /historical/odds (see API reference)− https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 172 markets in 21 sports, paid plans− Settlement: GET /settlements (eventIds, max 50: status pending/live/awaiting_result/settled/cancelled, final flag, scores) and POST /settlements/grade (JSON body, up to 50 selections of eventId + market + side + hdp + label; returns result, reason, final, basis per selection)− https://docs.odds-api.io/guides/sdks - Official TypeScript and Python SDKs− https://docs.odds-api.io/guides/prediction-markets - Prediction market odds (Polymarket, Kalshi)− https://docs.odds-api.io/guides/native-id-mappings - Native id mappings: our selections to a bookmaker's own ids (Polymarket conditionId + CLOB token id, Kalshi contract ticker + yes/no), lookups and bulk sync, paid plans− https://docs.odds-api.io/guides/paying-with-crypto - Pay with BTC, ETH, USDC and more (10+ coins); how crypto renewals are invoiced− https://docs.odds-api.io/api-reference/introduction - API overview and authentication− https://docs.odds-api.io/api-reference/websocket - WebSocket API documentation− https://docs.odds-api.io/llms-full.txt - Full documentation in a single file (for large context AI tools)− https://docs.odds-api.io/api-reference/openapi.json - OpenAPI specification with complete schemas− - `permessage-deflate` compression is required on WebSocket connections. Use Node `ws`, a browser, or Python `websockets` (all compress by default); Python `websocket-client` and PHP `textalk/websocket` cannot compress; connections without it are refused with HTTP 426− - live `score` and live-`status` messages also include an optional `clock` snapshot (minute, playedSeconds, period, running, statusDetail, serve, injuryTime, periodStartedAt - same shape as `GET /events/live`) to re-anchor a client-side ticker; omitted on pending/settled/cancelled and on sports without a clock. The clock arrives only with an event, so seed the initial value from `GET /events/live` on connect, then let the WebSocket re-anchor it− - WebSocket message types: `welcome`, `created`, `updated`, `deleted`, `no_markets`, `score`, `status`, `resync_required`− https://api.odds-api.io/v3− So football uses `p1`, `p2` + `ft` (+ `ot`, `ap`); ice hockey `p1`-`p3`, `ft` (+ `ot`, `ap`); basketball `p1`-`p4`, `ft` (+ `ot`). Some events also carry the older spellings `period1`-`period5`, `overtime`, `penalties` and `fulltime`, which stop on 12 November 2026, 09:00 UTC; read the keys above.− GET /bookmakers - List available bookmakers with name, active, createdAt and status (status ok/degraded/down, reason maintenance/unavailable); odds from "down" books are not served (no auth required)− GET /events?sport={slug}&apiKey={key} - List events for a sport. Esports events add an `esports` object: game, parent league, region, format (bestOf/firstTo + games). Defaults to the next 14 days when no `to` is given; pass `to` (RFC3339) to widen. Hard-capped at 5000/response - paginate with limit+skip.− GET /events/{id}?apiKey={key} - Get event by ID (live events include the clock object)− GET /odds?eventId={id}&bookmakers={list}&apiKey={key}&markets={names} - Get odds for an event− GET /odds/multi?eventIds={ids}&bookmakers={list}&apiKey={key}&markets={names} - Get odds for multiple events (up to 10)− GET /odds/movements?eventId={id}&bookmaker={name}&market={name}&marketLine={line}&apiKey={key} - Get prematch odds movement history for one market line (names case-insensitive, omit marketLine for the main line or for markets without one). History is recorded only for a fixed set of bookmakers: 10BET, 12bet, 1xbet, 22Bet, 888Sport, BC.Game, Bet365, Betano, Betclic FR, Betfair Exchange, Betfair Sportsbook, Betinia DK, BetMGM, Betsson, BetVictor, Betway, Bovada, Bwin ES, Bwin IT, CloudBet, ComeOn,− GET /value-bets?bookmaker={name}&apiKey={key} - Get prices above a fair-odds estimate (optional: sport={slug}, league={slug} requires sport, includeEventDetails). Rows carry firstSeenAt and bookmakerOddsUpdatedAt (last price write, may be absent); expectedValueUpdatedAt only moves when EV or the sharp limit increases, so it is not a freshness signal− GET /dropping-odds?sport={slug}&league={slug}&leagues={slug,slug}&markets={name,name}&apiKey={key} - Get dropping odds from sharp bookmakers (paid plans only). Use leagues (comma-separated) to filter by multiple leagues at once; mutually exclusive with league. Use markets (comma-separated) to filter by one or more market names.+ # Odds-API.io+ > Index of the Odds-API.io documentation for LLMs and AI coding assistants. Real-time sports betting odds API: 450+ bookmakers, 34 sports, REST and WebSocket.+ Odds-API.io is a sports betting odds comparison API providing real-time data from 450+ bookmakers across 34 sports.+ - [Introduction](https://docs.odds-api.io/): Introduction and overview of the API+ - [Quickstart](https://docs.odds-api.io/quickstart): Get started with your first API call+ - [Authentication](https://docs.odds-api.io/authentication): API key authentication and security+ - [Fetching Odds](https://docs.odds-api.io/guides/fetching-odds): Fetch and compare odds from multiple bookmakers+ Market catalogue: GET /markets?sport=<sport> (no auth required) returns the exact market names, shape, period and prematch/live availability for a sport, use it instead of guessing a name. The same catalogue as a page per sport: https://odds-api.io/markets. Every sport parameter in the API takes either spelling, the name or the slug (Ice Hockey or ice-hockey). A listed sport we do not price yet returns an empty markets array, not a 404. Handball ML is always the full-time three-way result (home,+ - [Live Events](https://docs.odds-api.io/guides/live-events): Live events, match clock and participant logos+ - [Value Bets](https://docs.odds-api.io/guides/value-bets): Pre-match prices above a fair-odds estimate, with expected value+ - [Arbitrage Bets](https://docs.odds-api.io/guides/arbitrage-bets): Prematch arbitrage opportunities across your bookmakers, margins after exchange fees, stakes within bookmaker limits+ - [Dropping Odds](https://docs.odds-api.io/guides/dropping-odds): Track significant odds movements from sharp bookmakers+ - [ON Sharp](https://docs.odds-api.io/guides/on-sharp): ON Sharp: consensus line from the sharpest books, fixed 2%/2.5% margin, prematch, paid plans (bookmakers=ON Sharp)+ - [WebSockets Guide](https://docs.odds-api.io/guides/websockets): Real-time odds updates via WebSocket+ - [Best Practices](https://docs.odds-api.io/guides/best-practices): Optimize API usage and performance+ - [Historical](https://docs.odds-api.io/guides/historical): Historical closing lines for backtesting+ Historical data: /historical/closing-lines (bulk, paid: sport + leagues + from/to + markets + bookmakers), /historical/events, /historical/events/search (query, 3 to 50 characters, optional sport + from/to) and /historical/odds (see API reference)+ - [Settlement](https://docs.odds-api.io/guides/settlement): Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 172 markets in 21 sports, paid plans+ Settlement: GET /settlements (eventIds, max 50: status pending/live/awaiting_result/settled/cancelled, final flag, scores, replacedBy on re-issued events) and POST /settlements/grade (JSON body, up to 50 selections of eventId + market + side + hdp + label; returns result, reason, final, basis per selection)+ - [Outrights](https://docs.odds-api.io/guides/outrights): Outrights add-on (paid plans), golf first: outright odds and results for PGA Tour, DP World Tour, LIV Golf and the majors: Winner, Top 3/5/6/10/20, Top 5/10/20 (Incl. Ties), Make Cut+ Outrights: GET /outrights (sport, league, status, kind race|standings; kind, gender, discipline and bookmakerCount per tournament), GET /outrights/odds (id + bookmakers, max 30, same bookmaker rules as /odds) and GET /outrights/results (id; positions, ties, madeCut, winners per market, empty until settled)+ - [SDKs](https://docs.odds-api.io/guides/sdks): Official SDKs: Node.js/TypeScript (npm odds-api-io 1.5.3), Python (PyPI odds-api-io 1.2.2, extras [pandas] and [ws]), PHP (Composer odds-api-io/odds-api-php 0.1.0 on Packagist, PHP 8.1+, REST only), Go (go get github.com/odds-api-io/odds-api-go 0.1.0, oddsws WebSocket subpackage), R (CRAN oddsapiio 0.2.0), all with outrights, closing lines, odds summary, settlement and mappings; MCP server (npm odds-api-mcp-server 1.8.3, 33 tools)+ - [CLI](https://docs.odds-api.io/guides/cli): Command-line tool: npm install -g odds-api-cli, command odds-api (sports, bookmakers, events, odds, value-bets, arbitrage; --json; key from ODDS_API_KEY or --key)+ - [Google Sheets Add-on](https://docs.odds-api.io/guides/google-sheets): "Odds-API.io: Sports Odds for Sheets" on the Google Workspace Marketplace: side panel (Explore, Recipes, Playground, refresh every minute, Copy for AI) and formulas =ODDS(eventId, [market], [bookmaker], [refresh]) and =ODDS_TABLE(sport, [league], [market], [refresh]); needs a paid API key+ - [Prediction Markets](https://docs.odds-api.io/guides/prediction-markets): Prediction market odds (Polymarket, Kalshi)+ - [Native ID Mappings](https://docs.odds-api.io/guides/native-id-mappings): Native id mappings: our selections to a bookmaker's own ids (Polymarket conditionId + CLOB token id, Kalshi contract ticker + yes/no), lookups and bulk sync, paid plans+ - [Paying With Crypto](https://docs.odds-api.io/guides/paying-with-crypto): Pay with BTC, ETH, USDC and more (10+ coins); how crypto renewals are invoiced+ - [API Reference Introduction](https://docs.odds-api.io/api-reference/introduction): API overview and authentication+ - [WebSocket](https://docs.odds-api.io/api-reference/websocket): WebSocket API documentation+ - [llms-full.txt](https://docs.odds-api.io/llms-full.txt): Full documentation in a single file (for large context AI tools)+ - [OpenAPI spec](https://docs.odds-api.io/api-reference/openapi.json): OpenAPI specification with complete schemas+ - `permessage-deflate` compression is required on WebSocket connections. Use Node `ws`, the built-in `WebSocket` in Node.js 22+, a browser, or Python `websockets` (all compress by default); Python `websocket-client` and PHP `textalk/websocket` cannot compress; connections without it are refused with HTTP 426+ - live `score` and live-`status` messages also include an optional `clock` snapshot (minute, playedSeconds, period, running, statusDetail, serve, injuryTime, periodStartedAt - same shape as `GET /events/live`) to re-anchor a client-side ticker; omitted on pending/settled/cancelled and on sports without a clock+ - `clock` messages (`{"type":"clock","id","timestamp","clock"}`) re-send the current clock every 30 seconds for each live event whose clock has `playedSeconds` or `periodStartedAt` (none for tennis/table tennis; an unchanged clock at most every 5 minutes), to `scores` or `status` subscribers (same filters as score messages, best-effort, no `seq`). A `lastSeq` reconnect gets a `clock` message per live event right after its catch-up (after messages queued during it). Count forward from `playedSeco+ - WebSocket message types: `welcome`, `created`, `updated`, `deleted`, `no_markets`, `score`, `status`, `clock`, `resync_required`+ - A re-issued fixture's old event gets a `cancelled` `status` message and, on every `odds` connection, a sequenced `no_markets` per bookmaker, both with `replacedBy` (the event id to use): drop the old event and move your state to the new id+ `https://api.odds-api.io/v3`+ So football uses `p1`, `p2` + `ft` (+ `ot`, `ap`); ice hockey `p1`-`p3`, `ft` (+ `ot`, `ap`); basketball `p1`-`p4`, `ft` (+ `ot`). The older spellings `period1`-`period5`, `overtime`, `penalties` and `fulltime` stopped on 12 November 2026.+ GET /bookmakers - List available bookmakers with name, active, createdAt and status (status ok/degraded/down; reason maintenance/unavailable for degraded and down books, null when ok); odds from "down" books are not served, "degraded" books (also in maintenance) still are (no auth required)+ GET /events?sport={slug}&apiKey={key} - List events for a sport. Esports events add an `esports` object: game, parent league, region (of the competition stage), format (bestOf/firstTo + games). Defaults to the next 14 days when no `to` is given; pass `to` (RFC3339) to widen. Hard-capped at 5000/response - paginate with limit+skip.

    Showing the first 40 of each.

  • server.json 1 field changed
    version
    1.8.3 1.8.4

  • server.json 2 fields changed
    description
    Live sports betting odds from 450+ bookmakers across 34 sports, with value bets and arbitrage. Odds from 450+ bookmakers across 34 sports: odds, closing lines, settlement, golf outrights.
    version
    1.6.1 1.8.3
  • server.json 2 fields changed
    description
    Live sports betting odds from 365+ bookmakers across 34 sports, with value bets and arbitrage. Live sports betting odds from 450+ bookmakers across 34 sports, with value bets and arbitrage.
    version
    1.6.0 1.6.1

  • llms.txt +7 −6

    https://docs.odds-api.io/llms.txt

    − Odds-API.io is a sports betting odds comparison API providing real-time data from 415 bookmakers across 34 sports.− For continuously fresh odds use the WebSocket feed (/guides/websockets); use REST for snapshots and one-off lookups. /odds/updated is a polling fallback: pass the X-Next-Since response header as the next `since`, `markets` is required there from 19 October 2026. From 22 October 2026 it ships only the markets that changed, so merge responses by market name instead of replacing an event.− Market catalogue: GET /markets?sport=<sport> (no auth required) returns the exact market names, shape, period and prematch/live availability for a sport, use it instead of guessing a name. Every sport parameter in the API takes either spelling, the name or the slug (Ice Hockey or ice-hockey). A listed sport we do not price yet returns an empty markets array, not a 404. Handball ML is always the full-time three-way result (home, draw, away); two-way handball winner prices are under Draw No Bet− https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 70 markets in 20 sports, paid plans− GET /bookmakers - List available bookmakers with name, active and createdAt (no auth required)− GET /odds/updated?since={timestamp}&bookmaker={name}&sport={name}&apiKey={key}&limit={n}&markets={names} - Get recently updated odds (returns X-Server-Time/X-Next-Since headers for delta polling)+ Odds-API.io is a sports betting odds comparison API providing real-time data from 450 bookmakers across 34 sports.+ For continuously fresh odds use the WebSocket feed (/guides/websockets); use REST for snapshots and one-off lookups. /odds/updated is a polling fallback: pass the X-Next-Since response header as the next `since`, `markets` is required there. It is a true delta that ships only the market groups that changed since `since`, so merge responses by market name instead of replacing an event.+ Market catalogue: GET /markets?sport=<sport> (no auth required) returns the exact market names, shape, period and prematch/live availability for a sport, use it instead of guessing a name. Every sport parameter in the API takes either spelling, the name or the slug (Ice Hockey or ice-hockey). A listed sport we do not price yet returns an empty markets array, not a 404. Handball ML is always the full-time three-way result (home, draw, away); two-way handball winner prices are under Draw No Bet. C+ https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 172 markets in 21 sports, paid plans+ - `status=prematch` connections get a sequenced, replayed `no_markets` per bookmaker when an event starts (or is settled/cancelled before starting), closing its pre-match odds (a reconnect that gets neither replay nor pushed state still gets the closes after its `lastSeq`, without seq); a `lastSeq` reconnect with the `status` channel also resends the current `status` of live and recently finished events before `replay_complete`+ GET /bookmakers - List available bookmakers with name, active, createdAt and status (status ok/degraded/down, reason maintenance/unavailable); odds from "down" books are not served (no auth required)+ GET /odds/updated?since={timestamp}&bookmaker={name}&sport={name}&apiKey={key}&limit={n}&markets={names} - Get only the market groups that changed since `since` (returns X-Server-Time/X-Next-Since headers for delta polling; bookmaker=Bet365 also returns "Bet365 (no latency)")

  • llms.txt +14 −12

    https://docs.odds-api.io/llms.txt

    − https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 67 markets in 20 sports, paid plans− - `permessage-deflate` compression is required on WebSocket connections. Use Node `ws`, a browser, or Python `websockets` (all compress by default); Python `websocket-client` and PHP `textalk/websocket` cannot compress and will stop being accepted− - Reconnect with `lastSeq` to receive a compacted replay of missed updates− - live `score` and live-`status` messages also include an optional `clock` snapshot (minute, playedSeconds, period, running, statusDetail, serve, injuryTime - same shape as `GET /events/live`) to re-anchor a client-side ticker; omitted on pending/settled/cancelled and on sports without a clock. The clock arrives only with an event, so seed the initial value from `GET /events/live` on connect, then let the WebSocket re-anchor it− Period keys (top-level `home`/`away` is the OT/penalty-inclusive result):− - `p1`, `p2`, ... `pN` - period / set / quarter scores− - `ft` - full-time / regulation result− - `ot` - overtime / extra time / extra innings (when played)− - `ap` - penalty shootout tally (when decided on penalties)− So football uses `p1` + `ft`; ice hockey uses `p1`, `p2`, `p3`, `ft` (+ `ot`); basketball `p1`–`p4`, `ft` (+ `ot`). The full-time key is `ft` (the legacy feed used `fulltime`).− GET /events/live?apiKey={key} - Get currently live events (includes optional clock object: minute, playedSeconds, period, running, statusDetail, serve, injuryTime). Cricket has no clock; its per-innings detail is in scores.periods.inningN, which adds cricket-only `wickets` and `overs` pairs alongside home/away runs− GET /arbitrage-bets?bookmakers={list}&apiKey={key} - Get arbitrage opportunities+ https://docs.odds-api.io/guides/arbitrage-bets - Prematch arbitrage opportunities across your bookmakers, margins after exchange fees, stakes within bookmaker limits+ https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 70 markets in 20 sports, paid plans+ - Up to two concurrent WebSocket connections per API key; a third closes the oldest, and a reconnect within 2 seconds of that is refused with close code `1013`, so back off a few seconds+ - `permessage-deflate` compression is required on WebSocket connections. Use Node `ws`, a browser, or Python `websockets` (all compress by default); Python `websocket-client` and PHP `textalk/websocket` cannot compress; connections without it are refused with HTTP 426+ - Updates arrive in `seq` order per connection (`seq` never decreases; the same update sent for several bookmakers shares one `seq`, so identify a frame by `id` + `bookie` + `seq`); reconnect with the highest `lastSeq` you received to get a compacted replay of missed updates (`replayComplete=true` adds a `replay_complete` marker when the catch-up is done)+ - live `score` and live-`status` messages also include an optional `clock` snapshot (minute, playedSeconds, period, running, statusDetail, serve, injuryTime, periodStartedAt - same shape as `GET /events/live`) to re-anchor a client-side ticker; omitted on pending/settled/cancelled and on sports without a clock. The clock arrives only with an event, so seed the initial value from `GET /events/live` on connect, then let the WebSocket re-anchor it+ Period keys, the same for every sport and source (top-level `home`/`away` includes overtime but never a penalty shootout):+ - `p1`, `p2`, ... `pN` - score in that period only (half / quarter / period / inning / games in a set)+ - `ft` - running total at the end of regulation (set sports: sets won)+ - `ot` - running total after overtime / extra time / extra innings, regulation included (when played)+ - `ap` - running total after a penalty shootout, shootout goals included (when there was one); the shootout alone is `ap` minus `ot` (or `ft`)+ So football uses `p1`, `p2` + `ft` (+ `ot`, `ap`); ice hockey `p1`-`p3`, `ft` (+ `ot`, `ap`); basketball `p1`-`p4`, `ft` (+ `ot`). Some events also carry the older spellings `period1`-`period5`, `overtime`, `penalties` and `fulltime`, which stop on 12 November 2026, 09:00 UTC; read the keys above.+ GET /events/live?apiKey={key} - Get currently live events (includes optional clock object: minute, playedSeconds, period, running, statusDetail, serve, injuryTime, and periodStartedAt (unix seconds, wall time) only when there is no played clock). Cricket has no clock; its per-innings detail is in scores.periods.inningN, which adds cricket-only `wickets` and `overs` pairs alongside home/away runs+ GET /arbitrage-bets?bookmakers={list}&apiKey={key} - Get prematch arbitrage opportunities, best combination per event/market/line (optional: sport={slug}, league={slug} requires sport, markets={names}, minProfit={percent}, allCombinations=true, limit, includeEventDetails). Margins use prices after exchange fees; legs carry netOdds, maxStake and oddsUpdatedAt when known; totalStake can be below 1000 when a limit caps the split

  • llms.txt +12 −7

    https://docs.odds-api.io/llms.txt

    − Odds-API.io is a sports betting odds comparison API providing real-time data from 365 bookmakers across 34 sports.− For continuously fresh odds use the WebSocket feed (/guides/websockets); use REST for snapshots and one-off lookups. /odds/updated is a polling fallback: pass the X-Next-Since response header as the next `since`, `markets` is required there from 15 October 2026.− - `map1`, `map2`, ... - per-map scores (esports)− GET /events?sport={slug}&apiKey={key} - List events for a sport. Defaults to the next 14 days when no `to` is given; pass `to` (RFC3339) to widen. Hard-capped at 5000/response - paginate with limit+skip.− GET /odds/movements?eventId={id}&bookmaker={name}&market={name}&apiKey={key} - Get odds movement history. History is recorded only for a fixed set of bookmakers: Bet365, 12bet, DraftKings, FanDuel, FB Sports, GG.bet, M88, Norsk Tipping, ON Sharp, Sbobet, SingBet, Superbet, Veikkaus, and selected sharp books. Other bookmakers return a 404− GET /participants?sport={slug}&apiKey={key} - Get teams/participants− Solo £49/mo or £490/yr (2 bookmakers), Starter £99/mo or £990/yr (5), Growth £179/mo or £1,790/yr (10), Pro £229/mo or £2,290/yr (15). Annual = 10x monthly, 2 months free, card only. WebSocket streaming doubles the plan price. Checkout charges in GBP, USD, EUR, BRL, CNY, JPY or KRW. Card payments carry a 7-day money-back guarantee.+ Odds-API.io is a sports betting odds comparison API providing real-time data from 415 bookmakers across 34 sports.+ For continuously fresh odds use the WebSocket feed (/guides/websockets); use REST for snapshots and one-off lookups. /odds/updated is a polling fallback: pass the X-Next-Since response header as the next `since`, `markets` is required there from 19 October 2026. From 22 October 2026 it ships only the markets that changed, so merge responses by market name instead of replacing an event.+ https://docs.odds-api.io/guides/settlement - Bet settlement API: results per event and automatic grading of bets (won, lost, void, half_won, half_lost), 67 markets in 20 sports, paid plans+ Settlement: GET /settlements (eventIds, max 50: status pending/live/awaiting_result/settled/cancelled, final flag, scores) and POST /settlements/grade (JSON body, up to 50 selections of eventId + market + side + hdp + label; returns result, reason, final, basis per selection)+ - `map1`, `map2`, ... - map winner (esports): `1` for the side that won the map, `0` for the other+ - `map1_score`, `map2_score`, ... - score within the map (esports): rounds for Counter-Strike, kills for League of Legends and Dota 2. Optional: added after a series settles, only for maps with a verified score+ GET /events?sport={slug}&apiKey={key} - List events for a sport. Esports events add an `esports` object: game, parent league, region, format (bestOf/firstTo + games). Defaults to the next 14 days when no `to` is given; pass `to` (RFC3339) to widen. Hard-capped at 5000/response - paginate with limit+skip.+ GET /odds/summary?eventId={id}&apiKey={key} - Best, average, median, worst and fair price per market line across bookmakers (Growth plans and above)+ GET /odds/summary/multi?eventIds={id1,id2}&apiKey={key} - Odds summary for up to 10 events (counts as 1 request)+ GET /odds/movements?eventId={id}&bookmaker={name}&market={name}&marketLine={line}&apiKey={key} - Get prematch odds movement history for one market line (names case-insensitive, omit marketLine for the main line or for markets without one). History is recorded only for a fixed set of bookmakers: 10BET, 12bet, 1xbet, 22Bet, 888Sport, BC.Game, Bet365, Betano, Betclic FR, Betfair Exchange, Betfair Sportsbook, Betinia DK, BetMGM, Betsson, BetVictor, Betway, Bovada, Bwin ES, Bwin IT, CloudBet, ComeOn,+ GET /participants?sport={slug}&apiKey={key} - Get teams/participants (esports rows add `game` and `shortCode`)+ Solo £49/mo or £490/yr (2 bookmakers), Starter £99/mo or £990/yr (5), Growth £179/mo or £1,790/yr (10), Pro £229/mo or £2,290/yr (15). Annual = 10x monthly, 2 months free, card only. WebSocket streaming doubles the plan price. Checkout charges in GBP, USD, EUR, BRL, CNY, JPY or KRW.

  • server.json 1 field changed
    version
    1.5.3 1.6.0

  • llms.txt +4 −2

    https://docs.odds-api.io/llms.txt

    − https://docs.odds-api.io/guides/paying-with-crypto - Pay with BTC, ETH, USDC and 70+ coins; how crypto renewals are invoiced− GET /value-bets?bookmaker={name}&apiKey={key} - Get prices above a fair-odds estimate (optional: sport={slug}, league={slug} requires sport, includeEventDetails)+ https://docs.odds-api.io/guides/native-id-mappings - Native id mappings: our selections to a bookmaker's own ids (Polymarket conditionId + CLOB token id, Kalshi contract ticker + yes/no), lookups and bulk sync, paid plans+ https://docs.odds-api.io/guides/paying-with-crypto - Pay with BTC, ETH, USDC and more (10+ coins); how crypto renewals are invoiced+ GET /value-bets?bookmaker={name}&apiKey={key} - Get prices above a fair-odds estimate (optional: sport={slug}, league={slug} requires sport, includeEventDetails). Rows carry firstSeenAt and bookmakerOddsUpdatedAt (last price write, may be absent); expectedValueUpdatedAt only moves when EV or the sharp limit increases, so it is not a freshness signal+ GET /mappings?bookmaker={name}&eventId(s)={ids}|marketId(s)={ids}[&outcomeId={id}]|outcomeId={id}[&market=&active=]&apiKey={key} - Native id mappings: our event (home, away, date, sport, league), market, hdp and side to the bookmaker's own event/market/outcome ids (Polymarket conditionId + CLOB token id, Kalshi contract ticker + yes/no), oriented like /odds, inactive rows kept with active=false; every response is {data, nextCursor}; bookmaker alone = bulk sync of upcoming and live events, paged