Full page capture
Capture entire scrollable pages with intelligent fixed element handling
Full page capture
Capture complete web pages beyond the visible viewport, including all scrollable content. AllScreenshots offers two capture modes optimized for different scenarios.
Basic usage
Enable full page capture with the fullPage parameter:
{
"url": "https://example.com",
"fullPage": true
}Capture modes
Choose between two capture algorithms based on your needs:
Stitch mode (default)
The stitch mode captures the page in viewport-sized sections and intelligently stitches them together. This mode properly handles fixed/sticky elements like headers and footers.
{
"url": "https://example.com",
"fullPage": true,
"fullPageMode": "stitch"
}How it works:
- Scrolls through the page to trigger lazy-loaded content and animations
- Detects fixed/sticky elements (headers, footers, floating buttons)
- Captures each viewport section while hiding fixed elements
- Stitches sections together
- Overlays fixed elements at correct positions (headers at top, footers at bottom)
Best for:
- Pages with fixed headers or footers
- Sites with lazy-loaded content
- Pages with scroll-triggered animations
- Long landing pages and documentation
Native mode
Uses the browser's built-in full page screenshot capability. Faster but doesn't handle fixed elements.
{
"url": "https://example.com",
"fullPage": true,
"fullPageMode": "native"
}How it works:
- Scrolls through the page to trigger lazy-loaded content
- Takes a single full-page screenshot using Playwright's native capability
Best for:
- Simple pages without fixed elements
- Maximum speed when quality trade-offs are acceptable
- Pages where fixed element duplication is not a concern
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
fullPage | boolean | false | Enable full page capture |
fullPageMode | string | "stitch" | Capture mode: "stitch" or "native" |
freezeFixed | boolean | true | Handle fixed/sticky elements (stitch mode only) |
scrollInterval | integer | 150 | Delay between scroll steps in ms (50-1000) |
maxSections | integer | 100 | Maximum sections to capture (1-200) |
Fixed element handling
When freezeFixed is enabled (default), stitch mode intelligently handles fixed elements:
Headers
Fixed headers are captured once and placed at the top of the final image:
{
"url": "https://example.com",
"fullPage": true,
"freezeFixed": true
}Footers
Fixed footers are placed at the bottom of the final image, not repeated in every section.
Floating elements
Floating buttons, chat widgets, and side elements are positioned at their relative vertical location.
If you're experiencing issues with specific fixed elements, you can disable this feature with "freezeFixed": false and the elements will appear in their natural scroll position.
Scroll timing
Control how quickly the page scrolls during capture:
{
"url": "https://example.com",
"fullPage": true,
"scrollInterval": 300
}| Value | Use case |
|---|---|
50-100 | Fast sites, static content |
150 | Default, works for most sites |
200-300 | Sites with animations or lazy loading |
500-1000 | Heavy sites with complex animations |
Lower values are faster but may miss lazy-loaded content. Higher values ensure all content loads but increase capture time.
Limiting page height
For very long pages, limit the capture height:
{
"url": "https://example.com",
"fullPage": true,
"maxHeight": 10000
}Or limit by number of sections:
{
"url": "https://example.com",
"fullPage": true,
"maxSections": 50
}Examples
Landing page with sticky header
curl -X POST 'https://api.allscreenshots.com/v1/screenshots' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"fullPage": true,
"fullPageMode": "stitch",
"freezeFixed": true
}' --output landing-page.pngFast capture without fixed handling
curl -X POST 'https://api.allscreenshots.com/v1/screenshots' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"fullPage": true,
"fullPageMode": "native"
}' --output quick-capture.pngHeavy page with animations
curl -X POST 'https://api.allscreenshots.com/v1/screenshots' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"fullPage": true,
"scrollInterval": 400,
"delay": 2000,
"waitUntil": "networkidle"
}' --output animated-page.pngBest practices
Choose the right mode
| Scenario | Recommended mode |
|---|---|
| Pages with sticky navigation | Stitch |
| Simple blog posts | Native |
| E-commerce product pages | Stitch |
| Documentation sites | Stitch |
| Quick previews | Native |
| Marketing landing pages | Stitch |
Combine with wait options
For best results with dynamic content:
{
"url": "https://example.com",
"fullPage": true,
"waitUntil": "networkidle",
"delay": 1000,
"scrollInterval": 200
}Consider file size
Full page screenshots can be large. Consider:
- Using JPEG format for photos:
"format": "jpeg", "quality": 85 - Limiting height for very long pages:
"maxHeight": 15000 - Using WebP for best compression:
"format": "webp"
Troubleshooting
Fixed elements appearing multiple times
Switch to stitch mode with fixed element handling:
{
"fullPage": true,
"fullPageMode": "stitch",
"freezeFixed": true
}Missing lazy-loaded content
Increase scroll interval and add delay:
{
"fullPage": true,
"scrollInterval": 300,
"delay": 2000,
"waitUntil": "networkidle"
}Page too long / timeout
Limit the capture height:
{
"fullPage": true,
"maxHeight": 20000,
"maxSections": 50
}Animations causing duplicate content
Use stitch mode which pre-scrolls to trigger all animations before capture:
{
"fullPage": true,
"fullPageMode": "stitch",
"scrollInterval": 250
}