The marketing number
Open any residential proxy provider's homepage and you'll see a big number: 10 million IPs, 50 million, 100 million, more. These numbers are real in one sense and misleading in several others. Understanding what's behind them will help you compare providers sensibly.
What pool size usually counts
Most advertised pool sizes are the number of unique IPs seen over a period, typically a month, or sometimes ever. Residential IPs change constantly: home routers get new addresses from their ISPs, phones move between networks, devices join and leave the network. A device that's online for one hour and appears with three different IPs over a month can count three times.
What it usually doesn't tell you:
- How many IPs are online right now. This is often a small fraction of the headline figure.
- How many are in your target country or city. A huge global pool can be thin in Australia or Chile.
- How many are clean on your target site. Some may already be flagged.
- How many are unique devices versus the same device with changing IPs.
The numbers that matter
Concurrent IPs in your geography
If you need 500 concurrent sessions in Germany, the question is whether the provider reliably has well over 500 German exit nodes online at the time of day you run. Ask providers for country-level concurrent availability, or test by opening many sessions and counting unique IPs.
Subnet and ASN diversity
A thousand IPs from one ISP's single subnet are less useful than a thousand IPs spread across many ISPs and subnets, because websites often apply reputation at the subnet or ASN level. See IP reputation and proxies.
IP freshness and reputation
A smaller pool that's lightly used and well-maintained can beat a giant pool that's oversold. Test success rates on your actual targets.
How many IPs do you need?
A simple estimate:
IPs needed ≈ (requests per hour) ÷ (safe requests per IP per hour)If your target tolerates about 60 requests per IP per hour and you need 30,000 requests per hour, you need roughly 500 IPs in rotation at any time. With a rotating residential pool, the provider handles this as long as their concurrent availability in your region is comfortably larger. With static datacenter or ISP proxies, you'd buy around that many (plus a buffer).
For sneaker bots, the calculation is per task instead. See how many proxies for a sneaker bot.
Testing pool size yourself
- Open a rotating session and request an IP echo endpoint 1,000 times.
- Count unique IPs. A healthy pool should return mostly unique IPs.
- Count unique /24 subnets and ASNs (use an IP-to-ASN lookup).
- Repeat for each country you need, at the time of day you'll run.
import collections, requests
proxy = {"https": "http://USER-country-de:PASS@gate.example.com:7777"}
ips = [requests.get("https://api.ipify.org", proxies=proxy, timeout=20).text for _ in range(200)]
print(len(set(ips)), "unique of", len(ips))
print(collections.Counter(ip.rsplit(".", 1)[0] for ip in ips).most_common(5))Proxy tip: A practical next step is to run a few requests through a commercial pool and watch what changes. Geonode supports HTTP, HTTPS and SOCKS5 and lets you switch between rotating and sticky sessions from the same endpoint. We walk through it in our Geonode proxies guide.
Red flags
- Pool claims that dwarf the largest known networks, from a provider you've never heard of.
- No country-level breakdown available.
- Many repeated IPs or subnets in a small test.
- Success rates that drop sharply during peak hours.
What pool numbers look like across proxy types
| Proxy type | How "pool" is usually expressed | What to ask |
|---|---|---|
| Rotating residential | Millions of IPs seen per month | Live IPs in my countries at my hours |
| Mobile | Hundreds of thousands to millions | Carriers and live devices per country |
| ISP | Hundreds to tens of thousands of IPs | Subnets and ASNs; how many available to me |
| Datacenter | Thousands to hundreds of thousands | Subnet spread; how many dedicated to me |
Comparing a residential "pool" to a datacenter "pool" isn't meaningful: one counts transient exits, the other fixed servers.
Why small, clean pools can win
Imagine two providers:
- Provider A advertises a huge pool, but most customers hammer the same popular targets, so many exits are flagged on those sites.
- Provider B has a smaller pool but enforces stricter KYC and rate limits on customers, so exits stay clean.
On a popular, protected target, Provider B may deliver a higher success rate despite a smaller headline number. That's why testing on your own targets beats reading pool sizes. See how to test proxies before buying and IP reputation and proxies.
Pool depth for sneaker and account use
For sneakers and accounts, pool size matters differently:
- Sneaker raffles need many unique IPs in the right region, so residential pool depth matters.
- Checkout tasks use a fixed number of ISP proxies, so subnet spread matters more than pool size.
- Accounts need one stable IP each, so pool size barely matters; stability and cleanliness do.
Questions to ask a provider about their pool
- How many unique IPs did you see in [country] in the last 24 hours?
- How many are typically online at once at [time]?
- How many distinct ASNs and /24 subnets?
- What share of your traffic goes to my target domain category?
- How do you remove abused or flagged exits?
Vague answers to these questions are informative in themselves. See proxy provider red flags.
Estimating a pool's size from two samples
Ecologists estimate fish populations by catching, tagging, releasing and catching again. You can use the same "capture-recapture" idea on a rotating gateway to estimate how many IPs are really available for your targeting:
- Collect sample A: about 1,000 requests with per-request rotation in your target country, recording the exit IP each time. Count the unique IPs: call it a.
- Wait an hour, then collect sample B the same way. Count its unique IPs: b.
- Count the IPs that appear in both samples: m.
- Estimate the pool as a × b ÷ m.
For example, 900 unique IPs in A, 880 in B and 40 in both gives roughly 900 × 880 ÷ 40 = 19,800 IPs available to you at that time.
a = set(open("sample_a.txt").read().split())
b = set(open("sample_b.txt").read().split())
m = len(a & b)
print(len(a), len(b), m, round(len(a) * len(b) / m) if m else "no overlap: take bigger samples")Treat the result as a rough guide to the effective pool you're being served, not the provider's total. Gateways don't pick exits completely at random, and residential peers come and go between samples, which pushes estimates up. Run both samples at the time of day you'll actually work. The bandwidth cost is small, typically tens of megabytes against an IP echo endpoint.
Use it alongside the other checks in how to test proxies before buying, and compare like with like when reading residential proxy providers compared. City-level targeting shrinks pools fast; see geo-targeted proxies.
FAQ
Is a bigger proxy pool always better?
No. Beyond a certain size, quality, geographic depth and cleanliness matter more.
Why does my provider keep giving me the same IPs?
You may be targeting a narrow location, using sticky sessions, or the provider's pool in that area is thin.
How big is a typical datacenter proxy pool?
Datacenter pools are far smaller, typically thousands to hundreds of thousands of IPs, but every IP is always online. See datacenter proxies.
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.