Clioos › Guides › Website Screenshots

How to Capture a Full Web Page

By Clioos 团队

A viewport screenshot only shows the top of the page — everything below the fold is missing. Full-page capture is a different job: the renderer scrolls the page step by step to trigger lazy loading, waits for the document to settle, then screenshots the whole document as one tall image. With Shot that is one parameter, full_page: true (it is already the default). On 2 November 2026 a real long guide page rendered as a single 1280x3868 PNG in 3,058 ms.

At a glance

Steps

  1. Get a free API key at https://clioos.com/shot/ (email code or Google sign-in; 20 renders a day per key, no credit card while the probe runs).
  2. POST with full_page true: curl -X POST https://clioos.com/shot/v1/screenshot -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"url": "https://example.com/your-long-page", "full_page": true, "width": 1280, "height": 800}' --output fullpage.png. The width sets the page width; the height is only the initial viewport height — the final image height is set by the page itself.
  3. Watch the pixel cap on long pages: width x height x scale squared must stay under 16,000,000. For a page around 3,868 pixels tall at 1280 wide, scale 1 is about 4.95 million pixels (fits) but scale 2 is about 19.8 million (rejected with 400). If you hit the cap, drop device_scale_factor to 1 or capture the page in sections with a CSS selector.
  4. If sections come out blank, add delay: "delay": 2 gives two extra seconds after load for late content. If the page is infinite-scroll, full-page capture will still end somewhere — it captures the document as loaded, not an endless feed, so set expectations accordingly.
  5. Verify before publishing: open the PNG, check the top, middle and bottom, and confirm the footer rendered. Repeating the identical request within an hour returns a cache HIT and does not consume quota — use that for re-downloads, not re-renders.

Worked example (tested 2 November 2026)

Method, disclosed in full: same server-side test key as the companion screenshot guide (created directly in the Shot database because the public key flow needs an email verification code in a browser; renders called against the local service at 127.0.0.1:8091, the same service behind clioos.com/shot/; test key revoked after the run). Target: a real long page, the live guide at https://clioos.com/guides/pdf/how-to-convert-pdf-to-excel.html, requested with full_page true at 1280x800.

MeasureResult
HTTP status / format200, image/png
Image size1280 x 3,868 pixels — the height is the page's own height, not the 800 requested (800 is only the initial viewport)
File size617,531 bytes
Render timeX-Render-Ms 3,058; wall time 3,147 ms; X-Cache MISS (first render, so it consumed one daily render)
Quota afterX-RateLimit-Remaining 18 — two fresh renders in the run, two quota units spent
Pixel arithmetic1280 x 3,868 = 4,951,040 pixels at scale 1 (under the 16,000,000 cap); at scale 2 it would be 19,804,160 (over the cap, rejected)

Compare with the viewport render of example.com in the companion guide (1280x800, 70,115 bytes, 2,482 ms): the full-page render is about 8.8 times larger in bytes and about 576 ms slower, because it scrolls, waits for lazy content, and encodes a much taller image. Budget quota and time accordingly — a full-page shot is not a free upgrade over a viewport shot.

What it can't do

Viewport vs full page: when to use which

Other names for the same job

People describe this job in different words. To screenshot entire webpage content as one tall image is the same task as full-page capture above: scroll, settle, capture the whole document. A full-page screen grab is also the same thing — just shorter wording for the same output. If a tool only offers a viewport shot, it cannot do this job no matter what it calls the button.

Frequently asked questions

Is full_page true the default in Shot?

Yes. The API default for full_page is true, but set it explicitly in your request so the intent is clear and a future default change cannot silently alter your output.

Why is my full-page image taller than the height I requested?

Height is only the initial viewport height. In full-page mode the final image height is set by the page document itself — a long page produces a tall image, as in the worked example (requested 800, delivered 3,868).

Why did a long page fail at device_scale_factor 2?

The pixel cap: width x height x scale squared must stay under 16,000,000. A 1280x3868 page at scale 2 is about 19.8 million pixels, so it is rejected with 400. Use scale 1 or capture in sections.

Does a full-page render cost more quota than a viewport render?

No — one fresh render costs one daily render either way (20 a day per key, 50 a day per IP). But full-page renders take longer, so they are more likely to approach the 30-second timeout on heavy pages.

What if the bottom of my full-page screenshot is blank?

That section did not load during the scroll-and-settle pass. Try delay 2-5 seconds, then re-render. If it still fails, the content likely needs interaction or login, which Shot cannot do.


Related guides: How to take a screenshot of a website · Shot — fast website screenshot API · All guides · Tool: PDF Probe