Home / Guides

Should you build with your own proxies and Playwright, or buy a scraping API?

A sourced cash comparison that exposes the browser-host, residential-traffic, request, labor, and plan-cliff arithmetic.

ExactWritten against 74 products15 cited sourcesUpdated 2026-07-26

Where the retained snapshot sits

$99.00ExactHasData, Business. The lowest exact published bill for 100,000 JavaScript-rendered pages a month.No published lower bound sits beneath it.

The dataset behind this guide

Products priced74
Latest recorded source date2026-07-26
Guide last reviewed2026-07-26
Sources cited below15
  1. Successes you want

    100,000 pages

    Your stated workload. Every vendor on this site is priced against this same number.

  2. × 1

    Attempts you are billed for

    100,000 requests

    HasData does not bill failed fetches, so failures cost nothing here.

  3. × 10

    What the meter counts

    1,000,000 credits

    One attempt is not one billed unit here: this workload multiplies by 10 before any money is involved.

  4. =

    Cash per month

    $99.00 /mo

    Business. Cheapest of every eligible purchase option, not the first plan that fits.

Bars share one linear scale across the 3 counted stages, so a multiplier shows as length. Units differ by stage and are labelled. Cash is not on that scale.

What is calculated and what is checked. The bill and ladder above are engine output for this guide's own workload. The prose below is written by a person. Each money figure is checked against the dated vendor price stored with this guide, but that does not mean the vendor page was freshly rechecked. A mismatch must be explained by the shown arithmetic or another cited vendor fact, or the page is not published.

For the worked case, 100,000 usable JavaScript-rendered pages require 105,263 self-run browser attempts under the explicit input of 1.05263 attempts per usable page. At 0.25 MB per attempt, that is 26.31575 GB of residential traffic. One AWS Lightsail browser host plus Webshare’s 50 GB residential tier therefore costs $146.50 per month in published cash. The matched Olostep Standard plan costs $99 per month and includes 200,000 successful requests, so buying is cheaper by $47.50 before labor. (AWS Lightsail bundles, Webshare pricing, and Olostep pricing, retrieved 2026-07-26.)

That result is conditional, not a statement about either route’s production performance. The attempt ratio, payload size, and one-host capacity are scenario inputs. At exactly 1.00 attempt per usable page, the same workload fits the 25 GB proxy tier and the self-run cash falls to $89, which is $10 less than the API plan. One additional attempt pushes traffic above 25 GB and reverses the cash result. Plan cliffs matter more here than a smooth per-page average. (Webshare pricing and Olostep pricing, retrieved 2026-07-26.)

The workload being priced

The workload being priced table

Input Value in the worked model
Required output 100,000 usable pages per month
Page mode JavaScript rendering
Network requirement Residential proxy use
Self-run attempts per usable page 1.05263, a scenario input
Transfer per self-run attempt 0.25 MB, a scenario input
Browser hosts 1, assumed sufficient but not established here
API requests per usable page 1.00, a scenario input
CAPTCHA work Excluded from the self-run cash line
Setup, maintenance, and unblocking labor Excluded from published cash and restored as variables below

The model uses 1 GB = 1,000 MB because Webshare publishes decimal GB allowances. It rounds required browser attempts up to a whole attempt before selecting a traffic tier. The API side assumes one request billed by Olostep produces one usable page; this is an input to replace with observed target data, not a vendor outcome claim. Olostep states that one request is one webpage or PDF processed, that failed requests are not charged, and that JavaScript rendering and residential IP use are included. (Webshare pricing and Olostep pricing, retrieved 2026-07-26.)

What the self-run stack actually costs

What the self-run stack actually costs table

Self-run item Published monthly cash used Assumption and boundary
Playwright $0 license fee The repository uses the Apache 2.0 license. This does not price engineering work. (Playwright repository, retrieved 2026-07-26.)
Browser host $24 One AWS Lightsail Medium-4GB Linux instance with public IPv4, 2 vCPUs, 4 GB RAM, 80 GB storage, and 4 TB transfer. Its capacity for this workload is an unverified input. (AWS Lightsail bundles, retrieved 2026-07-26.)
Residential traffic $27.50 for 10 GB, $65 for 25 GB, $122.50 for 50 GB, or $225 for 100 GB The equation selects the first Webshare rotating-residential tier whose allowance covers calculated traffic. (Webshare pricing, retrieved 2026-07-26.)
Logs and outputs $0 incremental The model keeps 5 GB on the selected host, inside its 80 GB storage. It does not assume a separate storage product. (AWS Lightsail bundles, retrieved 2026-07-26.)
Setup E / A per month E is your actual setup cost and A is your chosen amortization period.
Maintenance M per month M is your actual monthly cost for deployments, browser updates, queue repair, monitoring, and incidents. Playwright documents that each version needs matching browser binaries and an update can require another browser install. (Playwright browser documentation, retrieved 2026-07-26.)
Unblocking U per month U is your actual monthly cost for target diagnosis, proxy selection, retries, CAPTCHA handling, and returned-content validation.

The self-run published-cash function is:

Attempts(V, R) = ceil(V x R)
Traffic GB      = Attempts(V, R) x MB / 1,000
Build cash      = ($24 x H) + selected proxy tier
Ownership cost  = Build cash + (E / A) + M + U

V is usable pages, R is attempts per usable page, MB is transfer per attempt, and H is the number of browser hosts. The $24 host value and proxy-tier prices are the cited record inputs; every other number produced by this function is calculated arithmetic. (AWS Lightsail bundles and Webshare pricing, retrieved 2026-07-26.)

Fully worked example: 100,000 rendered pages

Self-run Playwright receipt

The baseline uses the scenario inputs exactly:

Attempts = ceil(100,000 usable pages x 1.05263 attempts/page)
         = 105,263 attempts

Traffic  = 105,263 attempts x 0.25 MB
         = 26,315.75 MB
         = 26.31575 GB

The 25 GB allowance is 1.31575 GB short, so the selected proxy tier is Webshare’s 50 GB residential plan:

Playwright license                  $0.00
AWS Lightsail 4 GB host            $24.00
Webshare 50 GB residential plan   $122.50
Incremental storage                 $0.00
                                   -------
Self-run cash floor               $146.50 per month

The prices are published inputs. The one-host capacity and 1.05263 attempt ratio are not established by those sources. (Playwright repository, AWS Lightsail bundles, and Webshare pricing, retrieved 2026-07-26.)

Olostep buy receipt

The current Olostep dataset record and live page agree on the values used in the receipt:

Olostep buy receipt table

Dataset field Value used
plans[name=Standard].usd_mo $99
plans[name=Standard].included_amount 200,000 successful requests
meters[dimension=request.js_render].units 1 request credit per request
success_billing.charges_failures false

The live page also says the request price includes JavaScript rendering, residential IP use, bandwidth, proxies, and data usage. The worked model does not add the separate 500-request trial balance to Standard. (Olostep pricing, retrieved 2026-07-26.)

Required billed requests = 100,000 pages x 1.00 request/page
                         = 100,000 requests

100,000 requests <= 200,000-request Standard allowance
API cash         = $99.00 per month

Cash difference  = $146.50 build - $99.00 buy
                 = $47.50 per month in favor of buying

This is a cash comparison between the named configurations. It assigns no outcome rate to either configuration and no dollar value to labor.

The tier boundary is checkable

At 100,000 pages and 0.25 MB per attempt, the largest attempt ratio that still fits 25 GB is:

25,000 MB / (100,000 pages x 0.25 MB)
= 1.00 attempt per usable page

The next whole attempt changes the selected tier:

The tier boundary is checkable table

Scenario Attempts Traffic Build cash API cash Published-cash result
R = 1.00000, one host 100,000 25.00000 GB $24 + $65 = $89.00 $99.00 Build is lower by $10.00
R = 1.00001, one host 100,001 25.00025 GB $24 + $122.50 = $146.50 $99.00 Buy is lower by $47.50
R = 1.05263, one host 105,263 26.31575 GB $24 + $122.50 = $146.50 $99.00 Buy is lower by $47.50
R = 1.00000, two hosts 100,000 25.00000 GB (2 x $24) + $65 = $113.00 $99.00 Buy is lower by $14.00

The source values in every row are the $24 host, Webshare’s $65 and $122.50 tiers, and the $99 API plan. Attempts, traffic, totals, and differences are calculated from the displayed formulas. (AWS Lightsail bundles, Webshare pricing, and Olostep pricing, retrieved 2026-07-26.)

Let L = (E / A) + M + U. In the first row, ownership cost is $89 + L, so building remains lower than the $99 plan only while L < $10. At L = $10, the cash totals are equal. In the other three rows, buying is already lower before any labor is added. These are algebraic decision limits, not estimates of anyone’s labor.

These are not identical products

The build side is a browser stack using a separately purchased residential traffic allowance. The buy side is a request API whose cited page says browser rendering, residential IP use, proxies, and data usage are included. Playwright provides direct browser automation, while an API request is not a substitute for every interactive session workflow. (Playwright repository, Webshare pricing, and Olostep pricing, retrieved 2026-07-26.)

The comparison therefore answers a narrow question: which named configuration has the lower published monthly cash for the displayed workload inputs? It does not answer whether both routes return identical output on a target.

Which other billing modes need their own arithmetic?

Records that say “premium” or “protected” are not silently treated as residential:

Which other billing modes need their own arithmetic? table

Buy mode Dataset-backed figure Why the worked receipt cannot be reused
Bright Data Web Unlocker $1.50 per 1,000 billed requests, with rendering and residential routing included. (Bright Data pricing, retrieved 2026-07-26.) It is a pay-as-you-go meter rather than the selected fixed allowance.
Scrape.do Residential or mobile plus headless rendering costs 25 credits for an untargeted domain. (Scrape.do request costs, retrieved 2026-07-26.) The plan allowance is denominated in credits, and server-side domain profiles can change request cost.
ScrapeOps Residential plus JavaScript costs 25 credits. (ScrapeOps request costs, retrieved 2026-07-26.) Its plan must cover the multiplied credit total.
Scrapfly Residential costs 25 credits and JavaScript adds 5 credits. (Scrapfly billing, retrieved 2026-07-26.) The 30-credit base can also receive a bandwidth addition.
ScrapingDog JavaScript plus the named premium-proxy mode costs 25 credits. (ScrapingDog documentation and pricing, retrieved 2026-07-26.) The cited record does not establish that premium means residential.
ScrapingBee Premium proxy plus JavaScript costs 25 credits. (ScrapingBee credit costs and pricing, retrieved 2026-07-26.) A premium label does not establish residential equivalence.
ScraperAPI Premium proxy plus rendering costs 25 credits. (ScraperAPI credit costs, retrieved 2026-07-26.) Its published mode name does not verify the same routing requirement.
ZenRows Protected mode costs 25 credits and replaces its other Universal Scraper modes. (ZenRows pricing documentation, retrieved 2026-07-26.) Protected is a product mode, not evidence that every request uses residential routing.

There is no vendor-neutral break-even volume. Measure attempts per usable page, MB per attempt, required host count, setup cost, monthly maintenance, and monthly unblocking work on the actual target. Then rerun the displayed equations with the applicable vendor record rather than transferring the $99 receipt to a different meter.

Sources