Comparison · Published
Urlbox Alternative: When Switching to SnapshotFlow Pays Off (2026)
Urlbox has been rendering screenshots since 2012 and is one of the most complete screenshot APIs you can buy. Its prices are also lower than they look at first glance: each plan has volume steps, so 10,000 or 50,000 screenshots a month on Hi-Fi cost about the same as on SnapshotFlow, sometimes less.
So the useful question isn't "which one is cheaper" but "in which situations does moving off Urlbox actually save money or work". This page answers it with four cost scenarios, the options Urlbox ties to a plan, and the features only one side has.
Sources: Urlbox's pricing calculator (monthly billing), options reference, API reference and MCP package, all checked on November 6, 2026. Every number below can be checked on the vendor pages linked at the end.
TL;DR
- Switching saves money if you capture third-party sites at up to about 5,000 a month ($15 vs $49 at 2,000), or you need to run your own JavaScript before capture, which Urlbox puts on its Ultra plan.
- Switching doesn't save money if Hi-Fi's features are enough and you capture 10,000 or more a month. Hi-Fi is $2 cheaper at 10,000, $12 at 15,000 and $9 at 50,000.
- Stay on Urlbox if you need video or scrolling captures, proxies or a static IP, captcha solving, GPU rendering, PDF headers and margins, saving straight to S3 or Azure, or a SOC 2 Type II report. SnapshotFlow has none of these today.
- Reasons that aren't about price: SnapshotFlow has
/diffand/batchendpoints and 300 free screenshots with no time limit. Both have a hosted MCP server, full-page capture, PDF, HTML input, ad and cookie-banner blocking, async webhooks, Markdown extraction and browser geolocation emulation.
The line on Urlbox's pricing page most people miss
Urlbox's entry plan, Lo-Fi at $19 a month for 2,000 renders, is described on the pricing page as "Screenshot websites you own". Its row in the comparison table reads "3rd Party Website Screenshots: Thumbnails Only". Hi-Fi moves that to "Most" sites, and Ultra to "All".
That matters because most screenshot API jobs are about other people's sites: link previews, competitor tracking, SEO audits, archiving, agents browsing the web. For those jobs the entry price on Urlbox is Hi-Fi at $49 for 5,000 renders, not $19.
SnapshotFlow doesn't split sites into "yours" and "theirs". The $15 Basic plan captures any public URL at the size and pixel density you ask for, and the 300 free screenshots work the same way.
When switching pays off: four scenarios
Urlbox prices each plan in volume steps. On monthly billing, Hi-Fi is $49 for 5,000 renders, $67 for 10,000, $87 for 15,000 and $240 for 50,000; Ultra starts at $99 for 15,000 and is $280 for 50,000. If you go over your step, Urlbox "automatically upgrade[s] you to the next tier". SnapshotFlow has three paid plans and a fixed price per extra screenshot: $0.009 on Basic, $0.006 on Growth and $0.004 on Scale. Each SnapshotFlow figure below is the cheapest plan-plus-overage combination for that volume.
1. Third-party sites, Hi-Fi features are enough
| Screenshots / month | Urlbox Hi-Fi | SnapshotFlow | Difference |
|---|---|---|---|
| 2,000 | $49 (smallest step is 5,000) | Basic: $15 | SnapshotFlow −$34 |
| 5,000 | $49 | Basic $15 + 3,000 × $0.009 = $42 | SnapshotFlow −$7 |
| 10,000 | $67 | Growth: $69 | Urlbox −$2 |
| 15,000 | $87 | Growth $69 + 5,000 × $0.006 = $99 | Urlbox −$12 |
| 50,000 | $240 | Scale: $249 | Urlbox −$9 |
Verdict: switching pays off at low volume. From 10,000 a month, price is not a reason to leave Hi-Fi.
2. You need your own JavaScript before capture
Closing a modal, expanding a section, setting localStorage: on Urlbox the js option requires Ultra. On SnapshotFlow scripts works on every plan.
| Screenshots / month | Urlbox Ultra | SnapshotFlow | Difference |
|---|---|---|---|
| 2,000 | $99 (smallest step is 15,000) | $15 | SnapshotFlow −$84 |
| 5,000 | $99 | $42 | SnapshotFlow −$57 |
| 10,000 | $99 | $69 | SnapshotFlow −$30 |
| 15,000 | $99 | $99 | Tie |
| 50,000 | $280 | $249 | SnapshotFlow −$31 |
Verdict: this is where switching makes the most sense. Custom request headers are similar: on Urlbox header requires Hi-Fi, which matters for the Lo-Fi case below.
3. Your own sites, Lo-Fi quality is fine
If you only capture sites you own (your app, your customers' pages on your platform) and don't need custom headers or JS, Urlbox Lo-Fi is $19 for 2,000, $52 for 10,000 and $200 for 50,000. SnapshotFlow is $15, $69 and $249 at the same volumes.
Verdict: SnapshotFlow is slightly cheaper up to about 5,000 ($15 vs $19 at 2,000, $42 vs $44 at 5,000, where Lo-Fi's next step is 8,000 renders). From 8,000 a month Lo-Fi wins on price ($44 vs $69 at 8,000).
4. You need proxies, a static IP, an SLA or SOC 2
SnapshotFlow can't do this today: proxy targeting is coming soon, and there's no SOC 2 report or contractual SLA. Urlbox covers it on Ultra and Business ($495 a month plus $3 per 1,000 renders).
Verdict: stay on Urlbox.
What else changes the bill
- A Urlbox render isn't always one render. Urlbox's pricing footnote says one render is used "for each 30 second period" a request takes and for each 5 MB of file size. GPU renders count double, managed proxies cost 2× to 50×, and each captcha solved on Urlbox's keys costs 3 renders. Long full-page PNGs of heavy pages can cross 5 MB.
- Repeat requests. Urlbox's API reference says
/v1/render/syncis "not cached, and not de-duplicated", so the same request twice counts as two renders; caching applies to render links. On SnapshotFlow, a cache hit on/screenshotreturnsX-Cache: HITand doesn't use quota. If you re-capture the same URLs often, this can matter more than the list price. - Failures are free on both. Urlbox doesn't charge for failed renders, and SnapshotFlow charges only for successful new captures.
- Annual billing. Urlbox has discounted annual prices; all figures here are monthly billing for both.
For how per-screenshot, per-second and self-hosted pricing compare across the market, see Screenshot API Pricing Explained.
Options that need a higher Urlbox plan
Urlbox's options reference marks some parameters with "Requires the HiFi plan or above" or "Requires the Ultra plan or above". These are the ones that come up in everyday screenshot work:
| What you need | Urlbox option and plan | SnapshotFlow |
|---|---|---|
| Send a custom request header (auth token, feature flag) | header: Hi-Fi ($49) or above | headers: request parameter, no plan requirement |
| Run your own JavaScript before capture | js: Ultra ($99) or above | scripts: request parameter, no plan requirement |
| Save to your own S3 bucket | use_s3, s3_*: Hi-Fi or above | Not available: download from a signed link |
| Route through your proxy | proxy, use_proxy: Ultra or above | Coming soon (see geo-targeting) |
| Automatic retries on failure | retry_on, max_retries: Ultra or above | Not built in: retry in your client |
| Send the render to an LLM | use_llm, llm_*: Ultra or above | Not available as a parameter: use extract_content or the MCP tools and call your own model |
On SnapshotFlow the plans differ only in volume, rate limit and overage price, plus visual diffs on Growth and Scale and signed webhooks on Scale (see pricing). Headers, cookies, CSS and JS injection, clicks, waits and blocking are regular parameters on every plan.
Feature matrix
✓ = available, ~ = partial or a workaround, — = not available. Urlbox column from urlbox.com/pricing and urlbox.com/docs, checked November 6, 2026.
Capture and output
| Feature | SnapshotFlow | Urlbox |
|---|---|---|
Full page, viewport, element (selector) | ✓ | ✓, plus scroll-scene controls for tricky pages |
| Formats | PNG, JPEG, WebP, PDF | PNG, JPG, WebP, PDF, SVG, MP4, WebM, Markdown |
| HTML input instead of a URL | ✓ html (base64) | ✓ html |
| Retina / pixel density | ✓ device_scale_factor up to 3 | ✓ retina, 4K and 5K |
| PDF paper size, landscape, background | ✓ | ✓ |
| PDF margins, headers, footers, page ranges | — | ✓ |
| Video, animated and scrolling captures | — on the roadmap | ✓ |
| GPU rendering for WebGL | — | ✓ beta, Ultra or above |
| Markdown / text extraction | ✓ extract_content | ✓ save_markdown |
Page control
| Feature | SnapshotFlow | Urlbox |
|---|---|---|
| Block ads, trackers, cookie banners | ✓ Ghostery lists | ✓, plus click_accept |
| Hide elements, click before capture | ✓ | ✓, plus hover and click-all |
| Wait conditions | ✓ wait_until, wait_for_selector, delay | ✓, plus wait-for-element-to-leave |
| Dark mode, reduced motion, timezone, user agent | ✓ | ✓ |
| Custom headers and cookies | ✓ every plan | ✓ headers from Hi-Fi |
| Stealth mode and captcha solving | — | ✓ |
Delivery and workflow
| Feature | SnapshotFlow | Urlbox |
|---|---|---|
| Image straight in the response | ✓ default; json and base64 also available | ✓ response_type=binary; the API default is JSON with a renderUrl |
| Async with webhook | ✓ async + webhook_url | ✓ /v1/render/async + webhook_url |
| Batch endpoint | ✓ POST /batch, 1 to 10 URLs | ~ one URL per API request; bulk through the CLI or CaptureDeck |
| Visual diff endpoint | ✓ GET /diff | ~ no diff parameter in the options reference; page comparison listed among MCP tools |
Signed links you can put in <img> | — | ✓ render links |
| Save to S3, R2, GCS, Azure | — | ✓ Hi-Fi or above |
| Quota in response headers | ✓ X-Quota-Used, -Limit, -Remaining | ~ usage endpoint and email alerts at 80%, 90%, 100% |
Tooling, trust and support
| Feature | SnapshotFlow | Urlbox |
|---|---|---|
| Official SDKs | Node.js, Java | Node.js, Python, PHP and more |
| CLI | — (cURL works; see the cURL guide) | ✓ @urlbox/cli with an agent skill |
| Hosted MCP server | ✓ | ✓ |
| Free start | 300 screenshots, one time, no card, no time limit | 7-day trial, no card |
| SOC 2 Type II | — | ✓ attested February 2026 |
| Track record | Newer product | Since 2012, 700 million+ screenshots (Urlbox, Nov 2025) |
Geo-targeting: emulation today, country IPs coming soon
"Screenshot this page as a visitor from Germany sees it" can mean two different things, and the two products differ on one of them.
- Browser geolocation emulation. The page asks
navigator.geolocationwhere the visitor is and gets the coordinates you set. This drives store locators, maps and "near you" widgets. Both products have it:geolocation_latitude,geolocation_longitudeandgeolocation_accuracyon SnapshotFlow;latitude,longitudeandaccuracyon Urlbox. Pair it withtimezonefor local dates. - A request from a real IP in that country. This changes what the server sends back: prices in local currency, geo-blocked content, regional redirects, local search results. It needs a proxy. Urlbox supports your own proxy and managed proxies on Ultra and above, plus a static IP for allowlisting. Managed proxies cost 2× renders for geo.
proxy_country, proxy_region, proxy_city, and proxy for your own endpoint) is in the API reference but not live yet. If you need screenshots from a country IP today, Urlbox does it now. If browser emulation is enough, SnapshotFlow covers it on every plan.
The difference between the two methods, with examples of what each one changes on a real page, is in our guide to geo-targeted screenshots.
MCP and AI agents: no longer a difference
Not long ago, an MCP server was a reason to move off Urlbox. That's no longer true. Version 2.0 of @urlbox/screenshot-mcp (October 2026) describes a hosted server at https://api.urlbox.com/mcp with sign-in for Claude, ChatGPT, Claude Code, Codex and Cursor. It covers screenshots, PDFs, video, HTML, Markdown and article text, page comparison, and management of projects, webhooks and usage. Urlbox also ships a CLI with an agent skill.
The SnapshotFlow MCP server works the same way: one remote URL and sign-in through OAuth. It has five tools: screenshot, batch_screenshot, visual_diff, extract_text and check_job. Setup guides cover Claude Code, Cursor, Codex and four more clients.
{
"mcpServers": {
"snapshotflow": { "url": "https://api.snapshotflow.com/mcp" },
"urlbox": { "url": "https://api.urlbox.com/mcp" }
}
}
For agents, pick on the same grounds as for the REST API: cost per capture and which tools you need. Urlbox's MCP has video and account management; SnapshotFlow's has batch capture, visual diff and a text-only tool. extract_text uses the same one quota unit as a screenshot, but the agent gets Markdown instead of an image, which usually means fewer model tokens when it only needs to read the page.
Visual diff and batch in one call
Two SnapshotFlow endpoints have no direct REST counterpart in Urlbox's API reference.
/diff captures two live URLs at request time and returns a PNG with the changed pixels highlighted. Use it for staging vs production, or two variants of a page. To compare against an earlier version, that version needs its own URL (a staging build, an archived copy). Add response_type=json to get the change percentage instead of the image. A diff uses two quota units, one per capture.
curl -G "https://api.snapshotflow.com/diff" \ -H "X-Api-Key: $SNAPSHOTFLOW_KEY" \ --data-urlencode "before=https://staging.example.com/pricing" \ --data-urlencode "after=https://example.com/pricing" \ --data-urlencode "threshold=0.1" \ --output diff.png
/batch takes up to 10 URLs in one request and returns one result per URL:
curl -X POST "https://api.snapshotflow.com/batch" \
-H "X-Api-Key: $SNAPSHOTFLOW_KEY" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com","https://example.org"],"format":"webp","full_page":true}'
Full workflows are in visual regression testing, website change detection and the batch screenshot guide.
Same task, both APIs
The task: a full-page WebP of example.com with ads and cookie banners removed.
Urlbox (REST, sync)
curl -X POST "https://api.urlbox.com/v1/render/sync" \
-H "Authorization: Bearer $URLBOX_SECRET" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"format": "webp",
"full_page": true,
"block_ads": true,
"hide_cookie_banners": true,
"response_type": "binary"
}' \
--output example.webp
SnapshotFlow
curl -G "https://api.snapshotflow.com/screenshot" \ -H "X-Api-Key: $SNAPSHOTFLOW_KEY" \ --data-urlencode "url=https://example.com" \ --data-urlencode "format=webp" \ --data-urlencode "full_page=true" \ --data-urlencode "block_ads=true" \ --data-urlencode "block_cookie_banners=true" \ --output example.webp # The image is the response body.
Both can return the file directly. Without response_type, Urlbox's API returns JSON with a renderUrl, and SnapshotFlow returns the image. Add response_type=json on SnapshotFlow for metadata instead. The visible differences are the auth header, GET with query parameters vs POST with JSON, and a few option names.
Migration map: Urlbox options to SnapshotFlow
Most names are the same or close. The wait values have different names, and headers and cookies switch from repeated key=value pairs to JSON.
| What you want | Urlbox | SnapshotFlow |
|---|---|---|
| Endpoint | POST /v1/render/sync | GET /screenshot |
| Get the file, not JSON | response_type=binary | default (response_type=image) |
| Auth | Authorization: Bearer SECRET | X-Api-Key: KEY or ?api_key= |
| Viewport | width, height | width, height |
| Full page / element | full_page, selector | full_page, selector |
| Retina | retina=true | device_scale_factor=2 |
| Resize output | thumb_width, thumb_height | image_width, image_height |
| Transparent background | transparent | omit_background |
| Ads and cookie banners | block_ads, hide_cookie_banners | block_ads, block_cookie_banners |
| Block URLs | block_urls | block_requests (comma-separated) |
| Hide elements | hide_selector | hide_selectors (comma-separated) |
| Inject CSS / JS | css, js | styles, scripts |
| Wait for DOM ready | wait_until=domloaded | wait_until=domcontentloaded |
| Wait for load event | wait_until=loaded | wait_until=load |
| Wait for network quiet | requestsfinished / mostrequestsfinished | networkidle0 / networkidle2 (the default) |
| Wait for an element | wait_for | wait_for_selector |
| Extra delay | delay | delay (up to 10,000 ms) |
| Headers / cookies | header=K%3DV, cookie=K%3DV (repeat) | headers JSON object, cookies JSON array |
| Timezone | tz | timezone |
| Geolocation | latitude, longitude, accuracy | geolocation_latitude, geolocation_longitude, geolocation_accuracy |
| Proxy / country IP | proxy, use_proxy | Coming soon |
pdf_page_size, pdf_orientation, pdf_background | pdf_paper_format, pdf_landscape, pdf_print_background | |
| Markdown | save_markdown | extract_content=true, content_format=markdown |
| Skip cache | force=true | cache=false |
| Async | POST /v1/render/async + webhook_url | async=true + webhook_url |
The same change in Node.js. Before, with Urlbox:
const res = await fetch('https://api.urlbox.com/v1/render/sync', {
method: 'POST',
headers: { Authorization: `Bearer ${URLBOX_SECRET}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ url: target, format: 'webp', full_page: true, response_type: 'binary' }),
});
const img = await res.arrayBuffer();
After, with SnapshotFlow:
const qs = new URLSearchParams({ url: target, format: 'webp', full_page: 'true' });
const res = await fetch(`https://api.snapshotflow.com/screenshot?${qs}`, {
headers: { 'X-Api-Key': SNAPSHOTFLOW_KEY },
});
const img = await res.arrayBuffer();
Prefer an SDK? See the Node.js SDK guide or the Java SDK guide.
When to stay on Urlbox
- You render video or scrolling captures. SnapshotFlow has video on the roadmap only. Until then, recording a website as video covers the DIY route.
- You need country IPs or an allowlisted static IP now. SnapshotFlow's proxy targeting is coming soon, not live.
- Your targets fight bots. Urlbox has stealth mode and captcha solving; SnapshotFlow has neither.
- You produce PDFs with headers, footers and margins. SnapshotFlow's PDF options stop at paper size, orientation and background.
- Procurement asks for SOC 2 Type II or files must go straight to your bucket. Urlbox has the report and S3, R2, GCS and Azure uploads.
- You embed signed image URLs in emails or templates. Urlbox render links do that without any server code.
If none of these apply, check which scenario matches you. Low volume or custom JavaScript: switching saves money. Hi-Fi at 10,000 or more a month: it doesn't, and the reasons to move are the diff and batch endpoints, not the bill.
FAQ
Is SnapshotFlow cheaper than Urlbox?
It depends on volume and options. For third-party sites, SnapshotFlow is cheaper up to about 5,000 a month ($15 vs $49 at 2,000; $42 vs $49 at 5,000). From 10,000, Urlbox Hi-Fi is slightly cheaper ($67 vs $69 at 10,000, $240 vs $249 at 50,000). If you need custom JavaScript, which Urlbox puts on Ultra, SnapshotFlow is cheaper or equal at every volume we checked.
Can Urlbox's $19 Lo-Fi plan screenshot any website?
Urlbox describes Lo-Fi as "Screenshot websites you own" and lists third-party website screenshots on it as "Thumbnails Only". Full-quality captures of most third-party sites start on Hi-Fi at $49 a month.
Does Urlbox have an MCP server?
Yes. Urlbox runs a hosted MCP server at api.urlbox.com/mcp with sign-in, and publishes @urlbox/screenshot-mcp as a local bridge. SnapshotFlow's hosted MCP server is at api.snapshotflow.com/mcp.
Does SnapshotFlow support proxies or country-specific screenshots?
Not yet. Country, region and city proxy targeting is coming soon. Today SnapshotFlow can emulate browser geolocation and timezone on every plan, which covers maps and "near you" widgets but not content the server picks by IP.
How long does a migration from Urlbox take?
For a typical integration, change the endpoint and auth header, rename a few options using the migration map, and switch from a JSON body to query parameters. Video, proxy, S3 and PDF header options have no equivalent yet.
Try it on your own URLs
You get 300 free screenshots with no card and no time limit. Run the same URLs you send to Urlbox today, compare the output, then find your volume in the cost scenarios.
Sources
All checked November 6, 2026. Prices and plan limits change; check the vendor page before you decide.
- Urlbox pricing: plans, volume steps in the monthly calculator, third-party screenshot row, render footnotes, FAQ on going over quota
- Urlbox render options: option names,
response_type, and "Requires the … plan" notes - Urlbox API reference:
/v1/render/sync, caching note, auth - @urlbox/screenshot-mcp on npm: hosted MCP server and tools
- Urlbox SOC 2 Type II announcement and 13 years, 700 million screenshots
- SnapshotFlow: pricing and API reference