ScreenshotNeo

BlogComparisons

Screenshotlayer viewport and full-page screenshots: what is the difference?

A viewport screenshot captures the configured screen area; full-page mode requests the page’s full vertical height. Here’s how to choose and configure each.

By the ScreenshotNeo team4 October 20267 min read

A viewport screenshot captures the configured screen area. A full-page screenshot requests the page’s full vertical height. In Screenshotlayer, set fullpage=1 for the full-height capture; leave it off for the viewport-sized view. The vendor documents this distinction but does not describe how its renderer produces the full-height image.

Choose a viewport capture for a consistent screen-sized view, such as a device mockup or above-the-fold comparison. Choose full-page when the capture needs to include content below the fold, such as a page record. These are practical recommendations based on the documented controls, not independent performance tests.

1. What viewport and full-page mean

Mode What it requests Useful for
Viewport The configured screen area, specified by a standard device size or custom viewport. Consistent screen comparisons, device framing, and visible-page previews.
Full page The page’s full vertical height, requested with fullpage=1. Captures that need content below the initial screen area.

Full-page images can be much taller than a viewport image. The available Screenshotlayer documentation does not establish a maximum height or promise unlimited capture length, so check the current API documentation and test unusually long pages with your actual target.

2. Configure Screenshotlayer

Use your Screenshotlayer access key and the API endpoint and parameter names from its current documentation. The following request shapes illustrate the relevant settings; replace placeholders and verify the endpoint format for your account before running them.

Viewport capture

curl -G "https://api.screenshotlayer.com/api/capture" \
  --data-urlencode "access_key=YOUR_ACCESS_KEY" \
  --data-urlencode "url=https://example.com" \
  --data-urlencode "viewport=1440x900" \
  --data-urlencode "format=png" \
  -o viewport.png

Full-page capture

curl -G "https://api.screenshotlayer.com/api/capture" \
  --data-urlencode "access_key=YOUR_ACCESS_KEY" \
  --data-urlencode "url=https://example.com" \
  --data-urlencode "viewport=1440x900" \
  --data-urlencode "fullpage=1" \
  --data-urlencode "format=png" \
  -o full-page.png

Screenshotlayer’s product page demonstrates fullpage=1 with viewport=2560x1440 for a crisp full-height capture. It also shows a custom viewport such as 375x667 for a mobile-style view, paired with mobile user-agent and language settings. Refer to the Screenshotlayer product page for its current parameter examples.

Python request shape

import requests

params = {
    "access_key": "YOUR_ACCESS_KEY",
    "url": "https://example.com",
    "viewport": "1440x900",
    "fullpage": "1",  # Remove this parameter for a viewport capture.
    "format": "png",
}
response = requests.get(
    "https://api.screenshotlayer.com/api/capture",
    params=params,
    timeout=90,
)
response.raise_for_status()
with open("full-page.png", "wb") as image_file:
    image_file.write(response.content)

Node.js request shape

const params = new URLSearchParams({
  access_key: 'YOUR_ACCESS_KEY',
  url: 'https://example.com',
  viewport: '1440x900',
  fullpage: '1', // Remove this parameter for a viewport capture.
  format: 'png',
});

const response = await fetch(
  `https://api.screenshotlayer.com/api/capture?${params}`
);
if (!response.ok) {
  throw new Error(`Screenshot request failed: ${response.status}`);
}
const bytes = new Uint8Array(await response.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('full-page.png', bytes));

These Python and Node.js examples use the same parameter model for clarity. Confirm the current Screenshotlayer endpoint and response behavior in its documentation before using them in production; the research source documents the product controls and examples, not a complete API reference.

Setting Role How it relates to capture height
viewport Chooses the screen dimensions and framing, using a device size or custom dimensions. Defines the configured screen area; it is not the same as asking for full-page output.
fullpage=1 Requests a full-height screenshot. Changes requested vertical coverage.
width Sets a compact output width in the vendor’s thumbnail example. Not the viewport dimensions: the example uses a 1440×900 viewport and width=300 for a thumbnail.
format Selects the output image format. Separate from coverage. The vendor FAQ lists PNG as the default and PNG, JPEG, or GIF as formats available through the format parameter.
Custom CSS, delay, cache time, forced refresh Adjust rendering, waiting, or caching behavior. Separate controls; they are not substitutes for full-page mode.
User agent and accept-language Influence the browser-style identity and language used for the request. May affect the rendered page content, but do not define viewport versus full-page coverage.

Do not infer that full-page mode is universally higher quality. The documented difference is coverage and dimensions, not a measured quality comparison.

4. Choose the capture that fits the task

  1. For a screen-sized comparison: choose a fixed viewport that is the same across captures. Leave fullpage out.
  2. For a mobile-style view: use a mobile viewport such as 375x667, and set the user agent and language as needed for the page you are capturing.
  3. For a whole-page record: set fullpage=1. Choose an appropriate viewport as well, since it determines the screen framing the page is rendered against.
  4. For a thumbnail: treat output width as a sizing control, not as the viewport. The vendor’s example keeps the viewport at 1440×900 while setting width to 300.
  5. For repeatable output: keep viewport, format, user agent, language, custom CSS, and delay consistent between runs where those settings apply.

5. Edge cases to account for

  • Very long pages: a full-height result may be substantially taller than the viewport. The retrieved vendor source does not specify a maximum output height, so validate image dimensions and processing for the pages you need.
  • Content that appears after load: the vendor lists delay as a separate rendering control. A delay may help with late-loading content, but the source does not guarantee it will capture every dynamic element.
  • Responsive layouts: a different viewport can change the page layout and therefore the full-page result. Keep viewport dimensions stable when comparing captures.
  • Thumbnails: output width and viewport serve different roles. Reducing output width does not mean you requested a smaller screen viewport.
  • Formats and downstream use: select a format your consumers can process. Screenshotlayer’s FAQ identifies PNG, JPEG, and GIF; confirm current support and defaults before relying on them.

6. Troubleshooting

Symptom Likely cause What to check
The image stops at the first screen fullpage=1 was omitted, misspelled, or not passed as a parameter. Inspect the final request parameters and confirm the full-page setting in the current Screenshotlayer documentation.
The capture has the wrong framing The viewport dimensions do not match the intended device or comparison size. Set an explicit viewport and use the same dimensions across comparable captures.
The page looks mobile when desktop was expected, or vice versa Viewport, user agent, or both are changing responsive behavior. Review the viewport and user-agent settings together; the vendor’s mobile example uses a mobile viewport and mobile-style request settings.
The image is a thumbnail when a full-size capture was expected An output width parameter was mistaken for the viewport. Remove or adjust output width and set the desired viewport separately.
Lower content is absent even in full-page mode The page may render content dynamically or the capture may have returned before it appeared. Try an appropriate delay, check the page directly, and verify whether the API response indicates an error. The available source does not document every dynamic-content behavior.
Request fails or exceeds your allowance Credentials, request parameters, service limits, or account terms may be involved. Check the response and account dashboard, then consult current documentation and terms. Pricing materials and terms describe over-limit behavior inconsistently, so do not assume a particular outcome.

7. Performance, reliability, and cost

A full-page capture produces a taller image than a viewport capture when the page extends below the fold. That can mean more image data to store, transfer, or process downstream; the amount depends on the page and output settings. The source does not provide comparative latency or file-size benchmarks, so measure with your own pages if those determine the design.

For repeat captures, Screenshotlayer lists cache time and forced refresh as separate controls. Decide whether freshness or reuse matters for your workflow and configure caching accordingly. The vendor’s pricing FAQ describes monthly snapshot allowances and notifications at 75%, 90%, and 100%, followed by overage charges in its pricing materials. Its terms page also says requests may return an error after the monthly limit is exceeded. Since these pages conflict, verify the current account terms and overage behavior before estimating production costs. Plan prices and quotas can change; consult the current Screenshotlayer pricing page.

Screenshotlayer describes a dedicated worker as a server entity assigned to capture one screenshot and says ten workers allow ten concurrent snapshots. This is the vendor’s description, not independent capacity testing. Confirm the plan details that apply to your account before relying on a concurrency assumption.

8. Or skip the browser setup

ScreenshotNeo provides a screenshot API and MCP server for developers. One GET request with a URL returns a PNG, JPEG, WebP, or PDF. Its website screenshot API supports viewport and full-page capture alongside device presets, CSS selectors, custom CSS and JavaScript, waits, headers, cookies, user agents, caching, and other capture settings. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before the shot. Bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots. Sign up for 1,000 free screenshots a month, with no card required.

9. FAQ

What does fullpage=1 do?

Screenshotlayer documents it as the option for a full-height screenshot.

Does full-page mode ignore the viewport?

The vendor’s example combines fullpage=1 with a viewport value. Treat them as separate settings: one specifies the screen framing, and the other requests full-height coverage.

Is a 300-pixel output width a 300-pixel viewport?

No. Screenshotlayer’s thumbnail example uses width=300 with a 1440×900 viewport, demonstrating that output width and capture viewport have different roles.

Which mode should I use for a device mockup?

Use a viewport-sized capture when the intended result is a consistent screen view. Use full-page when the entire vertical page needs to appear.

Does Screenshotlayer guarantee an unlimited full-page height?

The cited product material does not establish an unlimited height or specify a maximum. Check the current documentation for your use case.