ScreenshotNeo

BlogHow-to

How to Screenshot a Webpage That Requires Scrolling

Capture an entire scrolling webpage with Firefox, Edge, DevTools, extensions, or ScreenshotNeo. Includes troubleshooting, automation code, and reliability tips.

By the ScreenshotNeo team1 October 20266 min read

To screenshot a webpage that requires scrolling, use the browser’s full-page capture command instead of a normal operating-system screenshot. Firefox and Microsoft Edge include this capability, and Firefox DevTools provides a command-line-style workflow for developers.

Choose the right method

Method Best for Extension needed? Output
Firefox Save full page Quick manual captures No PNG download or clipboard
Edge Screenshot Quick manual captures in Edge No Copy or save
Firefox DevTools Developer workflows and repeatable commands No Image file
Chrome extension such as GoFullPage Chrome users who accept an extension Yes Depends on the extension
ScreenshotNeo API Automation, CI, backends, and AI agents No PNG, JPEG, WebP, or PDF

Firefox: save the entire page

  1. Open the page in Firefox.
  2. Right-click an empty area of the page and choose Take Screenshot. You can also press Ctrl+Shift+S on Windows or Linux, or Command+Shift+S on macOS.
  3. Choose Save full page in the capture controls. Do not choose Save visible; that option captures only the current viewport.
  4. Download the PNG or copy it to the clipboard.

Mozilla documents that Firefox can capture visible parts or full web pages and copy or save the result. See Firefox screenshot instructions.

When Firefox captures only the viewport

  • Reopen the capture tool and select Save full page.
  • Make sure the page itself, rather than an embedded frame or image, has focus.
  • If content appears only after scrolling, scroll through the page once, wait for images or sections to load, and capture again.

Microsoft Edge: use Screenshot

  1. Open the webpage in Edge.
  2. Open Screenshot from the page context menu or Edge Settings. In supported versions, Ctrl+Shift+S also opens it.
  3. Select the full-page capture option.
  4. Copy the result or save it to a file.

Microsoft notes that Screenshot availability and functionality can vary by device, market, and browser version. If the command is missing, update Edge or use Firefox’s built-in capture.

Firefox DevTools: capture a full page for developer work

Firefox DevTools is useful when you need a repeatable developer-oriented workflow.

  1. Open DevTools with F12 or Ctrl+Shift+I (use Command+Option+I on macOS).
  2. Open the DevTools settings and enable the toolbar button named Take a screenshot of the entire page.
  3. Click the new camera button to save a full-page image.

Firefox also documents the Web Console helper:

:screenshot --fullpage

The --fullpage option includes content outside the current window bounds. This is different from taking a screenshot of the visible viewport.

Chrome and extensions

The research for this guide verifies a Chrome Web Store route through the GoFullPage full-page screenshot extension. Install it only if your organization permits browser extensions, then follow the extension’s current capture controls. Its listing records version 8.9 dated September 24, 2026.

Browser extension behavior can vary with cross-origin frames, authentication, lazy loading, and very long pages. Treat the extension as an optional route rather than assuming every Chrome installation has the same built-in full-page command.

Pages with lazy loading, infinite scroll, or nested scrollers

A full-page command usually captures the document’s layout, but pages that load content on demand need extra care.

  • Lazy-loaded images: scroll through the page first so images enter the loading threshold, wait for them to finish, then capture.
  • Infinite-scroll feeds: load the amount of content you need before capturing. A capture cannot include items that the page has not rendered yet.
  • Nested scroll containers: a full-page document capture may not expand an inner panel with its own scrollbar. Capture the panel separately or use an API element selector.
  • Sticky headers: repeated headers can appear in stitched captures. Check the result and temporarily hide the header with developer tools if necessary.
  • Authenticated pages: stay signed in and confirm that the capture is using the same profile and session. Never place session cookies in a public URL.
  • Animations and videos: pause animations or wait for a stable frame when visual consistency matters.

Or skip the browser setup

ScreenshotNeo captures a full webpage with one GET request. Full-page mode loads lazy images, and you can choose PNG, JPEG, WebP, or PDF output. The API also supports a CSS selector for one element, custom CSS and JavaScript, dark mode, device presets, any viewport, retina scale, waits, request blocking, cookies, headers, authentication, timezone, geolocation, caching, signed links, asynchronous jobs, webhooks, bulk capture, and usage reporting.

Before capture, ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; response headers identify the page verdict and whether the request was billed. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

See the ScreenshotNeo API documentation for authentication and all options.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const bytes = await res.arrayBuffer();
await require('node:fs').promises.writeFile('shot.webp', Buffer.from(bytes));

Useful full-page request options

Need ScreenshotNeo capability
Whole document Full-page capture with lazy images loaded
One panel or component Capture by CSS selector
Consistent viewport Device presets, custom viewport, and retina scale
Dynamic page Wait for a selector, delay, or network idle
Clean output Consent, popup, newsletter, and chat removal
Authenticated content Custom headers, cookies, user agent, and Authorization
Privacy or speed Block ads, trackers, requests, or resource types
Documents PDF paper size, margins, landscape, and page ranges
Repeated URLs Choose a cache TTL; cache hits are not billed
Large batches Bulk capture supports up to 100 URLs per call

Troubleshooting

Symptom Likely cause Fix
Only the visible screen is saved Visible capture was selected Select Firefox Save full page or the browser’s full-page option.
Images are blank Lazy loading had not triggered Scroll through the page, wait, and capture again; for automation, add a selector or network-idle wait.
Content stops at a panel The panel has its own scrollbar Capture the element separately or use a CSS selector with ScreenshotNeo.
Full-page command is missing Browser version or device availability Update the browser, check settings, or use Firefox DevTools.
Cookie banner covers content Consent UI remained open Accept it manually, hide it with custom CSS, or use ScreenshotNeo’s consent cleanup.
Automation returns a blank or failed page Bot protection, timeout, or failed navigation Inspect response status and verdict headers, increase waits where appropriate, and verify the target URL.
Capture is unexpectedly expensive A clean page was billed repeatedly Enable caching with a suitable TTL and reuse results for identical URLs.

Performance, reliability, and cost notes

  • Long pages require more rendering and produce larger files. Use WebP or JPEG when PNG fidelity is unnecessary.
  • Wait only for the condition you need. A selector or network-idle wait is usually more predictable than an arbitrary long delay.
  • Block advertisements, trackers, and unused resource types when they are not part of the screenshot; this can reduce page work.
  • For recurring captures, set a cache TTL and record the response verdict and billed status.
  • For many URLs, use bulk capture rather than opening hundreds of browser tabs.
  • ScreenshotNeo includes 1,000 shots per month on the Free plan without a card. Paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000. Yearly billing gives two months free, and every feature is available on every plan.

Checklist before you publish or process a capture

  • Confirm that the image extends below the initial viewport.
  • Check the bottom of the document for missing sections.
  • Verify lazy-loaded images and fonts are present.
  • Check sticky headers, cookie banners, chat widgets, and popups.
  • Confirm the viewport, color scheme, and device scale.
  • For automation, log HTTP status, page verdict, billed status, and output format.

FAQ

Can a normal Print Screen key capture the whole page?

No. It normally captures the visible screen. Use a browser full-page command or an API.

Which browser method needs no extension?

Firefox and Edge provide built-in full-page screenshot workflows. Firefox DevTools also provides a full-page command.

Can full-page capture include content loaded after scrolling?

Only if that content has been rendered. Scroll through on-demand pages first, or configure an automated wait and interaction.

Can I capture a webpage as a PDF?

Yes. ScreenshotNeo supports PDF output with paper size, margins, landscape mode, and page ranges.

How do I automate screenshots for an AI agent?

Use ScreenshotNeo’s MCP server and its take_screenshot, get_page_info, and capture_pdf tools from an MCP client such as Claude or Cursor.

Create a free ScreenshotNeo account to get 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 screenshots.