Allscreenshots Docs
Features

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:

  1. Scrolls through the page to trigger lazy-loaded content and animations
  2. Detects fixed/sticky elements (headers, footers, floating buttons)
  3. Captures each viewport section while hiding fixed elements
  4. Stitches sections together
  5. 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:

  1. Scrolls through the page to trigger lazy-loaded content
  2. 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

ParameterTypeDefaultDescription
fullPagebooleanfalseEnable full page capture
fullPageModestring"stitch"Capture mode: "stitch" or "native"
freezeFixedbooleantrueHandle fixed/sticky elements (stitch mode only)
scrollIntervalinteger150Delay between scroll steps in ms (50-1000)
maxSectionsinteger100Maximum 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
}
ValueUse case
50-100Fast sites, static content
150Default, works for most sites
200-300Sites with animations or lazy loading
500-1000Heavy 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.png

Fast 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.png

Heavy 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.png

Best practices

Choose the right mode

ScenarioRecommended mode
Pages with sticky navigationStitch
Simple blog postsNative
E-commerce product pagesStitch
Documentation sitesStitch
Quick previewsNative
Marketing landing pagesStitch

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
}

On this page