ScreenshotNeo

BlogHow-to

How to Capture a Full-Page Screenshot of a Website with URLbox on a Mac

Capture a website’s full scrollable page with Urlbox on a Mac using its CLI or API. Learn which mode to choose and how to fix common capture issues.

By the ScreenshotNeo team4 October 20266 min read

To capture a full-page website screenshot with Urlbox on a Mac, install its CLI, sign in, then run the screenshot command with --full-page and --output:

npm install -g @urlbox/cli
urlbox login
urlbox screenshot https://example.com --full-page --output page.png

Run these commands in Terminal. Replace https://example.com with the page you want and choose an output filename and format. Urlbox’s default full-page mode stitches captures as it scrolls down the page; it also offers a native mode that can be faster but may be less accurate on some sites. See the Urlbox documentation for current options.

1. Capture a full page with the Urlbox CLI

  1. Install Node.js and npm if they are not already available in your Mac development environment.
  2. Open Terminal and install the CLI globally: npm install -g @urlbox/cli.
  3. Run urlbox login and complete the browser authentication flow.
  4. Capture a page: urlbox screenshot https://example.com --full-page --output page.png.
  5. Find the image at page.png in the current working directory.

For a JPEG or WebP output, use a matching extension such as page.jpg or page.webp. Urlbox documents image dimension limits for JPEG and WebP and recommends PNG for full-page captures when those limits could matter.

Use the CLI in CI

Interactive login is convenient on a Mac, but a CI job cannot complete a browser sign-in. Urlbox’s quickstart says to set URLBOX_API_SECRET in the environment instead. Store the secret in your CI platform’s secret manager, then invoke the same screenshot command in the job. Avoid committing API secrets to source control or printing them in build logs.

2. Choose stitch or native full-page capture

Urlbox’s default mode is stitch: it scrolls through the page, captures sections, then combines them. Urlbox describes it as optimized for accuracy and the more reliable option for most sites. Initial scrolling also helps trigger lazy-loaded page content and establish the final scrollable height.

The alternative is native, which uses browser-native full-page screenshot functionality. It is faster, but Urlbox notes it can be less accurate on some pages. To choose it through the API, set full_page_mode to native. The documented CLI command above uses the full-page flag; use the API when you need to set this mode explicitly.

3. Use the Urlbox API instead of the CLI

For scripts or services, send the target URL and full_page: true in an API render request. The core render options are:

{"url":"https://example.com","full_page":true}

To select native mode:

{"url":"https://example.com","full_page":true,"full_page_mode":"native"}

These are the documented render parameters; use Urlbox’s current API documentation for the complete authentication and request format for your account. Keep credentials out of client-side code where visitors could inspect them.

4. Tune full-page captures for difficult pages

Most pages work with the default stitch behavior. Adjust the capture only when you see a specific problem. Urlbox documents these controls:

Problem or goal Option to consider What it does
Lazy content is missing scroll_increment, scroll_delay Smaller scroll increments trigger more frequent scroll events; a longer delay gives content more time to appear. The documented defaults are 4096 pixels and 100 milliseconds, and may change.
Fixed elements repeat or seams appear freeze_fixed, show_seams Stitch mode uses heuristics to capture fixed elements once. Set freeze_fixed: false to disable that behavior; use show_seams: true to inspect section joins.
Page is unusually tall max_height, max_sections Limit the final height or number of stitched sections.
Page uses infinite scroll allow_infinite Urlbox normally stops when it detects an infinite-scroll page. Set allow_infinite: true only when you deliberately want to override that behavior.
Page extends horizontally full_width Set full_width: true with full-page capture to include the scrollable width.
Capture should begin below the top scroll_to Use a pixel offset or CSS selector as the starting point.
Cookie notice or popup obscures content click_accept, hide_cookie_banners Try Urlbox’s documented automated controls, then inspect the output because behavior depends on the page.

Do not raise height or section limits without a reason: very long pages take longer to render and can produce large image files. Infinite feeds may have no natural end, so decide the desired capture extent before enabling that override.

5. Fix common problems

  • The command is not found: Check that npm’s global binary directory is on your shell’s PATH. Reopen Terminal after installing the CLI and confirm the package installation completed.
  • Login does not work in a build job: Use the documented URLBOX_API_SECRET environment variable for CI instead of interactive urlbox login. Verify the secret is present without echoing its value.
  • The image only shows the first viewport: Include --full-page in the CLI command. For API requests, set full_page: true.
  • Lazy-loaded sections are blank: Keep the initial scroll enabled, increase scroll_delay, or reduce scroll_increment so the page receives more scroll events and time to load content.
  • Sticky headers repeat or joins look wrong: Check the stitch output with show_seams: true; if fixed-element handling is causing the issue, try freeze_fixed: false.
  • A long page is cut off: Review max_height and max_sections. If the site is infinite-scroll, decide whether allow_infinite: true is appropriate.
  • The sides of the page are missing: Enable full_width: true along with full-page capture.
  • Cookie banner remains visible: Try click_accept or hide_cookie_banners. These are automated controls, so verify the result for the specific consent interface.
  • JPEG or WebP cannot represent the entire image dimensions: Use PNG for the full-page output, following Urlbox’s documented format guidance.

6. Mac screenshot shortcuts and Safari saves are different

macOS screenshot shortcuts capture the screen, a selected area, or a window: Shift-Command-3 captures the screen, Shift-Command-4 selects a region, and Shift-Command-4 followed by Space captures a window or menu. They do not scroll and combine an entire webpage into a full-page image. Apple’s Mac screenshot guide documents these shortcuts.

Safari’s File > Save As can save a Web Archive or Page Source. Those are useful for archiving a page or saving its HTML, but they are not a single full-page screenshot image. See Apple’s Safari webpage saving guide.

7. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request can return a screenshot or PDF. Cookie banners, newsletter popups, and chat widgets are removed before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and the response identifies the page verdict and billing status in headers. AI agents can use its MCP server tools, including take_screenshot, get_page_info, and capture_pdf.

Use this cURL request to save a full-page capture as WebP:

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

For the Python, Node.js, and other capture options, see the ScreenshotNeo documentation. The API uses the parameter names other screenshot APIs use, which makes switching straightforward. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots. Every feature is on every plan.

Sign up free for 1,000 screenshots a month, with no card required.

FAQ

Can I capture just part of a page with Urlbox?

Urlbox documents element capture as well as full-page capture. Use the element capture workflow when you need a particular page region rather than the whole scrollable document.

Which Urlbox mode should I start with?

Start with the default stitch mode when accuracy and page behavior matter. Try native mode when speed is the priority and inspect the result for layout issues.

Will a full-page capture include content loaded only after scrolling?

Initial scrolling in stitch mode is intended to trigger lazy-loaded content. Pages with slow loading or scroll-triggered animation may need a longer delay or smaller scroll increments.