Skip to content

Web scraping VPS for Playwright, Selenium and Scrapy

Sized for real scraping: 30+ concurrent headless browsers, a static IP for orchestration and the memory to keep long jobs alive through Cloudflare retries and proxy churn.

  • 1 Gbps port, 10 Gbps option
  • Traffic included, no per-GB billing
  • Pay with crypto, no KYC

At scale, scraping is a memory problem before it's an IP problem

One Playwright tab is fine on a laptop. Fifteen tabs against a modern single-page app, with trace mode, screenshots and network interception, use 8+ GB and start swapping before Redis, the database writer or the proxy rotator get a byte.

  • Reserve 500 MB of RAM per concurrent Chromium tab as a floor
  • Long jobs need a machine that doesn't sleep, update or lose Wi-Fi
  • Postgres and Redis on the same server save about 40 ms per item versus a remote database
  • Upload speed matters: most home connections upload 10 times slower than they download
Playwright with trace, per tab
~600 MB
Selenium and Chrome, per session
~450 MB
Scrapy (API only), per spider
~120 MB
Puppeteer, per headless Chromium
~380 MB

Every mainstream scraping framework, one command away

Python 3.10 to 3.12, Node 20 and 22, Go and Rust stable. Docker and Compose v2.

  • Playwright
    Best for modern JS-heavy targets. One playwright install fetches Chromium, WebKit and Firefox. Headless shell saves about 180 MB per browser.
    Python, Node, .NET, Java
  • Selenium
    Grid Hub and Node pattern works out of the box. The Advanced plan hosts a Hub and 4 Nodes with 5 sessions each.
    Python, Java, Node, C#
  • Scrapy
    The sweet spot for API and HTML-only scraping, with Scrapyd and scrapy-splash for JS fallback. Even Basic runs 200+ requests a second on light targets.
    Python, Twisted async
  • Puppeteer
    The same Chromium engine with a tighter Node API. The stealth plugin works: we don't strip user agents or block CDP.
    Node, Python (Pyppeteer)

Run jobs with the scheduler you already use

No proprietary orchestrator. It's a proper Linux server (or Windows Server), so you keep your production stack.

  • cron and systemd timers
    Native scheduling with jitter, retry on failure and journalctl logs.
  • Celery, RQ or Bull
    Redis is one apt install away. Connect your workers to a shared queue.
  • Scrapyd
    A REST API to schedule spiders, pause them or watch job stats.
  • Docker Compose
    docker compose up -d and forget. Docker and Compose v2 install in one command.
  • Kubernetes (k3s)
    On the larger plans, single-node k3s deploys in one command.
  • GitHub Actions self-hosted runner
    Point your CI at the VPS for scheduled scrape jobs.

Deploy a Playwright fleet the way the docs recommend

Root SSH, systemd and Docker. No panel to click through and no lock-in. Bring your repo and your proxy config.

  • Root SSH from minute one, no restricted shells
  • A clean OS image: you decide which ports to open
  • chrome-headless-shell and all browser dependencies in one Playwright command
worker.py
import asyncio
from playwright.async_api import async_playwright
from proxies import next_proxy  # your rotator

async def scrape(url):
    async with async_playwright() as p:
        proxy = next_proxy()
        browser = await p.chromium.launch(headless=True)
        ctx = await browser.new_context(
            proxy={"server": proxy.server, "username": proxy.user, "password": proxy.pw},
        )
        page = await ctx.new_page()
        await page.goto(url, wait_until="domcontentloaded")
        html = await page.content()
        await browser.close()
        return html

Web scraping VPS plans

Linux VPS plans with root access. Pro runs 12 to 15 concurrent Chromium tabs; Advanced handles 30 to 35.

What scraping teams ask before signing up

Still unsure? Our team answers on live chat and in tickets.

Why does a Playwright / Selenium job on my laptop keep dying overnight?

Three things usually kill it in this order. First, memory: a warm Chromium tab averages 200–500 MB and Playwright's default trace mode adds another ~100 MB per context, so 20 concurrent tabs will OOM a 16 GB laptop that's also running VS Code, Slack, and a browser. Second, sleep: macOS App Nap and Windows modern-standby will pause your process the moment the lid closes or the screen locks. Third, IP heat: after 40k requests from one residential IP the target is fingerprinting and 429-ing you, and your local retry logic just amplifies the block.

How much RAM does a headless Chromium instance actually eat?

Baseline is 180–250 MB for a chrome-headless-shell process with a single blank tab. Load a real page (React app, product listing, infinite scroll) and it climbs to 400–700 MB per tab depending on the site. Playwright with trace/video recording on adds another ~100 MB per browser context. Practical planning: budget 500 MB per concurrent tab, then leave 20% headroom for the OS + your Python/Node runtime + Redis. The Pro plan (12 GB) is sized for 12–15 concurrent Chromium tabs. Advanced (24 GB) comfortably handles 30–35.

What frameworks are supported?

Playwright (Python / Node / .NET / Java), Selenium 4 + Grid, Scrapy + Scrapyd, Puppeteer, Requests + httpx + aiohttp, Colly (Go), and Rust reqwest / fantoccini. Playwright installs Chromium, chrome-headless-shell, Firefox and WebKit with matching driver versions in one command. Docker images for browserless/chrome and selenium/standalone-chromium work out of the box.

Do I bring my own proxies, or do you sell them?

Bring your own. Good proxies are workflow-specific and we don't want to mark up someone else's product. We're fully compatible with Bright Data, IPRoyal, Smartproxy, Oxylabs, SOAX, Rayobyte, and self-hosted 3proxy / Squid. The VPS itself has a clean static IPv4 you can use for API-based endpoints where the target doesn't care about residential origin (public data APIs, sitemaps, robots-friendly targets).

How do you handle scheduling long-running jobs?

Whatever your team already uses. systemd timers with journalctl for straightforward cron replacement, Scrapyd for pausable/restartable spider jobs, Celery + Redis for distributed queues (Redis is one apt install away), or Kubernetes on k3s. tmux and screen are also available if you just want to launch and detach. We don't force you into a proprietary job runner.

Will my scraper get IP-banned from the VPS's static IP?

For any target with real anti-bot in place (Cloudflare, DataDome, Akamai, PerimeterX), yes, eventually. That's not a VPS problem, it's an inherent limit of any single IP against a target that fingerprints. The right pattern is: use the VPS static IP for orchestration, storage, and API-friendly targets, and route the actual browser traffic through rotating residential proxies. We optimize for that pattern: no NAT weirdness that breaks sticky sessions, no MTU quirks that mangle SSL through proxies.

What about Cloudflare Turnstile, Cloudflare's Under Attack mode, or hCaptcha?

The VPS itself doesn't solve these. It gives you a stable environment to run whatever you use to solve them: 2Captcha / CapSolver clients, undetected-chromedriver, camoufox, curl_cffi with browser TLS fingerprints, or your own solver. The important thing is that we don't block outbound to any solver API, don't strip TLS ClientHello, and don't run any interposing proxy or WAF that would interfere with fingerprint spoofing.

Can I run a Selenium Grid across multiple VPSes?

Yes. Put a Selenium Hub on one VPS and Node workers on 2–4 others, and connect them over a WireGuard tunnel you set up yourself (one apt install). This is the cleanest way to scale to 100+ concurrent sessions without any single machine turning into a memory bottleneck.

How is bandwidth billed?

Traffic is included in your plan price: we don't bill per GB or per TB. If you plan to push sustained very high volumes, tell support first so we can place your server well.

Can I pay in crypto?

Yes, crypto is how we take payment: Bitcoin, USDT (TRC-20 / ERC-20), USDC, ETH, Monero and more. No KYC for any order.

Move your scraper off your laptop.

Enough RAM for the browsers, bandwidth for the data and uptime so your job never wakes you at 3am.

Order a scraping VPS