ScrapingBee's js_scenario is a mini browser script that runs before capture - wait, scroll, click, fill - with a 40-second total budget. The modern pattern: a scenario with explicit waits and scrolls, not the deprecated js_scroll family (still accepted, do not use in new code). For simpler cases, wait_for waits for a CSS selector and the fixed wait param (max 35s) runs after it. Google Flights-style pages that load fares lazily are the canonical case: scenario with waits and scrolls, then capture.

Context: ScrapingBee official SDK docs (scrapingbee-python): the js_scenario parameter scripts the headless browser - click, scroll, fill, wait before capture. A scenario runs for up to 40 seconds total (shown in ScrapingBee's google-flights-scraper example: wait 3000, scroll_y 1000, wait 1000). For waits: wait is a fixed wait in ms (0 to 35000) that runs after wait_for, and wait_browser waits until load, domcontentloaded, networkidle0, or networkidle2. Deprecated params still accepted but to avoid: js_scroll, js_scroll_count, js_scroll_wait, js_snippet - use js_scenario instead.