Websites use JavaScript to dynamically load and render content. Browse AI's Robot Studio executes JavaScript during both training and extraction, allowing you to capture data from dynamic websites just like a regular browser would.
Understanding JavaScript-rendered content
Server-side rendered: traditional HTML sent complete from server (instant content).
Client-side rendered: JavaScript builds the page in your browser (React, Vue, Angular sites).
Dynamically loaded: content fetched via AJAX/API calls after page load.
Progressive enhancement: basic HTML enhanced with JavaScript for interactivity.
Browse AI handles all these types by running JavaScript during extraction, just like when you trained your robot.
How Browse AI handles JavaScript
Automatic JavaScript execution
When your robot visits a page:
The page loads in Browse AI's browser environment
JavaScript executes automatically
Dynamic content renders
Robot waits for content to appear
Extraction happens after rendering completes
You don't need to do anything special - if content appears when you visit the page normally, the robot can extract it.
Training with dynamic content
During training in Robot Studio:
Wait for content to load before capturing (and scroll if needed)
The page should look complete before you interact
Your clicks, and scrolls teach the robot when the content is ready
Common JavaScript content patterns
AJAX-loaded content
Content that loads after the initial page:
Navigate to the page
Wait for the content to appear (spinner disappears, data shows)
Capture the loaded content
Robot learns to wait for AJAX completion
Single Page Applications (SPAs)
Sites that don't reload when navigating:
Click navigation elements as normal
Wait for new content to render
URL may change without page reload
Capture data after transitions complete
Robot handles SPA navigation naturally
Lazy-loaded images and media
Images that load as you scroll:
Scroll to where images should appear
Wait for them to load (placeholders replaced)
Capture screenshots if needed
Robot replicates scroll-and-wait pattern
Real-time updating content
Content that updates without interaction (stock prices, scores):
Wait for initial values to load
Capture at a specific moment
Robot captures whatever is present at extraction time
Use monitoring for regular updates
Best practices for JavaScript sites
Allow sufficient loading time
During training:
Don't rush - let everything load
Watch for loading indicators (spinners, progress bars)
Wait until numbers/text stop changing
Give complex apps 3-5 seconds to stabilize
Signs content is ready:
Loading spinners disappear
Placeholder text is replaced
Images have loaded
Animations have completed
Data tables are populated
Handle loading states
Many JavaScript apps show loading states:
Skeleton screens: Gray boxes that become content
Spinners: Rotating indicators
Progress bars: Show loading percentage
"Loading..." text: Placeholder messages
Always wait for these to disappear before capturing data.
Content that requires interaction
Some JavaScript content needs mouse movement or focus:
Click into input fields to trigger validation
Click tabs to load panel content
Scroll to trigger lazy loading
Robot learns these interactions
Advanced JavaScript scenarios
Infinite scroll with JavaScript
JavaScript-powered forms
Forms with dynamic validation and submission:
Fill fields (may trigger JavaScript validation)
Wait for validation messages
Submit triggers JavaScript
Wait for response to render
Capture success/error messages
WebSocket or real-time data
Content updating via WebSocket connections:
Robot captures current state when it runs
Cannot wait for specific values
Use monitoring for regular snapshots
Good for dashboards, live feeds
Canvas and WebGL content
Graphics rendered via JavaScript:
Can screenshot but not extract as text
Charts/graphs often use Canvas
3D content uses WebGL
Capture as images when needed
Performance optimization
Reduce JavaScript execution time
For faster extraction:
Avoid unnecessary interactions
Don't trigger animations unless needed
Skip optional JavaScript features
Focus on essential data
Handle heavy JavaScript sites
For complex applications:
Break extraction into smaller tasks
Use multiple robots for different sections
Allow extra time for full render
Monitor success rates
When JavaScript content won't load
Check basic requirements
Does the site load in a normal browser?
Are there console errors?
Does it require special permissions?
Is JavaScript actually the issue?
Alternative approaches
If JavaScript content remains problematic:
Look for non-JavaScript version (mobile site?)
Check if data is in page source (view source)
Consider API access if available
Contact support for specific sites
Work with API-powered sites
Sites that fetch data from APIs:
The page structure loads first (empty)
JavaScript requests data from API
Data populates into the structure
Wait for data, not just structure
Troubleshooting JavaScript issues
Content not appearing during extraction
Not waiting long enough for JavaScript to run
Site requires specific browser features
JavaScript errors preventing render
Solutions:
Retrain with different interaction patterns
Check if site works in regular browser
Partial content loading
Some data appears, some doesn't
Random missing elements
Inconsistent extractions
Solutions:
Increase wait times during training
Check for sequential loading (wait for all stages)
Verify no JavaScript errors in console
