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.
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
- Install Node.js and npm if they are not already available in your Mac development environment.
- Open Terminal and install the CLI globally:
npm install -g @urlbox/cli. - Run
urlbox loginand complete the browser authentication flow. - Capture a page:
urlbox screenshot https://example.com --full-page --output page.png. - Find the image at
page.pngin 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_SECRETenvironment variable for CI instead of interactiveurlbox login. Verify the secret is present without echoing its value. - The image only shows the first viewport: Include
--full-pagein the CLI command. For API requests, setfull_page: true. - Lazy-loaded sections are blank: Keep the initial scroll enabled, increase
scroll_delay, or reducescroll_incrementso 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, tryfreeze_fixed: false. - A long page is cut off: Review
max_heightandmax_sections. If the site is infinite-scroll, decide whetherallow_infinite: trueis appropriate. - The sides of the page are missing: Enable
full_width: truealong with full-page capture. - Cookie banner remains visible: Try
click_acceptorhide_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.


