Handling dynamic JS execution when writing automated server-side data fetchers?

Hey everyone,
I’m hoping to get some technical advice from anyone building automated off-chain workers or server-side bots.

I am setting up a lightweight background script on a node server to fetch dynamic billing/utility statements automatically, pull the balance data, and trigger payment notifications or on-chain events. The script sends HTTP GET/POST requests with a consumer reference ID to fetch the current statement.

The problem is that the target server returns a blank shell, or the connection hangs, because the form relies heavily on client-side JavaScript execution to render the balance details and PDF download links. I checked the input parameters on this website to ensure my request payload wasn’t missing required fields, but while the page loads fine in a standard web browser, basic headless cURL or Axios requests fail to resolve the dynamic JS elements.

Has anyone dealt with similar dynamic execution hurdles when building off-chain data services? Do you typically run a headless Chromium instance via Playwright/Puppeteer inside a Docker container to evaluate the client-side JavaScript, or is there a lighter way to parse dynamic payload execution without overburdening server resources?

Thanks in advance for any insights!