ScreenshotNeo

BlogGuides

How to Choose a Screenshot API: Key Features to Compare

Choose a screenshot API by matching capture, rendering, authentication, output, and workflow needs to documented features, operating costs, and plan terms.

By the ScreenshotNeo team4 October 202611 min read

Choose a screenshot API by starting with the job the image must do: capture the visible viewport, render a full page, represent a particular device size, access private content, support a repeated workflow, or detect visual changes. Then verify that each candidate documents the controls your workload needs, test representative pages, and compare current quotas, commercial terms, and operational effort.

A feature checklist alone cannot establish comparative image quality, speed, uptime, or value. The provider documentation examples below show what particular APIs document; they are not a universal feature baseline or an independent performance comparison.

1. Define the screenshot job

Before comparing providers, write down what a successful capture must contain and how the output will be used. These decisions narrow the required options and expose edge cases early.

  • Visible viewport: capture only what fits in the browser viewport.
  • Full page: capture the whole document, including content below the fold. Check how the provider handles lazy-loaded images, very tall pages, sticky elements, and page length limits.
  • Element or region: capture a particular component or clipped area. Check whether the service supports a selector, clipping coordinates, or both.
  • Responsive state: render at the required viewport and determine whether the API emulates only dimensions or also device characteristics.
  • Protected content: capture a staging site, account page, or other route requiring authentication.
  • Repeated workflow: capture many URLs, schedule recurring renders, cache results, or inspect changes between captures.
  • Downstream format: decide whether the consumer needs PNG, JPEG, WebP, PDF, or another documented output.

Separate must-haves from conveniences. For example, a one-off documentation thumbnail may not need batch capture or visual comparison, while a regression workflow may depend on repeatable viewport and readiness settings.

2. Compare the features that affect the result

Area Questions to ask Why it matters
Capture mode Viewport, full page, clipped region, or selector? Are there height, size, or element limits? The capture boundary determines what appears in the result. Providers use different parameter names and may impose different limits.
Responsive rendering Can width, height, scale, or a device preset be selected? Which device traits are emulated? A narrow desktop viewport is not necessarily the same as a mobile device render. Confirm the documented emulation behavior.
Readiness and timing Which navigation wait conditions, timeouts, delays, network-idle checks, or selector waits are available? Applications may continue rendering after document navigation completes. A deterministic capture point matters for dynamic pages.
Authentication and request context Can you pass cookies, authentication inputs, or custom headers? How are sensitive values transmitted and retained? Private pages need the right session and request context. Keep credentials and session data on trusted server-side code.
Output Which image and document formats are supported? What quality, dimensions, or resolution parameters apply? Format affects file size, transparency, fidelity, and compatibility. Options may differ by format.
Workflow and scale Is there batch capture, caching, quota reporting, asynchronous jobs, or visual comparison? Repeated workloads need clear quota accounting and failure behavior, not just a convenient single request.
Operating model Should the team use a managed API or operate browser automation itself? This is a choice about infrastructure responsibility, control, integration work, and costs for your workload. There is no universal winner established by the sources reviewed.
Commercial terms What are the current quotas, concurrency limits, overages, retention terms, support terms, and service commitments? These details change and can materially affect a purchase. Verify them with the provider before committing.

3. Check capture modes, viewport, and output

Viewport and full-page captures are separate capabilities. ScreenshotEngine documents a height value for full-page capture; Cloudflare Browser Rendering documents a fullPage option. Those examples show why you should confirm the precise control and its limits rather than assume every screenshot endpoint behaves the same way. See the [ScreenshotEngine parameter reference](https://shotengine.com/docs) and [Cloudflare screenshot documentation](https://developers.cloudflare.com/browser-rendering/).

For responsive work, record the exact viewport width and height, scale factor, and any device preset required. Ask whether presets change only dimensions or also emulate device traits. Capture at a consistent configuration when comparing pages over time.

Output formats in the reviewed provider documentation include PNG, JPEG, and WebP; one set also lists PDF. ScreenshotEngine documents image, PDF, and video output modes, while Screenshot API documents PNG, JPEG, WebP, and PDF. Do not infer that a format or its associated quality settings work across all providers. Cloudflare notes in its screenshot endpoint documentation that the quality parameter is incompatible with the default PNG format and returns a 400 error; check each endpoint’s parameter compatibility before constructing requests.

4. Test readiness, dynamic content, and authentication

For dynamic pages, compare the actual readiness controls: navigation event, overall timeout, fixed delay, selector wait, or network-idle condition. A browser reaching a load event does not prove that every application has finished rendering. Cloudflare’s Browser Rendering screenshot documentation describes wait conditions and authentication inputs; exact availability and semantics vary across APIs. See [Cloudflare screenshot documentation](https://developers.cloudflare.com/browser-rendering/).

For a candidate API, test at least one representative page that loads content asynchronously, one page with lazy-loaded assets, and one page behind the authentication method you need. Make the readiness condition specific where possible. A long fixed delay can waste time on fast pages and still be too short for slow ones; a selector that appears before the page is visually complete may also be insufficient.

For private content, establish how the API accepts cookies or authentication inputs and what the provider says about handling them. Send secrets from trusted server-side code, restrict their scope, and avoid embedding API keys, session cookies, or authorization headers in browser-delivered JavaScript or public examples.

5. Evaluate recurring workflows and self-managed browsers

Batching, caching, quota visibility, and visual comparison matter when captures run repeatedly. Check whether failed captures consume quota, how a batch reports per-URL failures, whether cached results count toward usage, and whether asynchronous work has a status endpoint or callback mechanism.

Features documented by particular providers illustrate these differences: Screenshot API documents batch capture and rate-limit information; Screenshot API.net describes a comparison endpoint that reports changed-pixel percentage, changed regions, and a diff image, and says each render consumes one quota unit while the comparison itself is free. Those are provider-specific plan descriptions, not market-wide guarantees. See [Screenshot API documentation](https://screenshotapi.net/documentation) and [Screenshot API.net documentation](https://screenshotapi.net/).

Choose between a managed API and running browser automation by estimating the work your team will own: browser deployment and updates, concurrency, queueing, retries, monitoring, storage, and security controls. A self-managed browser can provide direct control over the environment; a hosted API can reduce the infrastructure your team must operate. The right balance depends on your workload and staff, and the available comparison source does not establish a universal cost or reliability winner.

6. Run a representative evaluation

  1. Choose representative URLs. Include ordinary pages, a long page, a dynamic page, a mobile layout, and a protected page if relevant.
  2. Fix the capture specification. Record viewport, full-page behavior, format, readiness condition, authentication context, and any custom headers or cookies.
  3. Inspect outputs and failures. Confirm that the expected content is present and record how errors, timeouts, and blocked pages are reported.
  4. Repeat captures. Re-run the same pages under the same settings to see whether the results are suitable for your workflow. This is your evaluation, not a published benchmark.
  5. Measure operational needs. Estimate request volume, peak concurrency, batch size, storage, retries, and the effort required to manage browser infrastructure.
  6. Review current terms. Confirm pricing, quotas, rate limits, overages, data handling, support, and service commitments in the provider’s official current materials.

Keep the evaluation specific to your actual workload. The dossier contains no comparable current price/performance study and no independent measurements of provider latency, uptime, image fidelity, security, or support quality.

7. Do-it-yourself: call a screenshot endpoint with cURL

When evaluating an API, start with a minimal request to a URL you are authorized to capture. The example below follows Screenshot API’s documented parameters. Its documentation lists a 60-request-per-minute limit and 500 screenshots per month for its free tier at the time reviewed; these are provider-published figures that may change, so verify the current [Screenshot API documentation](https://screenshotapi.net/documentation) before relying on them.

curl -G 'https://shot.screenshotapi.net/screenshot' \
  --data-urlencode 'token=YOUR_API_KEY' \
  --data-urlencode 'url=https://example.com' \
  --data-urlencode 'output=image' \
  --data-urlencode 'file_type=png' \
  --data-urlencode 'full_page=true' \
  -o screenshot.png

Check the provider’s current endpoint and parameter names before running the example: URLs and API parameters are provider-specific. Keep the token out of source control and public client-side code. If the response is an error document rather than an image, inspect the HTTP status and response body instead of treating it as a successful capture.

cURL options to verify

  • Capture boundary: full page, viewport, element, or clipping settings.
  • Viewport and scale: explicit dimensions and supported device emulation.
  • Readiness: navigation wait mode, selector wait, timeout, or delay.
  • Output: image format, PDF settings, and format-specific quality controls.
  • Context: authentication, custom headers, cookies, timezone, or geolocation where supported.
  • Operations: batch, cache, async mode, quota, rate limits, and error reporting.

There is no universal parameter set: use each selected API’s official endpoint documentation as the source of truth.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers, made by Yorker Media. One GET request returns PNG, JPEG, WebP, or PDF. Its capture options include full-page rendering with lazy images loaded, CSS selector captures, device presets and custom viewports, waits, authentication context, custom CSS and JavaScript, batch capture, caching, signed links, and asynchronous jobs. See [ScreenshotNeo](https://screenshotneo.com) and the [ScreenshotNeo API documentation](https://screenshotneo.com/docs/).

For this title, the practical distinction is the capture workflow: ScreenshotNeo accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms along with newsletter popups and chat widgets; each step can be turned off. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses include X-Page-Verdict and X-Billed headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

cURL:

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

Python:

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)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Starter is $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free, and every feature is on every plan. [Create a free ScreenshotNeo account](https://screenshotneo.com/account/sign-up/) to get 1,000 screenshots a month with no card.

8. Troubleshoot common selection and capture problems

Symptom Likely cause What to check or change
Content is missing from a full-page image Lazy-loaded content has not appeared, full-page mode is disabled, or the page has unusual scrolling behavior. Confirm the capture mode and provider limits. Use a documented readiness or scrolling option if available, and test against the page structure.
The page looks unfinished The capture occurs at navigation completion while application rendering or network requests continue. Use a supported selector wait or other readiness condition; set a suitable timeout and verify the condition marks visual readiness.
Private page shows a login screen Authentication data was missing, expired, scoped incorrectly, or sent in an unsupported way. Check the provider’s documented auth inputs, cookie domain/path and expiry, and whether the API can reach the protected environment.
Request returns HTTP 400 A parameter is invalid or incompatible with the requested format. Read the response body and endpoint documentation. For example, Cloudflare documents that its quality option is incompatible with default PNG output.
Screenshot is the wrong size Viewport dimensions, scale, full-page mode, or device emulation differ from the intended capture. Set and record the relevant dimensions and scale; verify what a device preset emulates.
Batch has partial failures One or more URLs timed out, were inaccessible, or failed individually. Use per-item result reporting if documented, retry only eligible failures, and confirm how failed items affect quota.
Unexpected usage or throttling Rate limits, batch accounting, retries, caching, or failure billing differ from assumptions. Check current quota and rate-limit documentation, inspect response headers and usage reports, and build backoff for throttled requests.
Local browser automation differs from hosted output Browser version, fonts, network access, locale, device settings, or timing differ. Align documented environment and rendering settings before judging a provider or migration.

9. Performance, reliability, and cost

Do not select on an advertised feature list alone. Measure latency and repeatability on your representative pages if those factors matter, because the reviewed sources do not provide a comparable independent benchmark. For a recurring pipeline, also consider queueing, concurrency, timeouts, retry behavior, cache policy, and the cost of storing and reviewing outputs.

Estimate volume from actual workflow frequency: URLs per run × runs per day × days per month, then account for retries, multiple viewport variants, and comparison renders. Ask how the provider counts successful captures, failed captures, cache hits, batches, and comparison operations. Do not assume a failed request is free or billed unless the provider says so.

For self-managed browsers, include engineering time and infrastructure in cost estimates, alongside the API or compute bill. For hosted services, compare the current plan quota and overage rules against expected volume and peak concurrency. Price, plans, regions, and commercial commitments are volatile; confirm them at purchase time.

10. A concise selection checklist

  • Capture mode matches the job: viewport, full page, element, or region.
  • Viewport and device emulation produce the required responsive state.
  • Readiness controls work on representative dynamic pages.
  • Authentication can be passed securely for protected pages.
  • Required image or document formats and their options are documented.
  • Batching, caching, quota visibility, and visual comparison fit the workflow.
  • Failure reporting and retry behavior are clear.
  • Current price, rate limits, concurrency, overages, retention, support, and service terms are acceptable.
  • Managed API effort is compared with the browser infrastructure your team would otherwise operate.

FAQ

How do I choose a screenshot API?

Define the capture job and required output first, then validate readiness, authentication, workflow, and commercial requirements against official documentation and representative pages.

Which screenshot API features should I compare?

Compare capture boundary, viewport emulation, readiness controls, authentication, formats, batch and cache behavior, quota visibility, failure handling, and current plan terms.

Do I need a screenshot API or should I run a browser myself?

Choose based on how much control your workload needs and how much browser infrastructure your team is prepared to operate. Estimate both engineering and service costs for the same workload.

Can I assume full-page capture includes every lazy-loaded image?

No. Confirm the provider’s documented behavior and test pages with lazy content; full-page support alone does not specify how every site loads assets.

Are provider plan limits stable?

No. Quotas, pricing, and other terms can change, so verify current official plan information before a purchase or publication.