Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To scale browser-based scraping with Playwright and Browserless, put jobs behind a queue, cap concurrent browser sessions, isolate independent jobs in BrowserContexts, and close every session in a finally block. Connect with Browserless’s native Playwright protocol or CDP deliberately: they use different endpoint paths and do not offer identical feature support. The right concurrency is a limit to discover and monitor—not a universal number promised by either product.

When a scraping job needs a browser

Start with the page, not the browser service. A normal HTTP request is usually the simpler choice when the information is present in the server response and you do not need browser interaction. Playwright adds value when a site renders data client-side, requires interaction, or relies on browser state such as cookies or local storage.

A browser session costs more operationally than a plain request: it involves a browser process, pages, and potentially session state. Use it only for the portion of the workflow that needs rendering or interaction. A practical pipeline can fetch ordinary pages over HTTP and send only browser-dependent tasks to Playwright.

Browser automation does not guarantee that a site will permit or serve a scrape. Check the target’s terms and applicable rules, keep request rates responsible, and treat access controls and bot checks as signals to stop or reassess—not obstacles a browser or proxy is guaranteed to overcome.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

How to think about parallelism and isolation

Set a ceiling in your application

Playwright Test has a workers setting for parallel test workers. That setting is for the test runner; it is not a production scraping scheduler. An application scraper needs its own queue and concurrency control so that an incoming batch cannot launch an unbounded number of remote sessions.

Set the job ceiling no higher than the lowest of three constraints: the capacity your application can handle safely, the current Browserless account concurrency allowance, and a responsible request rate for the target workload. The last two are not interchangeable: a plan may permit a number of simultaneous sessions, but that is not a recommendation to send that many requests to one site.

Use contexts for independent identities

A browser process can contain multiple BrowserContexts. Each context isolates cookies and storage, making it appropriate for a separate job or identity that should not inherit another job’s session state. Playwright describes contexts as fast and cheap to create, but they do not remove the need to bound total sessions and pages.

Close each context after its pages are done. When the remote browser session is finished, close the connected browser too. A shared context may be appropriate only when jobs are intentionally part of the same session and can safely share state.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a Browserless connection protocol

Browserless provides remote browsers over WebSocket endpoints; Playwright connects to that browser rather than launching a local one. Its documentation distinguishes two connection approaches:

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
  • Native Playwright: use Playwright’s connect method and the Browserless endpoint whose path includes the browser and /playwright. This uses Playwright’s protocol and supports Playwright-native features.
  • CDP: use connectOverCDP with the regional Browserless endpoint. This uses Chrome DevTools Protocol and supports Browserless helper integrations.

Do not assume the methods are interchangeable. Check Browserless’s current feature matrix against the browser and capabilities your script needs, especially if relying on Firefox or WebKit, request routing, API request contexts, extensions, or vendor-specific helpers. Endpoint paths and regional hostnames can change, so take the exact endpoint for your account and selected region from the current Browserless documentation rather than copying a stale URL.

Choose a region near the job runner when latency matters. Browserless documentation lists shared regional endpoints for San Francisco, London, and Amsterdam; availability and naming should be confirmed for the account. Keep the token and full WebSocket endpoint in an environment secret, not source control, command output, or routine logs. Playwright warns that anyone who knows a browser server’s WebSocket path may be able to control the OS user running it, so treat the endpoint as a credential.

A bounded Playwright worker connected to Browserless

The following Node.js example uses native Playwright. It reads the full endpoint from an environment variable, admits only a configured number of jobs at once, creates an isolated context per URL, and always closes the context and browser connection. Install Playwright with npm install playwright; set BROWSERLESS_WS_ENDPOINT to the exact native Playwright WebSocket endpoint and token from your Browserless account. Set MAX_CONCURRENT to a positive integer no larger than the capacity you intend this worker process to consume.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import { chromium } from 'playwright';

const endpoint = process.env.BROWSERLESS_WS_ENDPOINT;
const limit = Number(process.env.MAX_CONCURRENT ?? 2);
if (!endpoint) throw new Error('Set BROWSERLESS_WS_ENDPOINT');
if (!Number.isInteger(limit) || limit < 1) {
  throw new Error('MAX_CONCURRENT must be a positive integer');
}

const urls = process.argv.slice(2);
if (urls.length === 0) {
  throw new Error('Pass one or more URLs as command-line arguments');
}

let next = 0;
const failures = [];

async function worker() {
  while (true) {
    const index = next++;
    if (index >= urls.length) return;
    const url = urls[index];
    let browser;
    let context;
    const started = Date.now();

    try {
      browser = await chromium.connect(endpoint);
      context = await browser.newContext();
      const page = await context.newPage();
      const response = await page.goto(url, {
        waitUntil: 'domcontentloaded',
        timeout: 30_000,
      });
      if (!response) throw new Error('Navigation returned no response');

      const title = await page.title();
      console.log(JSON.stringify({
        url,
        status: response.status(),
        title,
        duration_ms: Date.now() - started,
      }));
    } catch (error) {
      const record = {
        url,
        duration_ms: Date.now() - started,
        error: error instanceof Error ? error.message : String(error),
      };
      failures.push(record);
      console.error(JSON.stringify(record));
    } finally {
      if (context) await context.close().catch(() => {});
      if (browser) await browser.close().catch(() => {});
    }
  }
}

await Promise.all(
  Array.from({ length: Math.min(limit, urls.length) }, () => worker()),
);
if (failures.length) process.exitCode = 1;

Run it, for example, with MAX_CONCURRENT=3 BROWSERLESS_WS_ENDPOINT='<your native Playwright endpoint>' node scrape.js https://example.com https://example.org. The endpoint placeholder is intentional: use the account-specific URL supplied by Browserless, and avoid putting a real token in shell history on a shared machine. This example extracts a page title to demonstrate the flow; replace that line with extraction appropriate to the page and validate the returned data.

Why this wait condition is conservative

domcontentloaded waits for initial document parsing, not every image, analytics call, or long-lived network connection. It is a useful starting point for many rendered pages, but it may be too early for an application that populates the required data afterward. In that case, wait for a meaningful selector with a bounded timeout. Waiting for network idle on every page can be a poor default when pages keep connections open or load background resources indefinitely.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Using CDP instead

If you need Browserless’s CDP-oriented helper integrations, change the connection call to await chromium.connectOverCDP(cdpEndpoint) and provide the corresponding regional CDP endpoint from the current account documentation. Do not merely swap the method while keeping a native Playwright endpoint: the endpoint path and protocol must match. Confirm the feature matrix before depending on a Playwright capability through CDP.

Size capacity and observe queues

Browserless defines concurrency as the maximum number of simultaneous sessions. When that capacity is full, additional work can queue. Its pressure endpoint reports running, queued, and maximum values; use those signals alongside your application’s own job metrics. A queue can smooth a burst but does not create capacity. If queued work grows continuously, reduce demand, add capacity, or redesign the workload rather than allowing the backlog to grow without limit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Browserless’s official pricing and best-practices pages, accessed September 29, 2026, list these plan examples. They are service limits, not independent performance measurements, and should be checked against the live plan before sizing a deployment.

Plan Concurrent browsers listed Maximum session duration listed
Free 2 2 minutes
Prototyping 5 monthly / 10 yearly 15 minutes
Starter 30 monthly / 40 yearly 30 minutes
Scale 80 monthly / 100 yearly 60 minutes

Browserless’s terminology documentation, accessed September 29, 2026, describes self-hosted defaults of 10 concurrent sessions and a queue length of 10, configurable through environment variables. Plan quotas, maximum durations, and self-hosted defaults can change; verify the current documentation and configuration before deployment.

Track each job’s URL, start time, duration, response status when available, retry count, and structured failure reason. Separately monitor queue depth, active sessions, timeouts, and session duration. This lets you distinguish a slow target page from a saturated account or a failing connection instead of treating all errors as one generic scrape failure.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Make jobs resilient without leaking sessions

Use bounded retries

Record failures and retry only errors that appear transient, such as a temporary connection failure. Use a small retry limit and bounded backoff; do not retry indefinitely or automatically repeat a target response that indicates access is disallowed. Preserve the original failure in logs so repeated attempts do not hide the cause.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Always clean up

Browserless recommends closing sessions so they do not occupy concurrency unnecessarily. Put context and browser closure in a finally path, as in the example. If a process can be cancelled, arrange for its shutdown path to stop accepting jobs and close active sessions. A navigation timeout is not a reason to leave a remote session open.

Keep sessions short-lived

Use one remote browser connection for a bounded unit of work, and close it when that work is done. Avoid treating a remote browser as a durable worker state store. If a job needs a long-lived identity, explicitly plan for the account’s maximum session duration and recovery behavior; do not assume a disconnected session can always be resumed.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Configure proxies only for an authorized need

Playwright supports HTTP(S) and SOCKSv5 proxy configuration at browser or BrowserContext scope, including credentials and bypass hosts. A browser-level proxy can suit a uniform worker configuration; a context-level proxy can isolate proxy settings where different authorized jobs require them.

Use a proxy only where you have a documented network or compliance requirement. Proxy support is a configuration capability, not a promise of access, anonymity, successful scraping, or immunity from blocking. It does not override a target site’s rules or make a restricted request permissible.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Browserless or local Playwright?

With local Playwright, your team owns browser installation, updates, runtime capacity, and the infrastructure around concurrent browser processes. Browserless describes its managed service as handling browser pools and isolation, while its plan quotas vary. That is the vendor’s description, not an independent performance guarantee. Compare the options against the work your team must operate:

Decision point Local Playwright Browserless
Browser operations Your team installs and maintains browser runtime and capacity. Managed browser pools and isolation are described by Browserless.
Concurrency Bound by the compute and limits you configure. Bound by the account or self-hosted concurrency and queue configuration.
Connection behavior Local launch and browser lifecycle are under your process. Remote WebSocket connection; select native Playwright or CDP and account for network latency and session limits.
Geography and networking Choose where your own runner runs and configure its network. Choose an available documented region and verify network/proxy support for your requirement.
Cost comparison Estimate compute, maintenance, and monitoring at observed workload. Check current plan price, quota, and maximum session duration against observed usage.

No universal throughput comparison follows from these service descriptions. Test with your real pages, extraction work, region, and permitted request pattern before committing to capacity or cost assumptions.

Or skip the browser setup

If the job is to capture a page as an image or PDF rather than extract structured data, ScreenshotNeo is a website screenshot API and MCP server; it is not a replacement for a scraper that needs page data. Its API takes one GET request with a URL and can return PNG, JPEG, WebP, or PDF. It removes cookie/consent banners, newsletter popups, and chat widgets before capture, with each step configurable. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; responses identify the page verdict and billing status in headers. AI agents can use its MCP server tools, including take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

Example using cURL (see the ScreenshotNeo API documentation):

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" 
  -d access_key=YOUR_API_KEY 
  --data-urlencode url=https://example.com 
  -o shot.webp

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

Frequently Asked Questions

Does Browserless make a scrape permissible if a site blocks automation?

No. A managed browser, proxy, or alternate connection protocol does not establish permission to access a site. Follow the target’s terms and applicable rules.

Can I reconnect to a remote browser after my worker restarts?

Do not assume so. Treat remote sessions as short-lived resources and design a restarted worker to recover the job from its queue rather than depend on restoring a prior browser session.

Is there a universal number of pages per second for Playwright and Browserless?

No universal throughput figure is established here. Measure with the pages, region, extraction steps, concurrency, and permitted request pattern you actually use.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.