APITemplate.io Screenshot API Alternatives for Full-Page Captures
Compare ScreenshotNeo, Browserless, ScreenshotOne, Urlbox, and ScreenshotAPI.to for full-page captures, lazy-loaded content, output formats, and limits.
If you need an APITemplate.io screenshot API alternative for full-page captures, compare how each service handles content below the fold, lazy-loaded images, page state, output formats, and limits. “Full page” by itself does not guarantee that a long page or its lazy-loaded content will appear in the result. ScreenshotNeo is the first alternative to try: it removes common consent banners, newsletter popups, and chat widgets before capture, bills only clean shots, and has a free plan with 1,000 screenshots per month.
1. ScreenshotNeo: clean full-page captures with predictable billing
ScreenshotNeo is a website screenshot API and MCP server. Its API accepts a URL in one GET request and returns an image or PDF. Full-page capture loads lazy images. You can also capture a CSS-selected element, set a viewport or device preset, wait for a selector or network idle, and tune capture behavior with options such as custom CSS, JavaScript, cookies, and headers. See the ScreenshotNeo API documentation for parameter names and configuration details.
Before capture, ScreenshotNeo accepts the cookie or consent banner as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Each step can be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing; response headers identify the page verdict and billing status.
ScreenshotNeo also provides an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. Plans include 1,000 monthly shots free without a card, then $5 for 3,000, $15 for 15,000, $39 for 60,000, $99 for 250,000, or $249 for 1,000,000. Yearly billing gives two months free, and every feature is on every plan.
One-call examples
Replace YOUR_API_KEY with your access key and change the target URL as needed. These examples save the response body as a WebP file, following the API’s documented request pattern.
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,
)
r.raise_for_status()
with open("shot.webp", "wb") as f:
f.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}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer())));
For public image embeds, use signed links. For batches, the API supports up to 100 URLs per call; asynchronous jobs can deliver results through signed webhooks. It also offers caching with a configurable TTL, a usage API, and an OpenAPI spec. Common parameter names used by other screenshot APIs work too, which can make migration easier.
2. Browserless: browser REST API with explicit scrolling controls
Browserless’s screenshot REST endpoint accepts a URL and Puppeteer-style screenshot options, with PNG, JPEG, and WebP outputs. Its documentation shows options.fullPage: true for a full-page image. For pages that load images as the visitor scrolls, set scrollPage: true as well; Browserless recommends combining it with full-page mode. It also documents wait and navigation options, request rejection controls, and best-effort continuation. See the Browserless screenshot API documentation.
curl -X POST 'https://production-sfo.browserless.io/screenshot?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"url":"https://example.com","options":{"fullPage":true,"type":"png"},"scrollPage":true}' \
--output page.png
Use the endpoint’s documented request schema for your account and region. Browserless also accepts raw HTML, but its docs say not to include both HTML and a URL in one request. Do not assume scrolling will defeat bot defenses: Browserless warns that protected sites may produce blank pages, CAPTCHA challenges, access-denied pages, or missing elements.
3. ScreenshotOne: screenshot-specific full-page tuning
ScreenshotOne documents full_page=true; full-page scrolling is enabled automatically unless overridden. Its options include scroll delay and distance, which can help trigger lazy loading, and full_page_max_height to cap very tall results or infinite-scroll pages. It also documents selector-based capture and controls to scroll an element into view. See the ScreenshotOne options reference.
curl -G 'https://api.screenshotone.com/take' \
--data-urlencode 'access_key=YOUR_ACCESS_KEY' \
--data-urlencode 'url=https://example.com' \
--data-urlencode 'full_page=true' \
--data-urlencode 'full_page_scroll_delay=500' \
--output page.png
Check the current option reference for accepted parameter names and units before using scroll tuning or height limits. Increasing scroll delay can give scripts and images more time to load, at the cost of a longer request. These controls are tools for evaluation, not a guarantee that every site will load identically.
4. Urlbox: broad rendering and output options
Urlbox documents URL or HTML input, full-page and CSS-selector element captures, and controls including scrolling, waits, custom CSS and JavaScript, proxy, headers, and localization. Its product page lists image outputs, video, PDF/SVG, and data outputs such as Markdown, JSON, and hydrated HTML. These are vendor-described capabilities, not a comparative performance result. See the Urlbox screenshot API and Urlbox pricing page for current plan quotas, request-per-minute limits, timeouts, file-size limits, and feature access.
Because Urlbox exposes many output and rendering modes, confirm that the plan you choose includes the formats and controls your workflow needs. Do not assume a feature or quota is included based on a different provider’s terminology.
5. ScreenshotAPI.to: public keyless route for light use
ScreenshotAPI.to documents GET and POST screenshot routes, PNG/JPEG/WebP/PDF outputs, and a fullPage parameter. Its public keyless endpoint is documented with an 8-request-per-minute limit, tighter caps, and no PDF support; the docs position it for quick tests or low-volume embeds. For production use, review the authenticated endpoint and current terms in the ScreenshotAPI.to endpoint documentation.
curl -G 'https://api.screenshotapi.to/v1/screenshot' \
--data-urlencode 'url=https://example.com' \
--data-urlencode 'fullPage=true' \
--output page.png
This illustrates the documented full-page parameter, but check the live API reference for the exact route, authentication requirements, and parameters for your selected endpoint. Do not send sensitive or private URLs to a public keyless endpoint.
6. Compare the APIs against your actual pages
No shared benchmark was run for these services, so documentation alone cannot establish which one is fastest, most reliable, or most faithful on your target pages. Run the same small evaluation against each candidate before choosing.
- Choose a static long page, a JavaScript-rendered page, and a page with lazy-loaded images. Include consent overlays or bot defenses only where they matter to your use case and where you are permitted to access the site.
- Keep viewport dimensions, device scale, desired output, and wait condition consistent across providers.
- For each capture, record whether content below the fold appears, whether lazy images load, and whether the result has the expected dimensions and format.
- Test any element selector, click, or page-state interaction that your workflow needs. A full-page screenshot and an element screenshot answer different questions.
- Record request limits, maximum height, timeout behavior, retry behavior, and the plan cost at your expected monthly volume.
| Provider | Full-page and lazy content | Other documented controls or outputs | Limits and cost checks |
|---|---|---|---|
| ScreenshotNeo | Full-page capture loads lazy images | Element capture, device presets, wait conditions, CSS/JS, headers and cookies, images and PDF, cache, bulk and async workflows, MCP | Free 1,000 monthly; paid plans start at $5 for 3,000. Clean shots are billed; verdict and billing headers are returned. |
| Browserless | fullPage: true; scrollPage: true to trigger lazy loading |
Puppeteer-style options, waits, navigation options, request rejection, PNG/JPEG/WebP; URL or raw HTML input | Check current plan and request limits. Protected pages can show bot checks or incomplete results. |
| ScreenshotOne | full_page=true; automatic scrolling with delay and distance controls |
Maximum full-page height, selector capture, scroll element into view | Check current plan, limits, and any usage-based pricing on its official site. |
| Urlbox | Full-page capture; scroll and wait controls | Selector capture, CSS/JS, proxy, headers, localization; image, video, PDF/SVG, Markdown, JSON, hydrated HTML | Check current quotas, RPM, timeouts, file limits, plan price, and feature access. |
| ScreenshotAPI.to | fullPage captures the full scrollable page |
GET/POST routes; PNG/JPEG/WebP/PDF on documented API, but no PDF on public keyless route | Keyless public route: documented 8 requests per minute and tighter caps. Verify current endpoint terms. |
7. Full-page capture edge cases
Lazy-loaded images and content
A page may defer images or sections until they approach the viewport. A screenshot service that captures the document without scrolling may omit them. Use the provider’s scroll-to-load controls where available, allow enough time after scrolling, and inspect the bottom and middle of the image. ScreenshotNeo full-page capture loads lazy images; Browserless documents scrollPage; ScreenshotOne documents scroll distance and delay.
Infinite scroll and unusually tall pages
Infinite-scroll pages may continue loading indefinitely or create extremely large images. Set a maximum height when the provider supports it, define a bounded scroll strategy, or capture a specific element or section. Check output dimensions and file size; a successful HTTP response can still be impractical to store or display.
Sticky headers, animations, and changing content
Sticky navigation can appear repeatedly or cover content in some full-page implementations. Animations, rotating banners, timestamps, and personalized content can also make repeated captures differ. Where available, wait for a stable selector, add a deliberate delay, or use custom CSS to hide distracting elements. Keep the capture viewport and timing consistent when comparing providers.
Consent banners and site defenses
Cookie overlays can obscure the page, while bot checks can replace the page entirely. ScreenshotNeo accepts consent banners and removes known overlays before capture, with each step configurable. Browserless explicitly warns that automation defenses can result in blank, CAPTCHA, or access-denied captures. No provider should be assumed to bypass a site’s access controls; test only pages you are authorized to capture.
8. Troubleshooting
| Symptom | Likely cause | What to try |
|---|---|---|
| Only the visible viewport is captured | Full-page mode was omitted, misspelled, or unsupported on the chosen route. | Use the provider’s documented parameter or option, then verify the returned image dimensions. |
| Images below the fold are missing | Lazy loading did not trigger, or the page needed more time after scrolling. | Enable scrolling, increase the scroll delay, or use a wait condition. Test a smaller scroll distance if the page reacts poorly to large jumps. |
| The screenshot is blank or shows a CAPTCHA | The site may have returned a bot check, blocked automation, or failed to render. | Inspect the page verdict or response body, check the URL in a normal browser, and follow the site’s access rules. Do not treat a blank capture as proof that the page is empty. |
| The request times out | Slow navigation, blocked third-party resources, or an unbounded page may exceed the timeout. | Wait for a specific selector instead of all network activity where possible, block nonessential resources if supported, and cap full-page height. |
| The image is huge or truncated | A long or infinite page exceeded a height or output constraint. | Set a documented maximum height, capture a selector, or split the workflow into bounded sections. |
| HTTP 401 or 403 | Missing/invalid credentials, an unsupported endpoint, or access restrictions. | Check the key, authentication parameter, endpoint, and account status. For public routes, review their separate caps and limitations. |
| HTTP 429 | The request rate exceeded the endpoint or plan limit. | Reduce concurrency, queue work, and retry with backoff. Confirm the current provider limit before increasing throughput. |
| Unexpected format or PDF failure | The format parameter is invalid or the route does not support that output. | Check the provider’s format list and whether the selected public or authenticated route supports it. |
9. Performance, reliability, and cost
Full-page capture takes longer and returns more data than viewport capture because the page may need to scroll, load deferred content, and render a tall output. Delays improve the chance that asynchronous content has appeared, but they also increase latency. A selector capture can reduce output size when you need one component rather than the entire page. Blocking unnecessary resources may help where supported, but verify that the resources you block do not contain required content.
For reliability, distinguish transport success from useful output. A 200 response may contain a bot challenge or incomplete page. Check response headers, dimensions, expected page content, and provider-specific verdicts. Use bounded timeouts, limited retries with backoff, and idempotent job handling. Cache stable pages when the provider offers caching; avoid caching content that changes frequently or contains user-specific data.
Estimate cost from expected successful captures, format, full-page output size, and concurrency. Check whether a service charges for requests, successful renders, or another unit, and include plan quotas, rate limits, and overages in the comparison. ScreenshotNeo’s stated billing rule is that only clean shots are billed; bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, with the result indicated by response headers. For the other providers, use their live official pricing and plan pages rather than relying on an old comparison.
10. Or skip the browser setup
Call ScreenshotNeo with one GET request. The API returns a screenshot; the request below saves the response as WebP.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes cookie banners, popups, and chat widgets before the shot. Bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. You get 1,000 screenshots a month free with no card, and paid plans start at $5 for 3,000. See the API documentation and sign up free for 1,000 screenshots a month, with no card.
FAQ
Does full-page capture always include every lazy-loaded image?
No. It depends on whether the capture process scrolls the page and gives deferred content enough time to load. Use a provider’s scroll controls and check the resulting image.
Which alternative is fastest or most reliable?
The cited product documentation does not establish a shared performance winner. Evaluate the services with the same pages and settings from your own workflow.
Can I use a keyless screenshot endpoint in production?
ScreenshotAPI.to documents its keyless route for quick tests or low-volume embeds, with an 8-requests-per-minute limit, tighter caps, and no PDF. Review its current terms before using it in production.
Should I use a full-page image or capture a selector?
Use full-page output when the complete document matters. Capture a selector when you need one chart, card, or region and want a smaller, more focused result.
