This is part of why Shaggy Hiker said to use an API if it was available.

In modern web apps, there's often a lot of magic that the JS wants to do to the page. But it needs the browser to be done with the page before it can do that. So many web apps load a relatively blank page, wait for the "document loaded" event, then use JS to load the *actual* content. That could be your page: it could be true that even after DocumentLoaded not all the content is there.

There's not a "document loaded and JS has finished executing" event. There's no need for it, from a browser's viewpoint. The web wasn't designed for screen scraping. If you can't use an API to get at the data, you're going to have to look at the page's JS and find out what it's doing to load the content you want, then simulate that yourself.