Afina

Download app

AppleWindows
EN
BlogGuides and Tutorials

October 31, 2026

ZenRows Review 2026: Real Scraping Costs and Test Results

ZenRows workflow with credits proxies and web scraping

ZenRows is a cloud web-scraping platform that retrieves pages through an API, renders JavaScript, and manages proxies and anti-bot processing. The service is used for price monitoring, market research, catalog collection, and preparing web data for AI systems.

Teams comparing infrastructure providers can contrast ZenRows with the approach described in this proxy review for data collection and AI projects. Costs depend not only on the IP or traffic volume but also on the request type, rendering method, and protection level of the target page.

This becomes clearest in practical scenarios. A plain HTML catalog may cost one base credit, while Instagram scraping or another JavaScript-dependent platform often requires a browser environment, a stable session, and validation of useful content in the response.

Consider the network layer separately. In tasks where geographic location, IP type, and session duration matter, compare the ZenRows model with a workflow where mobile proxies are combined with separate profiles. Costs that are invisible in the plan price emerge where the browser, IP, and cookies meet.

This review uses current official ZenRows pricing as of October 2026.

What is ZenRows and who should use the platform

ZenRows suits teams that need managed access to static, dynamic, or protected web pages without deploying their own Chromium cluster. The user supplies a URL and parameters, while the platform returns HTML, Markdown, JSON, text, or a page screenshot depending on the selected tool.

In 2026, the product line includes Fetch, Extract, Batch, Browser Sessions, CLI, SDK, and MCP Server. The official description also mentions Crawl. The products use one account and a shared credit balance, but the billing unit differs. Fetch charges depend on page retrieval complexity, Browser Sessions account for minutes and gigabytes, and Batch uses the cost of the corresponding Fetch requests.

ZenRows is most often used for these tasks:

  • collecting product prices and stock levels from catalogs
  • preparing datasets for AI Training or RAG
  • monitoring changes on competitor pages
  • processing large URL lists asynchronously
  • automating pages with clicks, forms, and authentication
  • retrieving data from sites where a regular HTTP client sees a CAPTCHA or blocking page

The platform reduces infrastructure maintenance time but does not remove the need to validate data. Use a control selector, text fragment, or JSON field to distinguish a useful response from a blocking or login page.

How was the ZenRows testing methodology built

A proper ZenRows test checks the response status, useful content, latency, and actual credit charge. The testing behind this review used five target types: a static HTML page, a JavaScript SPA, an e-commerce page, a site protected by DataDome, and an authenticated page.

This set works because it separates different causes of failure. A static site shows the service's baseline latency. An SPA tests JS rendering. An online store page adds complex markup and anti-bot measures. An authenticated page tests whether cookies, IP, and User-Agent remain consistent during a session.

For every response, the author of the published test applied two criteria:

  • the HTTP response completed without a transport error
  • the body contained a marker present only on the useful target page

The second criterion matters more because checking only the status code does not filter out anti-bot placeholders and login pages returned instead of the required data.

ZenRows testing by status content marker and credits

To repeat the test in your own infrastructure, prepare a control sample with at least three page classes. Do not reduce the results to one average. Five easy pages can hide a failure on the single domain that supplies the business's most important data.

The practical cycle looks like this:

  1. define a useful-content marker for every target
  2. run a basic Fetch request without expensive options
  3. enable JavaScript only for pages missing the required marker
  4. add a premium proxy for targets that remain blocked
  5. repeat each configuration in a series of at least 20 requests
  6. record response latency, credits, response size, and the share of valid results
  7. calculate the cost of 1,000 useful pages rather than 1,000 HTTP responses

Twenty requests do not provide a statistical guarantee for an entire domain, but they help reveal instability. Before buying a large plan, test at different times using real URLs and the same region the production workflow will use.

How is the ZenRows product line structured

ZenRows products handle different stages of data processing. Fetch retrieves an individual page, Extract structures the data, Batch organizes large-list processing, and Browser Sessions runs an interactive scenario in remote Chromium.

ProductMain taskOperating formatHow resources are chargedCritical limitation
Fetchpage retrievalsynchronous API request1, 5, 10, or 25 creditscostlier options multiply the page price
Extractstructured fieldsJSON for supported or prepared sitesno additional charge beyond Fetchfield quality requires validation against your schema
Batchlarge URL listsasynchronous jobs, runs, and individual operationscharged as Fetch for each taskresults are stored for a limited time
Browser Sessionsclicking, form completion, login, and scrollingCDP or WebSocket5 credits per minute plus 25,000 per GBone session closes after 15 minutes
Residential bandwidthnetwork accesstraffic through a residential network25,000 credits per GBlarge pages quickly consume the balance

The table shows different accounting units: a page, task, session minute, and gigabyte of traffic are not interchangeable. Break the future workflow into these units to identify the main cost drivers and required limits in code.

Fetch for individual pages

Fetch is the basic tool. Under the official model, a standard page costs 1 credit, JavaScript rendering increases the charge to 5, a premium proxy to 10, and combining both options to 25 credits. The same balance can therefore deliver 25 times fewer pages depending on the configuration.

ZenRows Fetch page for clean web data

Fetch is appropriate when a request can be described as a URL plus parameters and the result does not require a long chain of clicks. Use the simplest configuration that reliably returns the required data for each domain. Enabling every expensive option automatically simplifies code but makes the cost model inefficient.

Extract for structured fields

Extract returns JSON and removes the need to maintain selectors for preconfigured domains. On the review date, the official pricing page explicitly stated that Extract adds no cost beyond the Fetch request. The ZenRows changelog also states that preparing a new domain has a separate monthly limit and does not consume credits.

ZenRows Extract page converting web pages into JSON

Structured JSON should be checked for completeness. In the source test, the review-count field on an e-commerce page was empty, while image URLs pointed to the wrong pictures. A structured response does not guarantee correct data.

Simple monitoring may only need Fetch. Add Extract after validating the fields, Batch after stabilizing the configuration, and a browser session only for URLs that genuinely require interaction.

Batch for large-scale tasks

Batch accepts up to 100,000 URLs in one job, processes them asynchronously, and returns results through an API, webhook, or export. Every URL is processed as a separate task with its own status and actual HTTP response code. According to the official description, Batch adds no markup of its own: charges follow the Fetch parameters.

ZenRows Batch page for large URL processing

The asynchronous model is useful for nightly catalog collection and recurring monitoring. It also supports controlled retries: only failed tasks can be rerun instead of paying for the full list again. From the target site's scraping detection perspective, a fast parallel run may be more visible, so concurrency should be selected for each domain rather than only according to the plan limit.

Browser Sessions for interactive scenarios

Browser Sessions launches a remote browser compatible with Playwright, Puppeteer, and other CDP clients. It is needed when a page requires login, clicks, scrolling, or a multi-step form. The official product page states that one session is limited to 15 minutes.

ZenRows Browser Sessions page for interactive scenarios

Distinguish state retention between calls from the session time limit. If a scenario must remain active for hours or resume the next day, verify how cookies are reloaded and whether browser parameters and its digital fingerprint remain stable.

What results did the ZenRows test produce

The published testing showed strong Fetch performance on protected pages but instability in long sessions and varying result quality across products. These figures concern specific targets and configurations tested on October 2, 2026, so other domains require separate validation.

ProductStatic targetJavaScript SPAE-commerceComplex anti-botAuthenticated target
Fetch5/55/55/519/2017/17 within the test window
Extract5/55/55/520/200/20
Batch20/2020/2030/3030/30not tested as a standard scenario
Browser Sessionsnot tested5/55/54/109/10
Residential Proxies5/5not tested0/54/2019/20

The table shows the number of attempts the test author counted as successful relative to the total number of attempts for every product and target type.

For Fetch, Extract, and Batch, the result should be judged by the presence of the required content.

Success criteria vary by product:

  • Fetch, Extract, and Batch: presence of the required content
  • Browser Sessions: completion of the test browser scenario with the required result
  • Residential Proxies: successful requests through the proxy, not Fetch or Browser Sessions performance

For an authenticated target, access to the required page within the test session matters, not merely opening the login form. The source data do not provide a complete validation protocol for every row, so these rates should not be treated as a universal reliability metric.

Fetch passed 19 of 20 attempts against the DataDome target and all five e-commerce attempts with JavaScript and a premium proxy. This is a strong result for the sample. At the same time, the same configuration cost 25 credits per request, 25 times more than a basic page.

In the test, Batch produced a lower calculated time per page through parallel task execution. For 30 online-store URLs, the average was about 3.1 seconds per page when total job duration was divided by the number of pages. Sequential Fetch in the same category had a median of about 16.2 seconds. This reflects parallel execution rather than a faster individual request.

Browser Sessions passed only 4 of 10 attempts on the site with complex anti-bot protection. The session scenario also depended on page size because traffic accounted for most of the charge. This may be acceptable for a small page. A resource-heavy page with media, trackers, and large scripts can increase costs considerably.

In one described test, Fetch in an authenticated scenario did not pass the expected User-Agent to the target site. The cookie was transmitted, but the User-Agent mismatch broke session binding. This observation concerns one configuration and does not prove that Fetch always changes the User-Agent. The case shows why residential proxies for AI search and SEO do not solve the entire task by themselves: the IP, headers, cookies, and browser fingerprint must operate as one consistent context.

ZenRows test dashboard for success latency and cost

The main limitation of this test is its small sample. It does not show daily variability, regional differences, or the anti-bot system's reaction to thousands of requests.

How much does ZenRows cost in 2026

ZenRows pricing depends on the plan, page type, and share of useful responses. With monthly billing, the base tiers cost $19 for 45,000 credits, $69 for 250,000, $199 for 1.2 million, and $549 for 5 million. Annual billing on the official page shows monthly equivalents of $16, $58, $166, and $458.

PlanMonthly priceCreditsConcurrencyBasic pagesPages with JS and premium proxy
Free$05,00055,000200
Build$1945,0002045,0001,800
Launch$69250,00050250,00010,000
Growth$1991,200,0001001,200,00048,000
Scale$5495,000,000200-4005,000,000200,000

The final-column figures are a theoretical ceiling when every page costs exactly 25 credits and no Browser Sessions or bandwidth charges are added. They do not account for application-level retries, invalid content in a technically successful response, or balance top-ups.

Real cost of 1,000 pages

If the full monthly Build price is divided across all 45,000 credits, one credit costs approximately $0.000422. Under this model, 1,000 basic pages cost about $0.42, JavaScript pages about $2.11, premium proxy pages about $4.22, and pages using both options about $10.56. This is the calculated share of the plan price, not a separate fee for each thousand requests. If some credits remain unused, the actual cost per processed page is higher.

Fetch configurationCredits per page1,000 pages on Build1,000 pages on Launch1,000 pages on Growth
standard1$0.42$0.28$0.17
JavaScript5$2.11$1.38$0.83
premium proxy10$4.22$2.76$1.66
JavaScript and premium proxy25$10.56$6.90$4.15

Use cost per useful page to estimate expenses. If only 800 of 1,000 paid responses contain the required marker, divide the calculated cost by 800 rather than 1,000. Assuming full use of Build credits and an unchanged valid-response rate, 1,000 useful pages with JS and premium proxy cost about $13.20. This is a model estimate, not an additional ZenRows bill.

The calculation can be reproduced in four steps:

  1. divide the plan price by the number of credits
  2. multiply the result by the configuration's credit multiplier
  3. add bandwidth and Browser Sessions minute costs
  4. divide the total by the share of responses containing the valid required-content marker

Hidden costs in the credit model

ZenRows does not claim a separate hidden fee. Here, hidden costs mean factors absent from the base plan price that change the cost of the result.

The following components affect the budget:

  • a 5x multiplier for JavaScript rendering
  • a 10x multiplier for a premium proxy
  • a 25x multiplier when both options are enabled
  • 25,000 credits for each GB of residential traffic
  • 5 credits per Browser Sessions minute
  • charges for HTTP 404 and 410 responses treated as valid results
  • retries by your application after a failed required-content marker check
  • engineering time for Extract schema validation and session recovery

Under the described ZenRows rules, credits are not deducted for requests the service classifies as failed. However, HTTP 404 and 410 may count as retrieved responses and be charged. An HTTP 200 response containing a blocking page should not automatically be treated as a free failure either: the service's result classification matters for billing, while the presence of required data matters to the user.

ZenRows billing and useful response content validation

Check the exact list of chargeable statuses and exceptions against current ZenRows rules. This is why a custom validator should sit between the API response and the write to the primary database.

How does ZenRows differ from a custom scraper and browser profiles

ZenRows differs from a custom scraper by selling managed execution, proxies, and anti-bot processing as a service. It differs from browser profiles by focusing on data retrieval rather than a persistent isolated browser configuration for every session.

CriterionZenRows Fetch and BatchCustom Playwright clusterIsolated browser profiles
integration startfast APIinfrastructure requiredprofiles and workflows required
proxies and retriesmanaged by the serviceconfigured by the teamassigned to the profile
JavaScriptan option with a credit multiplierCPU and memory costsbrowser execution without extra setup
long-term authenticated session persistencedepends on the product and session limitcontrolled by custom codestate persists in the profile
large-list scaleBatch supports up to 100,000 URLs per joba custom queue is requirednot the primary scenario
budget forecastingcredits, traffic, and success rateservers, proxies, and developmentprofiles, proxies, and automation

ZenRows has advantages in scenarios with many short, independent URL requests. A custom cluster makes sense when a team already maintains Playwright, works with a narrow set of domains, and wants full control over caching, browser behavior, and networking. Isolated profiles are useful when the same browser context must persist for days or weeks.

These approaches can be combined. A profile can handle login and preserve an isolated context, while an API pipeline processes public pages without authentication. Calculate them separately: a Fetch request, a remote browser minute, and an hour of custom worker operation are different units.

Which risks and limitations should be considered before paying

The largest risk appears when technical success does not produce a useful result. Short sessions and instability on particular domains also affect a project. Dependence on the provider's pricing and closed infrastructure adds another constraint.

Before paying for a large plan, check:

  • your real domains rather than demo pages
  • the share of responses containing a valid required-content marker
  • the credit multiplier for every URL class
  • actual page size in Browser Sessions
  • cookie, IP, and User-Agent behavior after reconnecting
  • concurrency limits and queue execution time
  • Batch result storage and export rules
  • the migration process if the API or pricing changes

Configure spending limits at the application level. It should stop a job when the average number of credits per page containing the required data exceeds the threshold. Store the external_id for Batch. This lets you reprocess only URLs whose previous requests failed. In Browser Sessions, block unnecessary media downloads when this does not break the target page because traffic directly affects charges.

Production monitoring should show technical API failures separately from failed content checks. This helps determine whether the problem is in ZenRows, the site's markup, or your validator. Also record the last configuration validation date for every domain.

Target-site rules and collection legality are another concern. Public page access does not override terms of use, copyright, or personal-data requirements. Store only required fields, set a moderate rate limit, and review sensitive scenarios with legal counsel.

When does ZenRows justify its cost and how can it work with Afina

ZenRows justifies its price when managed infrastructure costs less than a custom browser cluster, proxies, queues, and engineering time. It works best for projects with many independent URLs, short requests, and a measurable required-content marker. Long authenticated processes should be tested separately through Browser Sessions.

When work requires persistent browser contexts, separate cookies, proxies, and browser fingerprints for different tasks, Afina can serve as the isolated-profile layer while ZenRows handles independent collection of public pages. This separation does not make scraping invisible or override target-platform rules, but it distinguishes two scenarios: a long-lived session and bulk API data retrieval. This material is provided solely for informational and educational purposes.

Start with Free and its 5,000 credits, then test 50 to 100 real URLs from every class using the methodology above. Move to a paid plan once you can estimate retrieval stability and costs for your workload. This approach produces a more accurate cost estimate than relying only on the listed plan price.

Download

FAQ — Frequently Asked Questions

What is ZenRows?

ZenRows is a cloud platform for retrieving and structuring web data through an API, Batch, and remote browser sessions.

How much does ZenRows cost in 2026?

The free plan provides 5,000 credits per month, while monthly paid tiers start at $19 for 45,000 credits.

How do ZenRows credits work?

A standard page costs 1 credit, JavaScript 5, a premium proxy 10, and both options together 25 credits.

Does ZenRows charge for failed requests?

Under the published ZenRows rules, requests classified as failed do not consume credits. HTTP 404 and 410 responses may be charged as retrieved results. Check current billing rules for other statuses and errors; HTTP 200 alone does not guarantee useful content.

How does Fetch differ from Browser Sessions?

Fetch returns an individual page through an API, while Browser Sessions controls interactive Chromium for clicks, forms, scrolling, and authentication.

Does ZenRows work with JavaScript sites?

Yes. Fetch supports JavaScript rendering, while complex interactive scenarios can run through Browser Sessions. JavaScript increases the request's credit cost.

Can ZenRows process large URL lists?

Yes. Batch accepts up to 100,000 URLs in one job and processes them asynchronously with a separate status for every task.

What hidden costs does ZenRows have?

The main additional costs come from credit multipliers, Browser Sessions traffic, session minutes, and retries after unusable responses.

How should you test ZenRows before buying a plan?

Use your own URL sample to test data quality, result stability, and credit consumption.

Related terms

Continue reading onWeb scraping automation — data processing | Afina Browser
Vladyslav Shestakov

Hello! I'm Vladyslav Shestakov - a data analysis and automation expert at Afina. Focused on web automation, product support, and development. I have experience in cryptocurrency, machine learning, and creating custom bots and automation tools. Combining technical expertise with continuous self-improvement and integration of modern technologies to make working with Web3 efficient and understandable.