Why we don't publish a single winner
Proxy speed and success rates depend on your targets, locations, time of day, request pattern and client. A provider that wins on one site can lose on the next. So instead of a leaderboard, here's how to benchmark Webshare and Geonode fairly on your own work.
What the providers say
| Claim (provider figures) | Webshare | Geonode |
|---|---|---|
| Uptime | 99.97% | Check current status page |
| Network | 100+ Gbps aggregate | Server-grade ISP and datacenter, large residential pool |
| Static IP speed | Up to 1 Gbps advertised | Unmetered ISP bandwidth |
| Residential pool | 80M+ IPs, 195 countries | 7.5M+ IPs active monthly, 150+ countries |
Claims are a starting point, not a result.
A fair test design
- Same products: compare like with like (residential vs residential, ISP vs ISP).
- Same targets: 3 to 5 real targets, including your hardest.
- Same client and settings: identical code, headers, timeouts and concurrency.
- Same locations: identical country or city targeting.
- Same time windows: run both in parallel, at several times of day.
- Enough samples: at least 300 requests per product per target.
Benchmark script
import asyncio, time, statistics, aiohttp
async def one(session, url, proxy, check):
t = time.time()
try:
async with session.get(url, proxy=proxy, timeout=aiohttp.ClientTimeout(total=30)) as r:
body = await r.read()
return check(r.status, body), time.time() - t, len(body)
except Exception:
return False, time.time() - t, 0
async def bench(url, proxy, n=300, conc=10, check=lambda s, b: s == 200):
sem = asyncio.Semaphore(conc)
async with aiohttp.ClientSession() as s:
async def run():
async with sem:
return await one(s, url, proxy, check)
res = await asyncio.gather(*(run() for _ in range(n)))
ok = [r for r in res if r[0]]
times = sorted(r[1] for r in res)
return {"success": len(ok) / n, "p50": statistics.median(times), "p95": times[int(n * 0.95) - 1],
"kb_per_ok": sum(r[2] for r in ok) / max(len(ok), 1) / 1024}Replace check with a content check (for example, that a price or title is present), because blocks often return 200.
Metrics to record
- Success rate (content-verified).
- Median and 95th percentile latency.
- Error types: timeouts, 403, 429, CAPTCHAs, provider errors.
- KB per successful response.
- Cost per 1,000 successes, from each provider's pricing.
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 our complete Geonode guide for its full product range.
Reading the results
| Pattern | Meaning |
|---|---|
| One provider much higher success on a target | Route that target there |
| Both low success | Fix fingerprints, headers or rate first |
| Similar success, different latency | Choose on cost unless latency matters |
| Good median, bad p95 | Expect timeouts at scale; set retries |
Re-test regularly
Sites change defences and pools change composition. Re-run monthly or when success rates drift.
Verdict
Test both. Use the free plan and trial to do it cheaply (see free plans compared), then route each target to the provider that wins it.
Example results table
| Target | Product | Provider | Success | p50 | p95 | KB per success | Cost per 1,000 |
|---|---|---|---|---|---|---|---|
| target-a | Residential | Webshare | |||||
| target-a | Residential | Geonode | |||||
| target-b | Datacenter | Webshare | |||||
| target-b | Datacenter | Geonode |
Fill in your own numbers; keep the table for future comparisons.
Interpreting latency
Residential latency is naturally higher and more variable than datacenter latency because traffic passes through home connections. Compare residential with residential, and focus on p95 for capacity planning.
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 Webshare geo-targeting.
Reliability over time
Run a small benchmark daily (for example, 50 requests per provider per key target) and chart success rates. Trends reveal gradual degradation that one-off tests miss.
A real-world example
A team benchmarks both providers' residential pools on five targets over three days, at three times of day. Medians are within 15% of each other, but on one target one provider's p95 latency is much higher in the evening, causing timeouts at their production concurrency. They route that target to the other provider in the evenings, which removes the timeouts without changing anything else.
Not sure this is the right proxy type for the job? The best proxies in 2026 guide compares residential, ISP, datacenter and mobile options, and our cheap proxies guide covers budget picks that still work.
Key takeaways
- Speed and reliability depend on your targets, so benchmark both yourself.
- Compare like with like, with identical code, locations, times and concurrency.
- Measure content-verified success, p50 and p95 latency, and cost per success.
- Use p95 for capacity planning.
- Re-run benchmarks regularly and route by results.
FAQ
Which is faster, Webshare or Geonode?
It depends on targets and locations. Benchmark both on your own work.
How many requests do I need for a fair test?
At least 300 per product per target, spread over time.
Should I trust published uptime figures?
Treat them as claims. Measure success rate on your targets.
How do I measure success rate correctly?
Verify content, not just status codes, because blocks often return 200.
Should I benchmark from my production servers?
Yes. Network path and location affect results.
How often should I re-run benchmarks?
Monthly, and whenever success rates change noticeably.
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.