MoviOdds Docs
API docs Sports Bet Builder Python moviodds.com

Live match stats API

The live stats bet365 shows next to its in-play odds, served right alongside the prices. Free and no key needed

What you get

Every live match bet365 tracks comes with its stats, attacks, possession, shots and corners in soccer, quarter scores and fouls in basketball, aces and break points in tennis, map and round scores in CS2 and a lot more. They're opt-in so you only get them when you ask

Over REST

Add stats=1 to /odds or /catalog:

curl --compressed "https://moviodds.com/odds?in_play=1&groups=1777&stats=1"

A real soccer match from the response, trimmed:

"stats": {
  "sport": "soccer",
  "home": {"attacks": 92, "dangerous_attacks": 51, "possession": 69, "shots": 11, "shots_on_target": 5,
           "corners": 8, "yellow_cards": 1, "red_cards": 0, "offsides": 0},
  "away": {"attacks": 44, "dangerous_attacks": 13, "possession": 31, "shots": 1, "shots_on_target": 1,
           "corners": 0, "yellow_cards": 1, "red_cards": 0, "offsides": 0},
  "updated_at": "2026-10-19T10:23:47Z"
}

And a CS2 match:

"stats": {
  "sport": "esports", "game": "cs2", "format": "best_of_3", "current_map": 3, "current_round": 12,
  "maps": [{"number": 1, "name": "Ancient", "home": 11, "away": 13},
           {"number": 2, "name": "Mirage", "home": 13, "away": 10},
           {"number": 3, "name": "Nuke", "home": 6, "away": 5}],
  "home": {"maps_won": 1, "rounds": 6, "side": "T"},
  "away": {"maps_won": 1, "rounds": 5, "side": "CT"}
}

After the match /results?stats=1 gives the full time stats

Over the WebSocket

Send "stats": true with your subscribe and you get a stats message for each match whenever its stats change, at most one a second per match. Each one is the full set so just replace your copy

{"op": "subscribe", "stats": true}

Sports and fields

Every field is listed in the API docs

FAQ

Is the match stats API free?

Yes, no sign-up and no key, it's part of the odds feed

Which sports have live stats?

Soccer, basketball, tennis, ice hockey, American football, rugby union, baseball, darts, volleyball, esoccer, ebasketball, CS2 and VALORANT

Do I get xG?

Yes for the soccer matches where bet365 shows it. Lower leagues often only have attacks, possession, shots and corners

How often do stats update?

On the WebSocket you get a message whenever a match's stats change, at most one a second per match

Are these bet365's stats?

Yes, the same live stats bet365 shows on its in-play pages. MoviOdds is an independent project and is not affiliated with bet365

More: live WebSocket · historical odds · all 24 sports · Python · API docs