The bet365 odds API. Live and pre-match, every market, 24 sports.
JSON over REST and WebSocket. In-play prices arrive as bet365 moves them, with suspensions, price history, closing lines and results.
$ curl --compressed "https://moviodds.com/odds?sport=soccer&groups=40" { "matches": [{ "id": "201714805", "league": "Spain Segunda", "home": "Real Sociedad B", "away": "Granada", "kickoff_utc": "2026-10-05T14:00:00Z", "in_play": false, "quotes": [ { "group_id": "40", "label": "Real Sociedad B", "odds_dec": 2.55 }, { "group_id": "40", "label": "Draw", "odds_dec": 3.20 }, { "group_id": "40", "label": "Granada", "odds_dec": 2.80 } ] }] }
What the feed looks like right now
Loaded once from GET /odds, then updated from the WebSocket. Suspended prices show as suspended.
Everything bet365 prices, in one feed
Live over WebSocket
Subscribe once to wss://moviodds.com/ws and get every price move and suspension as it happens.
Every market
Handicaps, totals, correct score, scorers, player props, alternative lines. Each price carries its market and selection ids.
History and closing lines
Every price change is stored. /history returns a timeline, /closing the last price before kickoff.
Results
/results lists finished matches with the final score and per-period scores where the sport has them.
Futures
/outrights has season futures like the Super Bowl, NBA and NHL champions and MVPs, the World Series, AFL, rugby, the top soccer leagues, golf, cycling and the Formula 1 championships
Live match stats
Add stats=1 and live matches come with their stats, xG possession and shots in soccer, quarter scores in basketball, aces and breaks in tennis and a lot more. Works on the WebSocket too, see how
Horse, harness and greyhound racing
Its own /racing feed with meetings, race cards, runners with Fixed Win and Place prices, each-way terms, race status and results with dividends. More in the racing docs
Bet Builder pricing
bet365's real combined price for several legs on one match, from /betbuilder/price.
24 sports, every league bet365 lists
Pre-match and in-play, from top divisions to lower leagues, cups and youth competitions.
Common questions
Is it free?
Yes, no sign-up and no key needed. Only Bet Builder pricing needs a key, just ask for one on Discord
Whose odds are these?
Only bet365's, pre-match and in-play. MoviOdds is an independent project and is not affiliated with bet365.
Which sports do you cover?
24 sports, including soccer, tennis, basketball, American football, ice hockey, baseball, cricket, rugby, table tennis, volleyball and esports, with every league bet365 lists.
How fast are in-play prices?
They are pushed over the WebSocket within about a second of bet365 changing them.
Do you have historical odds and closing lines?
Yes. /history?fi=<match> returns every recorded price, and /closing?fi=<match> the last price before kickoff. See historical odds and closing lines.
Do you have results and futures?
Yes. /results lists finished matches with their final score, and /outrights has season futures such as the Super Bowl, NBA and NHL champions, plus soccer, golf, cycling and Formula 1
Do you have live match stats?
Yes, add stats=1 to /odds and every live match bet365 tracks comes with its stats, things like xG and possession in soccer or aces in tennis. It covers soccer, basketball, tennis, ice hockey, American football, rugby union, baseball, darts, volleyball, esoccer, ebasketball, CS2 and VALORANT. On the WebSocket send "stats": true with your subscribe, and /results?stats=1 gives the full time stats. All the fields are in the docs
Do you have horse and greyhound racing?
Yes, horse, harness and greyhound racing have their own /racing feed with race cards, runners, Fixed Win and Place prices, each-way terms and results with dividends. You poll it over REST, it is not on the WebSocket. See the racing page