ScreenshotNeo

BlogHow-to

How to Capture a Full-Page Screenshot of a Web App in Safari on Mac

Safari on Mac has built-in screen captures, but not a documented scrolling webpage screenshot. Here are the practical ways to save a web app’s full page.

By the ScreenshotNeo team4 October 20267 min read

Short answer: macOS’s built-in screenshot shortcuts capture the screen, a window, or a selected area; Apple does not document a scrolling full-page webpage image feature for Safari. To produce a full-page image, evaluate a Safari extension that advertises full-page capture, or use a browser-based screenshot service. Safari’s Save As options preserve webpage content as a Web Archive or HTML source, but they are not screenshot images.

Choose the output you need

Route Output Best for Important limit
macOS screenshot shortcut Image of the screen or selected area Capturing the visible part of a page Does not scroll through the webpage
Safari Save As Web Archive or Page Source Preserving page content or HTML Not a flattened full-page image
Safari extension Potentially full-page PNG or PDF Capturing a long page from Safari Check current listing details and compatibility with your page
Screenshot API Image or PDF returned by a service Repeatable captures, automation, or capture outside the Mac Requires an API key and network request

1. Capture the visible page with macOS

Use this when the part currently visible in Safari is enough. Apple documents these shortcuts:

  • Shift-Command-3 captures the entire screen.
  • Shift-Command-4 lets you select a portion of the screen.

These produce screen captures, not a stitched image of the full scrolling webpage. For a web app with sensitive content, check what is visible in the selected region before saving or sharing the image.

2. Save the webpage from Safari

  1. Open the page in Safari.
  2. Choose File > Save As.
  3. Choose Web Archive to save webpage content and associated resources, or Page Source to save the HTML source.
  4. Choose a location and save.

Apple notes that some webpages may prevent items from being saved. A Web Archive is intended to preserve page content and links; Page Source is HTML. Neither is a full-page screenshot image. If the deliverable must be PNG or JPEG, use an image capture route instead.

3. Use a Safari extension for a full-page image

The Mac App Store listing for FullPage Screenshot for Safari advertises full-page and visible-area capture with PNG and PDF downloads. The listing showed a $2.99 price when researched; prices, requirements, permissions, and privacy disclosures can change. The listing claim is not independent verification that the extension works with a particular web app or page.

  1. Open the extension’s current App Store listing and check its requirements, price, permissions, and privacy disclosure.
  2. Install and enable the extension according to its current instructions.
  3. Open the exact web app page you need, sign in if appropriate, and navigate to the desired state.
  4. Use the extension’s full-page capture action and select PNG or PDF if offered.
  5. Inspect the output for missing content, overlays, clipped sections, or unexpected private information.

Test the target page before relying on this route for an authenticated, highly dynamic, or especially long page. The cited materials do not establish compatibility with every Safari web app or page.

4. Know whether you are using a Safari web app

Apple says Safari web apps require macOS Sonoma 14 or later. You can create one from an open webpage using File > Add to Dock or Share > Add to Dock. Apple describes web apps as behaving like webpages in Safari in many respects while running independently with separate browsing data and settings.

That distinction matters when troubleshooting: an extension’s availability or behavior in a Safari window does not establish that it works in a separately running web app. Check the specific app and page you need to capture. If the extension is unavailable there, open the page in Safari and test it, or use a capture service.

5. Use ScreenshotNeo for a repeatable full-page capture

If you need a capture from a script, another machine, or an AI agent workflow, ScreenshotNeo is a website screenshot API and MCP server. A single GET request can return a PNG, JPEG, WebP, or PDF. The API captures a URL; it does not use Safari’s local signed-in session. For protected content, check the API documentation for the supported authentication and cookie options and provide credentials only when appropriate.

Use the documented full_page option to request the whole page. The options and parameter names are documented at ScreenshotNeo documentation.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://stripe.com \
  -d full_page=true \
  -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",
        "full_page": "true",
    },
    timeout=90,
)
r.raise_for_status()
with open("shot.webp", "wb") as f:
    f.write(r.content)

Node.js

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

Replace the example URL with the page you are authorized to capture. Keep the API key out of public client-side code and source control. The examples save the response body as an image; consult the docs for output format and other settings.

Other capture options

ScreenshotNeo supports full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets and custom viewports, retina scale, PDF settings, custom CSS and JavaScript, clicking or hiding elements, selector/delay/network-idle waits, blocking ads, trackers, requests or resource types, headers, cookies, user agent, Authorization, timezone, geolocation, transparent backgrounds, resizing, cache TTL, signed public image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Check the documentation for exact parameter names and combinations.

For a page that needs authentication, headers or cookies can provide the required context when supported by the target site. For a page with delayed content, choose a wait condition. If a cookie dialog or chat panel obscures content, the clean-capture behavior can remove supported consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off.

Or skip the browser setup

Use the one-call API example above, replacing the sample URL with your page. ScreenshotNeo removes cookie banners, popups, and chat widgets before the shot. Bot checks, blank pages, and failed loads are never billed, and response headers identify the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Sign up for free.

Troubleshooting

Symptom Likely cause What to do
The screenshot only shows the visible area You used a macOS screen capture or a visible-area extension mode Use the extension’s full-page action, or request full_page=true from the API.
The saved file is not an image Safari Save As created a Web Archive or Page Source Choose a screenshot workflow that outputs PNG, JPEG, WebP, or PDF.
The extension is missing in the web app A Safari web app runs independently and extension behavior is not guaranteed by the cited listing Check the extension’s current requirements and test the page in a Safari window.
Part of the page is absent Lazy-loaded or dynamic content may not have appeared before capture, or the capture route may not support it Scroll the page first when capturing manually. In an API workflow, use an appropriate wait condition and consult its docs.
Safari will not save some page items The webpage may prevent saving resources Use another authorized capture route; do not treat a partial archive as a screenshot.
The API request returns an error Possible invalid key, malformed URL, unsupported option, access restriction, or failed page load Check the URL and documented parameter names, confirm credentials, inspect the response and verdict/billing headers, and retry only after addressing the cause.
A capture exposes a login page or private data The capture did not use the intended authenticated context, or the page included sensitive content Confirm authentication handling before capture, limit access to the output, and inspect it before sharing.

Performance, reliability, and cost

  • Manual capture: quickest for a visible-area image, but you must scroll and compose multiple captures yourself if you need the whole page.
  • Extension: convenient for an occasional full-page image, but validate its current listing details and behavior on your specific page.
  • API: useful for repeatable captures and automation. Long pages, dynamic content, waits, and large output files can affect completion time and file size; set a realistic timeout and inspect the returned result.
  • ScreenshotNeo billing: only clean shots are billed; bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Responses include X-Page-Verdict and X-Billed headers. Plans include 1,000 free monthly shots without a card, then Starter $5/3,000, Growth $15/15,000, Pro $39/60,000, Scale $99/250,000, and Business $249/1,000,000; yearly billing gives two months free. Every feature is on every plan.

FAQ

Can I save a full Safari webpage directly as a PNG using Save As?

Apple’s documented Save As formats are Web Archive and Page Source. Use a screenshot tool for an image file.

Does Web Inspector take full-page screenshots?

Apple documents Web Inspector for inspecting webpages, service workers, and extensions. The cited documentation does not describe a full-page screenshot command there.

Will a Safari extension work on every web app?

That is not established by the cited listing. Check its current requirements and test the exact page and app.

Is a screen recording equivalent to a full-page screenshot?

No. A recording captures time and motion; a full-page screenshot is a still image of page content.

Sources