Well for xbox I combine a couple of different methods and it depends on the game. For Halo 5 specifically I use two methods:
The first one is using the official Halo 5 API and twitch API. Basically I use the twitch api to see if anyone is streaming Halo 5 (to get a gamertag that's online). Starting there I then use their game history via the H5 API to crawl through all of their games played in the last 15 minutes to see how many other players they played with. Then I recursively do the same for those players. This does a pretty good job but the caveat is it's only capturing people playing MP games. During morning hours when the population is at it's lowest though it sometimes struggles to find anyone online to start the process. That's where I use one of gamstat's endpoints and average the results to make sure I'm not undercounting H5's population too much.
Gamstat's website is pretty cool. What they do is they crawl xbox live users and use a small sample of the entire population and then extrapolate it to known amount of total xbox live players. This approach is pretty good and certainly does a good job for popular games but it's precision for games with very small populations (like Halo 3/Reach/4 on 360 and to a lesser extent Halo 5) is less good. https://gamstat.com/games/xbox/
Yeah from what I've seen 343 has a slight problem on their hands: Their game, Halo 5, is definitely less popular than MCC which is a collection of games they didn't make (outside of H4). So while MCC is certainly flawed I've still been relatively impressed with their contributions towards it. Like shit on their inability to actually fix things all you want, but they've been working on a collection of games across two platforms for 6 years now and if I was working for them I'd be slightly pissed all of these customers want that vs wanting H5.