Scrolling Screenshot API Capture Full-Page Websites
Capture entire webpages from top to bottom in a single image. The Nodium full page screenshot API handles lazy-loaded content, infinite scroll, and single-page applications automatically. No cropping, no missing content.
Why You Need a Scrolling Screenshot API
Modern websites are built to load content dynamically. A viewport-only screenshot misses most of the page.
How Full-Page Capture Works
Our rendering engine follows a precise sequence to ensure nothing is missed.
Initial render
We load the page in a headless Chromium browser and wait for the DOM to settle. JavaScript executes fully, fonts load, and above-the-fold content renders completely.
Scroll and trigger lazy content
The browser scrolls down the page in increments, pausing at each step to allow lazy-loaded images, IntersectionObserver callbacks, and dynamically injected content to load. The scroll delay is configurable.
Wait for network idle
After scrolling to the bottom, we wait until all pending network requests (images, API calls, fonts) have completed. This ensures every resource has loaded before capture.
Capture the full page
The entire page height is captured as a single stitched image. The output includes everything from the top of the page to the very last pixel of content, up to the configured max height.
Scrolling Screenshot Parameters
Fine-tune full page captures with these dedicated parameters.
| Parameter | Type | Default | Description |
|---|---|---|---|
full_page | boolean | false | Capture the entire scrollable page instead of just the visible viewport. |
full_page_scroll | boolean | false | Scroll down the page before capturing to trigger lazy-loaded content and IntersectionObserver callbacks. |
full_page_scroll_delay | integer | 300 | Milliseconds to wait after each scroll step. Increase for pages with heavy lazy loading. |
full_page_max_height | integer | 16384 | Maximum pixel height for the captured image. Prevents runaway captures on infinite scroll pages. |
Capture a Full Page in One Request
Add full_page=true to any screenshot request.
curl "https://api.nodium.io/api/v1/screenshot?\
url=https://example.com&\
full_page=true&\
format=png" \
-H "X-API-Key: ndm_your_api_key" \
--output full-page.pngconst response = await fetch(
"https://api.nodium.io/api/v1/screenshot?" +
new URLSearchParams({
url: "https://example.com/blog",
full_page: "true",
full_page_scroll: "true",
full_page_scroll_delay: "500",
full_page_max_height: "20000",
format: "png",
}),
{
headers: { "X-API-Key": "ndm_your_api_key" },
}
);
const imageBuffer = await response.arrayBuffer();import requests
response = requests.get(
"https://api.nodium.io/api/v1/screenshot",
params={
"url": "https://example.com/blog",
"full_page": True,
"full_page_scroll": True,
"full_page_scroll_delay": 500,
"format": "png",
},
headers={"X-API-Key": "ndm_your_api_key"},
)
with open("full-page.png", "wb") as f:
f.write(response.content)Use Cases for Scrolling Screenshots
SEO audits and visual QA
Capture entire landing pages to review layout, content hierarchy, and visual consistency across breakpoints. Compare before-and-after screenshots to catch regressions during redesigns.
Design reviews and approvals
Share full-page screenshots with stakeholders for design reviews. No need to scroll through a live site or record a video. A single image tells the whole story.
Web archiving and compliance
Preserve complete webpage snapshots for legal compliance, regulatory audits, or historical archiving. Capture the full page as it appeared at a specific point in time.
Legal evidence and documentation
Capture full-page screenshots of web content for legal proceedings, DMCA claims, or intellectual property documentation. The complete page capture serves as verifiable evidence.
Best Practices for Full-Page Screenshots
Always enable scrolling for lazy-loaded content
If the target page uses lazy loading (most modern sites do), set full_page_scroll=true. Without it, images and sections below the fold will appear as blank placeholders.
Increase scroll delay for heavy pages
Pages with large images, videos, or complex animations may need more time between scroll steps. Try 500-1000ms for media-heavy sites.
Set a max height to prevent runaway captures
Infinite scroll pages (social feeds, product catalogs) will keep loading forever. Set full_page_max_height to cap the capture at a reasonable pixel count.
Combine with device emulation
Capture full-page screenshots at different viewport widths to test responsive layouts. Use the width parameter alongside full_page for mobile, tablet, and desktop views.
Frequently Asked Questions
What is a scrolling screenshot API?
How does Nodium handle lazy-loaded images in full-page captures?
What is the maximum page height I can capture?
How do scrolling screenshots work with infinite scroll pages?
Can I capture full-page screenshots of JavaScript-heavy SPAs?
What formats are available for scrolling screenshots?
Capture entire webpages with one API call
Full-page scrolling screenshots are included in every Nodium plan. Start free with 150 screenshots per month.