Webshare vs Geonode

Webshare vs Geonode for Puppeteer: Setup, Sessions and Cost per Page

Using Webshare and Geonode with Puppeteer compared: launch and authentication setup for each, per-browser and per-page sessions, bandwidth costs of headless Chrome, and which provider suits which Puppeteer job.

By Team of Monkeys Editorial Updated 3 min read Affiliate disclosure

This guide contains affiliate links to Geonode and Webshare. If you buy through them we may earn a commission, at no extra cost to you.

Puppeteer: Webshare vs Geonode illustration showing Puppeteer connecting through Compare to Website, covering sessions, bandwidth 3jdej38j4

Setup is the same pattern on both

Puppeteer takes the proxy server as a Chrome launch flag and credentials through page.authenticate(). That works identically for Webshare and Geonode; only the host, port and username format differ.

js
const browser = await puppeteer.launch({ args: [`--proxy-server=${PROXY_HOST}`] });
const page = await browser.newPage();
await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });

Provider-specific walkthroughs: Webshare with Puppeteer and Geonode with Puppeteer. For the general patterns, see our Puppeteer proxies guide.

Sessions in a browser

Browsers fire many requests per page, so per-request rotation inside one page is usually a bad idea. Both providers let you hold an IP:

WebshareGeonode
Session per browser or contextSession number in the usernameSession ID with configurable lifetime
Long tasksStatic residential or dedicated DC IPSticky up to 24 hours, or ISP IP
Fixed IPsDatacenter and static residential listsISP proxies

For long-running browser tasks on residential IPs, Geonode's published 24-hour sticky sessions are an advantage. For browser work on fixed IPs, Webshare's cheap static residential IPs are attractive. See sticky sessions compared.

Bandwidth: the hidden cost

A headless Chrome page load often transfers 1 to 5 MB. On residential traffic billed per GB, that adds up fast:

Pages per monthAt 2 MB/pageWebshare residential (approx.)Geonode residential (approx.)
10,00020 GBAbout $50About $16
100,000200 GBAbout $400 to $450About $130 to $145

Blocking images, fonts and media typically halves these numbers on either provider:

js
await page.setRequestInterception(true);
page.on("request", (r) => (["image", "media", "font"].includes(r.resourceType()) ? r.abort() : r.continue()));

Datacenter for lenient sites

If your Puppeteer targets accept datacenter IPs, Webshare's per-IP lists avoid per-GB costs entirely (within the plan's bandwidth setting). That's a big saving for rendering-heavy jobs like screenshots and PDF generation of lenient sites.

Proxy tip: To test the Geonode side of this comparison, a small residential balance from Geonode is enough, and it doesn't expire if you pause. See using Geonode with Puppeteer for its full product range.

Which to choose by job

Puppeteer jobBetter fit
Screenshots or PDFs of lenient sitesWebshare datacenter list
Scraping protected sitesGeonode residential (cheaper per GB), test Webshare too
Long logged-in sessionsGeonode sticky sessions or either provider's static IPs
Many browser profiles on fixed IPsWebshare static residential (cheap per IP)
Hard pages, small volumeGeonode Scraper API instead of Puppeteer

Verdict

Setup is a tie. Choose by traffic type: Webshare for datacenter-friendly targets and cheap static IPs, Geonode for residential-heavy browser automation and long sessions.

Provider switch in one place

js
const PROVIDERS = {
  webshare: { server: "http://p.webshare.io:80", user: (s) => `${WS_USER}-${s}`, pass: WS_PASS },
  geonode:  { server: GN_SERVER, user: (s) => geonodeUser(s), pass: GN_PASS },
};

async function openTask(browser, providerName) {
  const p = PROVIDERS[providerName];
  const ctx = await browser.createBrowserContext({ proxyServer: p.server });
  const page = await ctx.newPage();
  const sid = Math.floor(Math.random() * 1e6);
  await page.authenticate({ username: p.user(sid), password: p.pass });
  return { ctx, page };
}

Recent Puppeteer versions accept a proxy per browser context, which lets one browser serve both providers. geonodeUser() builds the session username in Geonode's documented format.

A/B testing providers in Puppeteer

Send alternate tasks to each provider for a day, and log success, bytes and time per task. The provider with the lower cost per successful task wins that target.

Budget tip: The cheapest way to settle this comparison is to test both: Webshare has a free datacenter plan, and Geonode offers a low-cost residential trial. Run the same targets through each. See using Webshare with Puppeteer.

Resource blocking pays twice

Blocking images and media reduces residential cost and speeds up pages on either provider. Measure bytes per page before and after; savings of 50% or more are common.

A real-world example

A screenshot service renders 300,000 pages a month. About 80% are on lenient sites, rendered through a Webshare datacenter list with no per-GB cost. The remaining 20% sit behind bot protection and run through Geonode residential with images blocked, using around 120 GB a month. Contexts get their own session IDs, and the service tracks success and bytes per provider so it can reroute domains when results change.

For the bigger picture beyond these two providers, read our best proxies buyer's guide, and see cheap proxies for ways to cut cost per successful request.

Key takeaways

  • Puppeteer setup is identical on both: --proxy-server plus page.authenticate().
  • Keep one session per context; avoid rotation within a page.
  • Headless Chrome is bandwidth-heavy, so per-GB price matters for residential.
  • Use Webshare datacenter lists for lenient rendering jobs.
  • Block heavy resources on either provider to cut costs.

FAQ

Can I put credentials in --proxy-server?

No, Chrome ignores them on both providers. Use page.authenticate() or IP allowlisting.

Which provider is cheaper for Puppeteer scraping?

For residential traffic at list prices, Geonode. For datacenter-friendly targets, Webshare.

Does SOCKS5 work with Puppeteer on either?

Only with IP allowlisting, because Chrome doesn't support SOCKS5 authentication.

Can one Puppeteer browser use both providers?

Yes, with per-context proxy settings in recent Puppeteer versions, or separate browsers per provider.

How do I reduce residential cost in Puppeteer?

Block images, fonts and media, and wait for specific elements rather than full network idle.

Which provider is faster in Puppeteer?

Measure on your targets; latency depends on location and pool.

Affiliate disclosure: Team of Monkeys is an affiliate of Geonode and Webshare. Links and banners marked as sponsored, and links to Geonode and Webshare in the text, use our referral links, and we may earn a commission if you buy through them, at no extra cost to you. Our explanations and comparisons are written to be useful whichever provider you choose.

Editorial note: Proxy providers change their pools, features and prices often, so treat any figures here as typical ranges at the time of writing and confirm current terms with the provider before you buy.