How to Use Proxies with Puppeteer

Puppeteer drives a real Chromium instance from Node, so wiring in a proxy means handing it to the browser at launch rather than per request. Getting a puppeteer proxy working reliably comes down to two things: the launch flags Chrome accepts, and how you feed it credentials.

This page weighs what actually matters when picking and configuring proxies for headless Chrome, without the marketing gloss.

Using proxies with Puppeteer

  1. Get proxy credentials

    Obtain host, port and auth from your provider.

  2. Configure Puppeteer

    Set the proxy in your Puppeteer request or launch options.

  3. Rotate & retry

    Rotate IPs and handle bans/timeouts for reliable runs.

Which proxy type

Proxy typeWhen to use it
ResidentialIPs assigned by ISPs to real home users; hardest to detect, best for sensitive targets.
DatacenterFast, cheap IPs from cloud/hosting providers; ideal for tolerant targets and high throughput.
ISPDatacenter-hosted IPs registered under ISPs; residential legitimacy with datacenter speed and stable sessions.

Our verdict

For most Puppeteer work, a rotating residential or ISP gateway with a single authenticated endpoint saves the most headache, since Chrome takes only one proxy per browser. Confirm authentication and protocol support before committing, and match the proxy type to how hard the target site inspects traffic.

Frequently asked questions

Chrome ignores a user:password embedded in the --proxy-server flag, so pass the host and port at launch and supply credentials through page.authenticate(). Alternatively, route through a local forwarding proxy that handles the auth for you.

Not natively. The proxy is set once when the browser launches and applies to every tab and context. For per-session IPs, either launch a separate browser per proxy or use a rotating gateway that changes the exit IP behind one endpoint.

It depends on the target. Datacenter proxies are cheaper and quicker and fine for lenient sites, while residential or ISP addresses blend in better where IP reputation is scored. Puppeteer itself works with either.

Yes, because it relies on Chrome's --proxy-server flag, which accepts SOCKS as well as HTTP. Keep in mind Chrome can't send proxy credentials over SOCKS, so choose an IP-authenticated endpoint if you go that route.

Related proxy guides

Proxy Ranked is an independent comparison resource. Labels are qualitative, not numeric rankings.