Configure any available plan and add-ons. Pay only for 48 hours.
Try proxiesA proxy for Playwright in Python or Node.js: whitelist auth with no credential objects, a dedicated IP per browser context, from $19/mo.
Playwright handles authenticated proxies better than its neighbors — proxy: { server, username, password } is a first-class option and the framework answers the auth challenge for you — but the fine print still bites. The credential fields only work for HTTP and HTTPS proxies: point Chromium at SOCKS5 with a username and it fails with “Browser does not support socks5 proxy authentication,” a browser-level limitation no Playwright release can fix. Special characters in passwords break URL parsing, secrets end up in launch configs, and every context creation drags the credential object along.
With IP whitelisting the option shrinks to one field. Add the IP of the machine running your scripts in the Dashboard — every plan includes up to five whitelisted source IPs — and pass a bare server:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={"server": "IP:port"}) # whitelisted
context = browser.new_context()
page = context.new_page()
page.goto("https://example.com")
No username, no password, no encoding surprises — and SOCKS5 becomes as usable as HTTP, since there are no credentials for Chromium to choke on. The same proxy dict works in new_context(), which is Playwright’s real superpower: one browser process, several isolated contexts, each behind its own exit IP with its own cookies and storage — parallel scraping or multi-account work without paying the RAM cost of separate browsers.
Addresses come from your package list — export it in TXT, CSV, or a custom template and map one IP to one context. Packages start at 100 IPs, from $19/mo. Product specs are in the adjacent panel; the comparison table below shows how datacenter packages compare with other proxy types. For a step-by-step walkthrough — launch options, per-context proxies, and rotating proxies from a file — see the Playwright proxy setup guide.
Four infrastructure types — and the use cases each one fits best.
| Our pick for Playwright Packagesdatacenter IPv4 |
Rotating | ISP | IPv6 | |
|---|---|---|---|---|
| IP source | Datacenter, IPv4 | Datacenterthe same 100,000+ IP pool | Consumer ISP networks | Datacenter |
| IP allocation | Static list | Full pool accessthe exit IP rotates on every request | Static list | Static list |
| List refreshes | Up to 3 per month, free | Not applicable | Up to 3 per month, free | Provider-dependent |
| Pricing model | Per-IP packageunlimited bandwidth | Credit-basedyou pay per request, not per IP | Per-IP packageunlimited bandwidth | Per-IP package |
| Website compatibility | ✓ ~100% | ✓ ~100% | ✓ ~100% | ✕ Limitedmany websites don't support IPv6 |
| Speed | Up to 500 Mbps | Up to 300 Mbps | Up to 500 Mbps | Datacenter-grade |
| Anti-fraud trust | Medium | MediumIP rotation helps | High | Low to medium |
| Price | $from $0.07 per IP/month | $$$from $49.00/month | $$from $0.22 per IP/month | $typically the lowest-cost option |
| Best for | Web scraping and automation at a predictable volume: your own IPs, unlimited bandwidth | API scraping that needs as many different IPs as possible without buying a fixed list | Social media, accounts, long sessions — wherever IP trust matters | Use cases where the target site is guaranteed to support IPv6 |
| Buy now | Rotating proxies | ISP proxies | We don't sell these: too many limitations for general-purpose work |
Whitelisting is the base access method on every plan, which makes Playwright proxy authentication without credentials the default: pass a server, skip the username and password fields. For Playwright per-context proxies, the same applies to every context you create. Copy the example for your stack, or paste it into your AI coding assistant to adapt.
# HTTP or HTTPS proxy curl -x http://login:password@IP:port https://example.com # SOCKS5 curl --socks5-hostname IP:port \ --proxy-user login:password \ https://example.com
import requests proxy = "http://login:password@IP:port" # your proxy from the Dashboard r = requests.get( "https://example.com", proxies={"http": proxy, "https": proxy}, ) print(r.status_code)
import { ProxyAgent } from "undici"; const dispatcher = new ProxyAgent("http://login:password@IP:port"); const res = await fetch("https://example.com", { dispatcher }); console.log(res.status);
$ch = curl_init("https://example.com"); curl_setopt($ch, CURLOPT_PROXY, "IP:port"); curl_setopt($ch, CURLOPT_PROXYUSERPWD, "login:password"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch);
Choose a standard format or create a custom one with any field order and delimiter your software requires.
See the FAQ for the ports used by each protocol.
You can automate purchases, renewals, whitelist changes, and proxy list exports. Create an API key in your Dashboard in a couple of clicks.
Claude, Cursor, and other agents buy proxies, renew plans, and export updated proxy lists through an access token you create in your Dashboard. See how it works.
Per-IP prices shown are for the largest package size. Get an exact quote in the calculator above.
| IP | Country | Port | Protocol | |
|---|---|---|---|---|
| 212.183.88.215 | AT | 80 | HTTP | |
| 47.243.92.199 | HK | 3128 | HTTP | |
| 212.183.88.153 | AT | 80 | HTTP | |
| 212.183.88.13 | AT | 80 | HTTP | |
| 203.95.199.159 | KH | 8080 | HTTP | |
| 154.92.9.3 | JP | 80 | HTTP | |
| 113.204.79.230 | CN | 9091 | HTTP | |
| 181.214.1.97 | AE | 80 | HTTP | |
| 219.93.101.63 | MY | 80 | HTTP | |
| 185.18.250.64 | CH | 80 | HTTP |
A few service metrics—and feedback from our customers.
I use proxies for online games. I have been using the service for many months and I am satisfied with the quality and efficiency. Proxies work as they should and there are practically no disconnects. I recommend it, you will not regret it!
Like the service! Responsive and fast support, affordable prices, convenient renewal panel and network selection. Just what I need!
I used the service for social networking. At first I bought it for a month, but now I will definitely renew it because the quality is really good! I am very glad that I finally found a really cool service!
Proxies do not fail, and at this price it is a great gift. I buy them when I need them, usually once every few months. There have been a few minor glitches but the support here is above all praise. Responsive, kind, understanding and fast. All issues were resolved promptly. It is very nice to work with true professionals.
Can't find your answer? Message us in live chat — real humans reply.
Chromium has a quirk the docs bury: per-context proxies only take effect if the browser itself was launched with a proxy option. The convention is a placeholder — chromium.launch(proxy={"server": "per-context"}) — after which every new_context(proxy=...) works as expected. Skip the placeholder and context-level proxies are silently ignored, which is easy to misread as a dead proxy list. Firefox and WebKit don't need this, so cross-browser code has to branch on the engine. The addresses themselves can come straight from your exported package list — one per context.
Not with credentials — the message is literal. Chromium's network stack has no mechanism for SOCKS5 username/password, so Playwright refuses the combination up front instead of failing silently (Firefox does support authenticated SOCKS5, if switching engines is an option). The clean fix on any engine is removing the credentials: whitelist your machine's IP in the Dashboard and pass proxy={"server": "socks5://IP:port"} with no username at all. Since every address in our packages answers on HTTP, HTTPS, SOCKS4, and SOCKS5, you can also just switch the scheme to HTTP without changing the list.
A known trap: characters like =, @, or # in credentials break URL parsing, and depending on where the values end up, auth fails silently or the connection falls back unproxied. The immediate fix is to keep credentials out of the server string — Playwright's proxy option has dedicated username and password fields precisely for this. The structural fix is not having a password in the config at all: with IP whitelisting the launch options contain nothing secret, which also means your repo, CI logs, and error traces stop leaking proxy credentials.
Yes — proxy={"server": "IP:port"} is engine-agnostic, and with a whitelisted IP all three browsers connect without extra configuration. The differences appear only at the edges: Chromium needs the launch-level placeholder for per-context proxies and rejects SOCKS5 credentials, Firefox handles authenticated SOCKS5 natively, and WebKit takes the plain server option without per-context branching. If you run the full engine matrix in CI, whitelisting is the one setup that behaves identically across all of it — worth knowing before you standardize on credential objects.
A different proxy type may be a better fit for your use case. All products use the same Dashboard and support team.
An IP reserved exclusively for you, available from a single IP. Speeds of up to 500 Mbps per proxy.
Learn moreStatic ISP-registered residential IPs for use cases where network origin matters.
Learn morePay per request and access the full 100,000+ IP pool through a single gateway. Built for web scraping and API workloads.
Learn moreSOCKS5 with UDP support — for gaming, streaming, and VoIP.
Learn moreWe can sign a contract and provide all the documents your accounting team needs. Most business orders are activated within 24 hours of your request.