Browshot vs Urlbox for Full-Page Website Screenshots
Compare Browshot and Urlbox for full-page screenshots: page limits, lazy loading, rendering controls, integrations, and pricing. See what to test before choosing.
Short answer: Both Browshot and Urlbox offer hosted APIs for full-page website screenshots. Urlbox exposes full_page: true and documents stitch and native capture modes; Browshot uses size=page and documents full-page captures up to 15,000 pixels high. Neither is a universal winner: test both against your own long pages, lazy-loaded content, sticky elements, and workload before deciding.
This is a documentation-based comparison, not a report of side-by-side capture tests. Vendor options, limits, and prices can change. Confirm them in the current documentation and pricing for your account before relying on them.
1. What differs for full-page capture?
| Decision area | Urlbox | Browshot |
|---|---|---|
| Full-page option | full_page: true |
size=page |
| Documented capture approach | Default stitch mode scrolls and combines sections; native mode uses browser full-page capture and is faster, but may not work well on every site. | Public feature material emphasizes real browsers and device and location options. The reviewed documentation describes a page-size capture. |
| Long pages | Configurable sections and maximum height; section and output-format limits matter. | Documentation states full-page height up to 15,000 pixels. |
| Lazy loading and scrolling | Stitch mode scrolls before capture by default to help lazy content load and estimate final height. Controls include scroll increments, delay, and infinite-scroll behavior. | Request controls include a post-load delay; use representative pages to verify lazy content is present in the resulting image. |
| Page state | Scroll target, offsets, full-width controls, and other render options are documented. | Request controls include delay, custom headers, cookies, scripts, CSS-selector targeting, viewport dimensions, and POST data for paid screenshots. |
| Browser and location options | Check the current plan and documentation for the browser and render options your workflow needs. | Feature material documents device options, private browser instances, and geographic IP choices including Germany, the UK, the US, and Australia. Confirm availability for your account. |
| Integration | Render links can be embedded directly; synchronous and asynchronous JSON API requests are documented. | API access, screenshot status lookup, retrieval, and optional callbacks for completed or failed captures are documented. The feature page lists Perl, Python, and Ruby libraries. |
| Published pricing evidence | Pricing page lists Lo-Fi at $19/month for up to 2,000 renders, Hi-Fi at $49/month for up to 5,000, and Ultra at $99/month for up to 15,000. Prices exclude VAT; complex scenarios may consume additional credits. | The reviewed feature page describes premium browser use as credit-based, but does not provide a directly comparable current price schedule. |
These are vendor-documented features and limits, not independent findings about relative accuracy or speed.
2. How Urlbox full-page capture works
Set full_page: true. Its default stitch approach scrolls the page, captures sections, and combines them. The documentation says it scrolls to the bottom first by default; skip_scroll disables that step and may reduce render time depending on page height. Scrolling helps trigger lazy-loaded content, but page-specific scripts and sticky elements can still affect the output.
Urlbox also documents a native mode that uses browser-native full-page capture. It is faster according to the vendor, but may not work as well on every website. Compare both modes on the pages you care about instead of assuming one is consistently better.
Relevant Urlbox controls
| Control | What to verify |
|---|---|
full_page |
Enable full-page output. |
skip_scroll |
Skip the preliminary scroll; check whether lazy-loaded sections remain absent. |
scroll_increment, scroll_delay |
Adjust scrolling behavior and time between increments for pages that load content on scroll. |
allow_infinite |
Control handling of pages that keep loading more content. Set a boundary and inspect what was captured. |
max_sections, max_section_height, max_height |
Bound section count, section dimensions, or total capture height. Confirm how your chosen output format affects the usable maximum. |
scroll_to, full_width |
Control scroll positioning and full-width capture behavior for layouts that need them. |
The documentation describes 4,096 pixels as the default maximum height of each stitched section. It also describes a full-height-background adjustment that can use a 1,024-pixel maximum section and viewport in the detected scenario. Output-format dimensions differ: the documented maxima are 65,535 × 65,535 pixels for JPEG and 16,383 × 16,383 for WebP; PNG is recommended for full-page captures where those constraints matter. Confirm current limits and validate that downstream image tools can handle the resulting file.
3. How Browshot full-page capture works
Use size=page for a full-page screenshot. Browshot’s documentation states a maximum full-page height of up to 15,000 pixels. Request options documented in the API include a post-load delay, viewport dimensions, max_wait, custom headers, cookies, scripts, and CSS-selector targeting. POST data is documented for paid screenshots.
The retrieved Browshot documentation gives different supported ranges for delay across documentation endpoints, although one endpoint describes a five-second default. Verify the current reference for the specific endpoint and instance you plan to use. The API also documents status lookup and screenshot retrieval, with an optional callback for finished or failed captures.
When a page uses lazy loading, a post-load delay alone may not trigger content that only appears after scrolling. Check whether the resulting screenshot includes the sections your application needs. If it does not, test the available script or selector controls and verify their current syntax and behavior in Browshot’s API reference.
4. Compare them on the pages you actually capture
Run a small evaluation before committing to a provider. Use the same URLs, viewport, output format, and page state wherever the services allow it. Save the result and the request settings for each run.
- Choose representative pages: a normal article, a long page, a page with lazy-loaded images or content, and a page with sticky headers or footers. Include an infinite-scroll page only if it is part of your workload.
- Set the required viewport, cookies, headers, and authentication state. Make sure both requests see the same page content.
- For Urlbox, compare stitch and native modes where relevant. Try scrolling controls on lazy-loaded pages and set sensible section or height boundaries.
- For Browshot, use
size=page; test delay and any required scripts or selector targeting. Check whether the capture reaches the content you expect. - Inspect the images for missing sections, duplicated or distorted sticky elements, unexpected blank areas, clipping, and output dimensions. A successful API response alone does not establish that the full page looks right.
- Repeat runs if the source page changes or loads nondeterministically. Record the output format, final dimensions, completion behavior, and any credit or render usage shown by each account.
- Estimate monthly cost using your own mix of URLs, formats, render options, and expected volume. Recheck current terms immediately before purchase.
This procedure compares outcomes for your pages; it does not imply either provider is faster or more accurate in general.
5. Integration, cost, and operational fit
Integration style
Urlbox documents direct render links as well as synchronous and asynchronous JSON API requests. A direct link can suit a simple render flow; an asynchronous request is useful to consider when your application should submit work and retrieve the result later. Confirm the exact response and polling behavior in its current API docs.
Browshot documents API calls, status lookup, result retrieval, and an optional callback hook for finished or failed captures. Its feature page lists Perl, Python, and Ruby libraries. Confirm the current client and endpoint details for your stack.
Cost at your expected volume
Urlbox’s published page lists $19/month for up to 2,000 renders on Lo-Fi, $49/month for up to 5,000 on Hi-Fi, and $99/month for up to 15,000 on Ultra. It also lists Business at $498/month with a $495 base and $3 per 1,000 renders displayed, and Enterprise from $3,000/month. The page says prices exclude VAT and render accounting can depend on duration, file size, and advanced features. Treat these as page listings, not a guaranteed quote.
The reviewed Browshot feature material describes premium browsers as credit-based and says credits can be purchased, but it does not establish a current comparable per-render price for full-page screenshots. Do not infer which service is cheaper from the available figures. Check the current account-specific terms and estimate the same workload against both.
Reliability and performance considerations
- Long pages can produce large files and take longer to render. Set section and height limits where available, and choose an output format your consumers can process.
- Scrolling and waiting may improve coverage of lazy-loaded content, but add render work. Skipping scroll may save time on some pages while missing content on others.
- Infinite-scroll pages have no natural end. Define a stopping boundary and check the bottom of the result.
- For production flows, account for asynchronous completion, failed captures, and callback or status handling. Retain enough request context to retry a failed job with the same settings.
- Pages can change between captures or depend on cookies, geography, and authentication. Make those inputs explicit if reproducibility matters.
6. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server for developers. It supports full-page captures with lazy images loaded, and offers PNG, JPEG, WebP, or PDF output. One GET request captures a URL:
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}`);
See the ScreenshotNeo API documentation for request options. Cookie banners are accepted and removed before the shot, along with 60+ known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, and failed loads are never billed, and response headers say whether the page was clean and billed. Its MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up free and get 1,000 screenshots a month with no card.
7. Troubleshooting full-page captures
| Symptom | Likely cause | What to try |
|---|---|---|
| Bottom sections or images are missing | Content loads only after scrolling, or capture ended at a height or section limit. | For Urlbox, test stitch scrolling and adjust scroll delay or increments; review maximum sections and height. For Browshot, check page height against the documented 15,000-pixel maximum and test available scripts or delay. Inspect the actual output. |
| Sticky header appears repeatedly or overlaps content | Stitching captures a fixed element in multiple sections, or the site’s layout changes while scrolling. | Compare Urlbox native and stitch modes and test its scroll-related controls. Try Browshot’s available CSS or script controls. Verify results on the target site; do not assume either mode handles every fixed element identically. |
| Capture is unexpectedly short | A configured maximum, infinite-scroll boundary, or page-height limit stopped capture. | Review Urlbox’s max_height, section settings, and allow_infinite. For Browshot, compare actual page length with its documented limit. |
| Image is rejected by a downstream consumer | Dimensions exceed the consumer’s limits or the selected format’s constraints. | Check actual pixel dimensions. For Urlbox, account for documented JPEG and WebP dimension limits and consider PNG where appropriate; verify current limits and your consumer’s requirements. |
| Content differs between runs | Page state, cookies, geography, timing, or live content changed. | Set the same viewport, headers, cookies, and timing inputs for each run. Capture a stable test URL and compare saved outputs. |
| Request is still processing or has failed | Capture may require asynchronous completion or hit a page-specific load problem. | Use the provider’s documented status and retrieval flow; Browshot documents status lookup and callbacks. Check the final status before treating a returned job identifier as an image. |
| Delay option behaves differently than expected | Documentation endpoints may describe different supported ranges or defaults. | Check the current API reference for the endpoint and instance in use. Browshot’s retrieved docs vary on delay ranges. |
| Costs exceed a simple render estimate | Credits may depend on render duration, file size, browser tier, or advanced options. | Measure usage for a representative batch and calculate cost using current account terms. Urlbox documents scenario-dependent credit accounting; Browshot’s reviewed page does not establish a comparable current full-page rate. |
8. Frequently asked questions
Which one should I choose?
Choose based on the output quality, controls, integration, geographic or device needs, and total cost you observe on representative pages. The available documentation does not support a universal winner.
Can I capture an infinite-scroll page in full?
There is no fixed full length if the site keeps loading content indefinitely. Set a stopping boundary, then confirm that the captured portion matches your use case. Urlbox documents an allow_infinite control and height or section limits.
Is native capture always the best Urlbox mode because it is faster?
No. Urlbox describes native mode as faster but warns that it may not work well on every site. Compare it with stitch mode on your target pages.
Does the 15,000-pixel Browshot limit mean every page up to that height will render correctly?
It is a documented maximum height, not a guarantee about lazy loading, sticky elements, or visual accuracy for every page. Inspect the output.
Are the listed Urlbox prices a quote?
No. They are published plan listings; the pricing page says VAT is excluded and render accounting can depend on scenario. Confirm current terms with the provider.
