ScreenshotNeo

BlogComparisons

Apify Website Screenshot Actor vs Browserless for Screenshot APIs

Compare Apify’s Website Screenshot Actor with Browserless’s Screenshot API by workflow, capture controls, state, and cost—and choose the right fit.

By the ScreenshotNeo team4 October 202610 min read

Apify’s i-scraper/website-screenshot is a community-maintained Actor that runs as a job and exposes results through Apify storage. Browserless’s Screenshot API is a direct REST call for one screenshot task, with documented controls for formats, viewport, full-page capture, selectors, and waits. Choose Apify if you want to use an Actor run-and-retrieve workflow; choose Browserless if a direct screenshot endpoint and its documented capture options fit your integration. There is no benchmark here to establish a performance or reliability winner.

For a third option, ScreenshotNeo is a website screenshot API and MCP server. It removes known consent banners, newsletter popups, and chat widgets before capture, and bills only clean shots. Its plans start with 1,000 free screenshots per month without a card.

What is being compared

“Apify screenshot Actor” can refer to several Store listings with different maintainers and schemas. This comparison uses the specific community Actor i-scraper/website-screenshot, whose listing shows a URL list and format selection. Check that Actor’s current input and output schema before building against it.

Browserless’s current Screenshot API is a REST endpoint that accepts a URL or raw HTML and returns image data. The older Browserless BaaS v1 screenshot page is marked as no longer actively supported; new integrations should start from the current REST documentation.

At a glance

Area Apify: i-scraper/website-screenshot Browserless Screenshot API
Workflow Start an Actor run, track it, then retrieve run output from its default dataset. Make a REST request for a screenshot task and receive image data.
Input documented in the cited material Sample request includes a urls list and format. URL or raw HTML.
Formats documented PNG and JPG. PNG, JPEG, and WebP.
Capture controls Confirm details against this Actor’s current schema; the listing excerpt does not establish the full feature set. Full page, quality, clip, viewport, device scale factor, selectors, waits, navigation configuration, and request filters are documented.
State Actor-specific behavior; inspect its schema and implementation for session handling. REST requests are stateless: cookies and page state are discarded after each response.
Published cost evidence The Store listing displayed pricing from $6.00 per 1,000 results when accessed in 2026. The reviewed documentation does not provide a directly comparable price.

The cost figures are not equivalent units by themselves. Compare current prices using the same number of URLs, page lengths, output formats, retries, and storage needs.

How the workflows differ

Apify: run an Actor and retrieve its dataset

  1. Send input to the selected Actor through the Apify API.
  2. Track the run until it finishes or fails.
  3. Read the finished run’s default dataset for output items.
  4. Validate each item’s shape and locate or download the screenshot according to the Actor’s current schema.

Apify’s general API supports run and run-sync-get-dataset-items paths. A run may be a natural fit when the surrounding system already uses Actors, run status, and datasets. Your integration must account for run completion and output retrieval. The listing identifies the Actor as community-maintained, so verify its current behavior and maintenance status before relying on it operationally.

Browserless: make a direct screenshot request

Browserless describes REST APIs as single-action HTTP calls. Send a request to its current Screenshot API with the required token and screenshot input/options, then handle the returned image data. This maps naturally to a service that expects an image response from an HTTP call. Its REST calls do not preserve cookies or browser state between requests; workflows that require persisted state should use the session-oriented product path described in Browserless’s documentation.

Capture controls and site behavior

Browserless options documented for screenshots

The Screenshot API documentation describes options for:

  • Full-page or viewport capture.
  • Image format, including PNG, JPEG, and WebP, and quality settings where supported.
  • Clip region, viewport dimensions, and device scale factor.
  • Capturing an element by selector.
  • Navigation and waiting configuration.
  • Filtering requests.

For pages that load images or content as you scroll, Browserless notes that scrolling before a full-page capture can trigger lazy-loaded content. A full-page setting alone may not cause every site to load content that only appears after scrolling or interaction.

Apify options shown by the cited Actor listing

The listing example shows a list of URLs and a format value, and identifies PNG and JPG output. Do not assume other screenshot APIs’ parameter names or options work with this Actor. Inspect the current input schema and output examples in the listing before adding selector capture, viewport settings, waiting behavior, authentication, or batching assumptions.

Cookies, login, and bot defenses

Browserless REST requests are stateless, and the documentation lists blank screenshots, CAPTCHA pages, 403/access-denied responses, and missing elements as possible signs of bot blocking. The docs describe separate unblocking options, while warning that basic unblocking may not overcome advanced fingerprinting or interactive CAPTCHAs. These are vendor-described capabilities, not a guarantee that a given site will allow capture.

For authenticated pages, establish how cookies or credentials are supplied and whether they persist for the workflow you need. Do not send secrets in URLs when an authorization header is available: Apify’s API reference recommends a Bearer authorization header over placing the API token in the URL, where it may be retained in logs or browser history. Treat output screenshots as potentially sensitive if the captured page contains account or personal data.

Implementation patterns

The examples below show the integration shapes, not a universal Actor schema or a substitute for checking the current provider documentation. Browserless request options and response handling can depend on the current endpoint contract; use its API reference for the exact request format and token handling.

Apify Actor run and result retrieval with cURL

# Start the Actor run with input JSON. Replace the actor path and input with the current schema.
curl -X POST \
  "https://api.apify.com/v2/acts/i-scraper~website-screenshot/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"urls":["https://example.com"],"format":"png"}'

# From the run response, use the defaultDatasetId after the run completes.
curl "https://api.apify.com/v2/datasets/DEFAULT_DATASET_ID/items?clean=true" \
  -H "Authorization: Bearer $APIFY_TOKEN"

The sample input reflects the listing’s visible urls and format fields. Confirm the accepted format spelling and dataset item schema in the live listing. In production, retain the run ID, poll or otherwise monitor status, handle non-success terminal states, and fetch results only when ready.

Browserless request shape

Browserless documents its screenshot endpoint and option set in its current API reference. The exact endpoint URL, token parameter, and payload shape should be copied from that documentation for the account and API version in use; avoid adapting the retired BaaS v1 example as if it were current. A minimal integration should send one URL and desired capture settings, check the HTTP status and content type, then save the returned bytes using a format-appropriate extension.

For both services, avoid logging access tokens or sensitive page content. Validate the response before treating it as an image: an error body, an access-denied page, and a valid screenshot are different outcomes even if the request itself completed over HTTP.

Choosing between them

  • Choose the Apify Actor workflow when you already use Apify runs and datasets or want to submit URL-list input through an Actor. Verify run completion, output item schema, and current Actor maintenance.
  • Choose Browserless when a direct REST screenshot call and its documented selectors, viewport, clip, format, and wait controls match the task. Account for stateless requests if cookies or multi-step page state matter.
  • Evaluate both at your expected volume when price or operational fit is decisive. The available evidence does not establish a comparable Browserless price or a performance winner.

Or skip the browser setup

ScreenshotNeo returns a screenshot or PDF from one GET request. Its parameters include the names used by other screenshot APIs, which can make switching easier. It also offers full-page capture, element capture, device presets, custom waits, headers and cookies, caching, async jobs, bulk capture, and an MCP server for AI agents.

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

See the ScreenshotNeo API documentation for parameters and response details. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Sign up for free and try ScreenshotNeo.

Cost, performance, and reliability

Compare costs on a matched workload

The cited Apify Store listing showed pricing from $6.00 per 1,000 results when accessed in 2026. Store pricing can change, and a result is not necessarily equivalent to a successful, billable screenshot across services. The reviewed Browserless documentation does not establish a matching rate. Before choosing on cost, check current pricing and calculate for the same URL count, retries, page complexity, image format, storage, and any platform usage charges.

ScreenshotNeo publishes these plan sizes: Free, 1,000 shots per month with no card; Starter, $5 for 3,000; Growth, $15 for 15,000; Pro, $39 for 60,000; Scale, $99 for 250,000; Business, $249 for 1,000,000. Yearly billing gives two months free, and every feature is on every plan. For ScreenshotNeo, only clean shots are billed; bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, with X-Page-Verdict and X-Billed response headers indicating the outcome.

Measure what matters for your pages

No comparative latency, reliability, or fidelity benchmark is available in the research. Test representative pages from your own workload, including long pages, lazy-loaded content, cookie notices, login flows, and sites with bot defenses. Track successful image output, time to result, retries, missing content, and the total cost at the unit each provider bills. Keep test settings and URL sets identical when comparing.

For production reliability, use explicit timeouts, bounded retries with backoff, and idempotent job tracking where the API uses asynchronous runs. Check status codes and content types, keep failed outputs separate from images, and record enough metadata to reproduce a capture without recording credentials. For run-based Actor work, handle queued, running, failed, and completed states and the possibility of an empty dataset.

Troubleshooting

Symptom Likely cause What to do
Apify run is still running or returns no items Results are requested before completion, the run failed, or the Actor returned no dataset items. Check run status and terminal error details, then retrieve the default dataset for the completed run. Confirm input was accepted by the current Actor schema.
Apify input is rejected Input keys, format values, or JSON types do not match the Actor’s current schema. Copy the current schema from the listing and validate the JSON. The visible example uses a URL list and format, but does not guarantee all accepted values.
Browserless returns an HTTP error Missing or invalid token, malformed request, or an unsupported option for the current endpoint. Check the current REST documentation for endpoint and request shape; inspect the response body without exposing the token in logs.
Image is blank, shows a CAPTCHA, or displays access denied The target may block automated access, or navigation may not have reached the intended page. Check the destination in a normal browser, inspect navigation and wait settings, and confirm access permissions. Browserless documents these symptoms but does not guarantee bypass for every site.
Element selector is missing The selector is incorrect, the element is inserted later, or the relevant frame/state is unavailable. Verify the selector on the rendered page and configure an appropriate wait where supported. If the element appears only after interaction, confirm the API supports that interaction.
Full-page screenshot omits lower content Content or images load only after scrolling or user interaction. Use the documented scroll behavior where available, wait for lazy content, and compare against a capture after manually scrolling the page.
Authenticated page redirects to login Credentials or cookies were not supplied, expired, or did not persist between stateless requests. Use the provider’s documented authentication or session mechanism. Browserless REST discards state after a response; use a session-oriented path for persistent browser state.
Saved image cannot be opened An error response was saved with an image extension, or output format and filename do not match. Check HTTP status and content type before saving. Use the extension corresponding to the requested output and handle error bodies separately.

Frequently asked questions

Is the Apify Actor an official Apify screenshot service?

The selected listing identifies i-scraper/website-screenshot as community-maintained. Other screenshot Actors exist, so verify the maintainer and schema for the listing you intend to use.

Can I preserve cookies across Browserless REST screenshots?

The REST overview says cookies and state are discarded after each response. Browserless points users who need persisted state toward its sessions or BrowserQL options.

Does Browserless guarantee CAPTCHA solving?

No such guarantee is supported by the cited documentation. It describes limitations of basic unblocking for advanced fingerprinting and interactive CAPTCHAs.

Which service is faster?

The cited material contains no comparable latency benchmark. Measure with the same pages, options, and network conditions.

Does the Apify listing’s price prove it is cheaper?

No. The observed Store price is per 1,000 results, while the reviewed Browserless documentation does not provide a matched price or billing unit. Check current pricing and compare equivalent successful captures.

Sources