Playwright review: the short version
Playwright is a headless browser from Microsoft, and in our 2026 assessment it scores 9.3/10 overall. It is at its best for dynamic, js-rendered and login-gated pages, it starts at Free, and it expects rotating residential per context, ISP proxies for logged-in sessions behind it. Apache-2.0. Real cost is CPU and RAM: a browser page uses 40–120× the memory of an HTTP request.
The rest of this review covers how it actually works, what it costs at realistic volumes, which proxy type to pair it with, how it behaves against anti-bot systems, where it breaks, and which alternatives make more sense for adjacent workloads. Every figure below reflects list pricing and hands-on testing rather than vendor marketing copy.
- +Per-context proxy rotation
- +Network interception and request blocking
- +Auto-wait removes flaky sleeps
- +Codegen and trace viewer for debugging
What Playwright is and how it works
## Playwright review: the short version
Playwright is a headless browser from Microsoft, and in our 2026 assessment it scores 9.3/10 overall. It is at its best for dynamic, js-rendered and login-gated pages, it starts at Free, and it expects rotating residential per context, ISP proxies for logged-in sessions behind it. Apache-2.0. Real cost is CPU and RAM: a browser page uses 40–120× the memory of an HTTP request.
The rest of this review covers how it actually works, what it costs at realistic volumes, which proxy type to pair it with, how it behaves against anti-bot systems, where it breaks, and which alternatives make more sense for adjacent workloads. Every figure below reflects list pricing and hands-on testing rather than vendor marketing copy.
- Per-context proxy rotation
- Network interception and request blocking
- Auto-wait removes flaky sleeps
- Codegen and trace viewer for debugging
## What Playwright is and how it works
Playwright won the browser-automation category because it treats contexts as cheap, isolated sessions. Each BrowserContext carries its own cookies, storage, user agent and — critically for scraping — its own proxy. That means one browser process can drive twenty parallel identities through twenty residential exits, which is the cleanest rotation model available in an open-source tool.
For scraping economics, the interception API is the feature that pays for itself. Aborting images, media, fonts and third-party analytics typically removes 60–80% of transferred bytes, and on metered residential bandwidth at $2–$8 per GB that is the difference between a viable crawl and an invoice nobody signs off. Combining route blocking with a domcontentloaded wait instead of networkidle roughly doubles throughput on e-commerce pages.
Playwright is not stealthy out of the box: navigator.webdriver, missing codecs and a headless-consistent fingerprint are all trivially detectable. Production stacks pair it with a patched build, a fingerprint-injection layer, or an antidetect browser over CDP, and always with residential or mobile exits — a perfect fingerprint behind a flagged datacenter IP still fails.
## Playwright scorecard and measured performance
Scores below are relative to the other tools in this directory, not to software in general — a 6 for scale still means a tool that handles more traffic than most projects will ever generate. The performance figures come from crawling a mixed basket of static HTML, JavaScript-rendered commerce and lightly protected listing pages from three regions.
Read them alongside your own target list. The tool almost never determines success rate on its own; the combination of exit IP quality, request fingerprint and request pacing does, which is why two teams running the same framework routinely report success rates thirty points apart.
## Throughput, rendering and resource profile
Throughput numbers only mean something with the cost attached. Playwright delivers 8 – 40 pages/min per worker, and can render JavaScript, which is convenient and roughly five to twenty times more expensive per page than a plain fetch.
Use these figures to size infrastructure before committing to a plan or a proxy contract. Work backwards from records per day, apply a realistic success rate, add a retry factor of 1.2–1.6, and only then choose concurrency.
## Playwright pricing and real cost per thousand pages
Apache-2.0. Real cost is CPU and RAM: a browser page uses 40–120× the memory of an HTTP request.
Browsers are expensive twice over. Compute runs 250–600 MB of RAM and a meaningful share of a vCPU per context, and the page pulls images, fonts, media and analytics that a parser never needs. Blocking those resource types typically removes 60–80% of transferred bytes, which on residential bandwidth at $2–$8 per GB is usually the largest single saving available. Budget 8–40 pages per minute per worker and size the fleet from there.
A useful discipline: express every option as cost per thousand usable records, not cost per month. A plan that looks cheap and delivers a 60% success rate is more expensive than a premium option at 95%, because the failures consume bandwidth, retries, engineering attention and calendar time.
## Best proxies for scraping with Playwright
A headless browser generates a coherent browser fingerprint, which means the IP becomes the weakest link. Attach the proxy at the context or profile level so each identity keeps one exit for its whole session — a browser that changes country mid-session is a louder signal than one on a mediocre IP. For anonymous scraping use rotating residential with a sticky window that outlives the page flow; for logged-in work use a static ISP IP and never rotate it.
With Playwright specifically, identity attaches through per-browser and per-context http/socks5 proxies with username auth. Get that wiring right before tuning anything else — a rotation bug that reuses one exit across a thousand requests will look exactly like a bad proxy provider.
## How Playwright handles anti-bot systems
Modern bot management scores the browser and the network together: WebGL and canvas hashes, audio context, font enumeration, timezone-versus-IP coherence, mouse entropy and TLS fingerprint all feed one risk value. A default headless build fails several of those checks immediately. Patch the obvious tells, keep locale and timezone consistent with the exit country, and accept that against top-tier protection an unlocker API or a commercial antidetect browser is cheaper than an in-house arms race.
Practically, treat detection as a budget rather than a binary. Measure success rate per domain daily, escalate a domain one tier at a time — better headers, then better IPs, then a browser, then an unlocker — and stop at the first tier that clears your threshold. Escalating everything to the most expensive tier is the most common and most costly mistake in scraping operations.
## Scaling Playwright in production
Fleet operations decide whether browser scraping is viable. Recycle contexts every 20–50 pages to contain memory creep, run one browser process per few contexts rather than one giant instance, cap navigation timeouts hard, and always run with --disable-dev-shm-usage in containers. Track pages-per-GB and pages-per-vCPU-hour as first-class metrics; they tell you when to move a workload back to plain HTTP.
- Track success rate, cost per thousand records and bytes per page as your three primary metrics
- Retire proxy sessions automatically on repeated failures instead of retrying blindly
- Deduplicate URLs before dispatch — duplicates cost bandwidth, credits and rate-limit headroom
- Validate content, not just HTTP status: a 200 that returns a consent wall is a failed fetch
- Keep a second fetching path warm so a vendor incident degrades throughput instead of stopping it
## Playwright pros and cons
No scraping tool is universally correct; each one trades cost, control and maintenance in a different ratio. Playwright makes the following trade explicitly.
## Who should use Playwright — and who should not
Choose Playwright when your workload looks like dynamic, js-rendered and login-gated pages and your team is comfortable with Node · Python · .NET · Java. It fits organisations that have already decided whether they are buying outcomes or building capability, because it sits clearly on one side of that line: you build, you operate, and you keep the margin.
Look elsewhere if you need managed challenge solving, because the anti-bot arms race will otherwise become a permanent engineering line item.
## Compliance and responsible collection
Collecting publicly accessible data is broadly lawful in most jurisdictions, but the surrounding obligations are real: respect robots.txt where it expresses the publisher's intent, avoid authentication walls you have not been granted access to, never collect personal data without a lawful basis under GDPR or equivalent, and keep request rates low enough that you never degrade the target's service.
Reputable proxy providers enforce KYC precisely because misuse of their networks is their liability as well as yours. Document what you collect, why, how long you retain it and who can access it. For AI training corpora, record licensing and provenance per source — that record is increasingly the first thing an auditor or enterprise customer asks to see.
Playwright scorecard and measured performance
Scores below are relative to the other tools in this directory, not to software in general — a 6 for scale still means a tool that handles more traffic than most projects will ever generate. The performance figures come from crawling a mixed basket of static HTML, JavaScript-rendered commerce and lightly protected listing pages from three regions.
Read them alongside your own target list. The tool almost never determines success rate on its own; the combination of exit IP quality, request fingerprint and request pacing does, which is why two teams running the same framework routinely report success rates thirty points apart.
| Criterion | Score | Assessment |
|---|---|---|
| Ease of adoption | 9/10 | Productive on day one |
| Scale ceiling | 6/10 | Best under a few hundred thousand pages |
| Anti-bot resilience | 7/10 | Good with the right proxies |
| Documentation | 10/10 | Excellent, with runnable examples |
| Value for money | 9/10 | Exceptional cost per page |
Throughput, rendering and resource profile
Throughput numbers only mean something with the cost attached. Playwright delivers 8 – 40 pages/min per worker, and can render JavaScript, which is convenient and roughly five to twenty times more expensive per page than a plain fetch.
Use these figures to size infrastructure before committing to a plan or a proxy contract. Work backwards from records per day, apply a realistic success rate, add a retry factor of 1.2–1.6, and only then choose concurrency.
| Metric | Observed | Notes |
|---|---|---|
| Throughput | 8 – 40 pages/min per worker | Per worker or per plan tier, on a stable target |
| JavaScript rendering | Full — Chromium, Firefox, WebKit | Rendering multiplies cost 5–20× versus plain HTTP |
| Memory footprint | 250 – 600 MB per context | Sizing input for container limits |
| Success profile | Strong once paired with residential IPs and stealth patches | Depends far more on proxy quality than on the tool |
| Proxy support | Per-browser and per-context HTTP/SOCKS5 proxies with username auth | How identity is attached to a request |
Playwright pricing and real cost per thousand pages
Apache-2.0. Real cost is CPU and RAM: a browser page uses 40–120× the memory of an HTTP request.
Browsers are expensive twice over. Compute runs 250–600 MB of RAM and a meaningful share of a vCPU per context, and the page pulls images, fonts, media and analytics that a parser never needs. Blocking those resource types typically removes 60–80% of transferred bytes, which on residential bandwidth at $2–$8 per GB is usually the largest single saving available. Budget 8–40 pages per minute per worker and size the fleet from there.
A useful discipline: express every option as cost per thousand usable records, not cost per month. A plan that looks cheap and delivers a 60% success rate is more expensive than a premium option at 95%, because the failures consume bandwidth, retries, engineering attention and calendar time.
| Plan | Price | What you get |
|---|---|---|
| Playwright (self-hosted) | $0 | All three engines, per-context proxies, tracing |
| Container fleet | $40 – $600 / mo | 4–32 vCPU workers running 10–80 concurrent contexts |
| Managed browser cloud | from $39 / mo | Browserbase, Browserless or Steel host the fleet for you |
Best proxies for scraping with Playwright
A headless browser generates a coherent browser fingerprint, which means the IP becomes the weakest link. Attach the proxy at the context or profile level so each identity keeps one exit for its whole session — a browser that changes country mid-session is a louder signal than one on a mediocre IP. For anonymous scraping use rotating residential with a sticky window that outlives the page flow; for logged-in work use a static ISP IP and never rotate it.
With Playwright specifically, identity attaches through per-browser and per-context http/socks5 proxies with username auth. Get that wiring right before tuning anything else — a rotation bug that reuses one exit across a thousand requests will look exactly like a bad proxy provider.
| Target profile | Proxy type | Typical price | Why |
|---|---|---|---|
| Internal APIs, open data, docs sites | Datacenter | $0.30 – $2.00 / IP / mo | No consumer-IP requirement; cheapest possible bandwidth |
| Mid-tier commerce, listings, forums | Rotating residential | $1.00 – $8.00 / GB | Real ISP-assigned IPs clear reputation checks |
| Logged-in accounts, dashboards | ISP / static residential | $1.50 – $6.00 / IP / mo | One stable identity per account, held for months |
| App-only endpoints, hardest anti-bot | Mobile (4G/5G) | $4.00 – $20.00 / GB | Carrier CGNAT makes per-IP blocking costly for the target |
| Everything already blocked | Unlocker API | $0.50 – $3.00 / 1k requests | Challenge solving handled provider-side, billed per success |
Per-context proxy rotation (Node)
import { chromium } from "playwright";
const browser = await chromium.launch({ headless: true });
async function fetchWithSession(url, sessionId) {
const context = await browser.newContext({
proxy: {
server: "http://gate.provider.net:7000",
username: `user-country-us-session-${sessionId}`,
password: process.env.PROXY_PASS,
},
locale: "en-US",
timezoneId: "America/New_York",
});
// Kill the bandwidth hogs — 60-80% byte reduction
await context.route("**/*.{png,jpg,jpeg,webp,gif,svg,woff,woff2,mp4}", (r) => r.abort());
const page = await context.newPage();
await page.goto(url, { waitUntil: "domcontentloaded", timeout: 30_000 });
const html = await page.content();
await context.close();
return html;
}How Playwright handles anti-bot systems
Modern bot management scores the browser and the network together: WebGL and canvas hashes, audio context, font enumeration, timezone-versus-IP coherence, mouse entropy and TLS fingerprint all feed one risk value. A default headless build fails several of those checks immediately. Patch the obvious tells, keep locale and timezone consistent with the exit country, and accept that against top-tier protection an unlocker API or a commercial antidetect browser is cheaper than an in-house arms race.
Practically, treat detection as a budget rather than a binary. Measure success rate per domain daily, escalate a domain one tier at a time — better headers, then better IPs, then a browser, then an unlocker — and stop at the first tier that clears your threshold. Escalating everything to the most expensive tier is the most common and most costly mistake in scraping operations.
Scaling Playwright in production
Fleet operations decide whether browser scraping is viable. Recycle contexts every 20–50 pages to contain memory creep, run one browser process per few contexts rather than one giant instance, cap navigation timeouts hard, and always run with --disable-dev-shm-usage in containers. Track pages-per-GB and pages-per-vCPU-hour as first-class metrics; they tell you when to move a workload back to plain HTTP.
- +Track success rate, cost per thousand records and bytes per page as your three primary metrics
- +Retire proxy sessions automatically on repeated failures instead of retrying blindly
- +Deduplicate URLs before dispatch — duplicates cost bandwidth, credits and rate-limit headroom
- +Validate content, not just HTTP status: a 200 that returns a consent wall is a failed fetch
- +Keep a second fetching path warm so a vendor incident degrades throughput instead of stopping it
Playwright pros and cons
No scraping tool is universally correct; each one trades cost, control and maintenance in a different ratio. Playwright makes the following trade explicitly.
| Strengths | Weaknesses |
|---|---|
| One API across three real browser engines | Orders of magnitude more expensive per page than HTTP crawling |
| Per-context proxies make rotation trivial | Default fingerprint is detectable without patching |
| Blocking images and fonts cuts bandwidth 60–80% | Memory management is your problem at scale |
| Excellent documentation and tooling | Chromium updates can break selectors and stealth patches |
Who should use Playwright — and who should not
Choose Playwright when your workload looks like dynamic, js-rendered and login-gated pages and your team is comfortable with Node · Python · .NET · Java. It fits organisations that have already decided whether they are buying outcomes or building capability, because it sits clearly on one side of that line: you build, you operate, and you keep the margin.
Look elsewhere if you need managed challenge solving, because the anti-bot arms race will otherwise become a permanent engineering line item.
Compliance and responsible collection
Collecting publicly accessible data is broadly lawful in most jurisdictions, but the surrounding obligations are real: respect robots.txt where it expresses the publisher's intent, avoid authentication walls you have not been granted access to, never collect personal data without a lawful basis under GDPR or equivalent, and keep request rates low enough that you never degrade the target's service.
Reputable proxy providers enforce KYC precisely because misuse of their networks is their liability as well as yours. Document what you collect, why, how long you retain it and who can access it. For AI training corpora, record licensing and provenance per source — that record is increasingly the first thing an auditor or enterprise customer asks to see.
Playwright FAQs
Can Playwright use SOCKS5 proxies?+
Yes, with server: 'socks5://host:port'. Chromium does not accept inline SOCKS5 credentials, so use IP whitelisting or a local authenticating bridge.
Which proxies work best with Playwright?+
Rotating residential for consumer sites, ISP proxies for logged-in sessions that must persist, datacenter for internal or tolerant targets.
How many Playwright contexts per server?+
Roughly two contexts per vCPU with 500 MB RAM each. Recycle contexts every 20–50 pages to avoid memory creep.
Keywords covered
best proxies for scraping · residential proxies for scraping · playwright proxy rotation · headless browser proxy · proxy for parser