Best Proxies for Web Scraping in 2026: Pick the Type by the Target
Which proxy type fits the site you are scraping, what a million pages costs on each, and a 200-request test that tells a rate limit from a blocked address class.

The best proxy for web scraping is the cheapest type your target still accepts. That sentence does more work than any top-ten list, because the price gap between types is enormous: a million pages a month costs about $14 on datacenter addresses and up to $2,000 on residential traffic if you render every page in a browser.
So the question is not which vendor. It is which type, and you can find that out with two hundred requests before you spend anything serious. This guide gives you the test, the cost of each type per million pages, and the settings that matter once you have chosen. Prices are ours, taken from our live price list on 30 September 2026.
The short answer, by target
| What you are scraping | Proxy type | How it is billed |
|---|---|---|
| Sites with no bot defence: documentation, small shops, public data portals | Datacenter | Per address per month, traffic not metered |
| Large sites that answer over IPv6 and do not defend hard | IPv6 | Per address per month, the cheapest type we sell |
| Defended sites: marketplaces, search results, travel, tickets | Rotating residential | Per gigabyte |
| Pages behind your own login | ISP, one static address per account | Per address per month |
| Mobile apps and carrier-only content | Mobile | Per modem per day |
Most scraping jobs belong in the first or third row, and the expensive mistake is paying for the third when the first would have worked.
Find out what your target needs in 200 requests
Take one datacenter address and request the same kind of page two hundred times. Do not look at status codes alone: check that the response contains something only the real page has, such as a product title element.
import collections
import requests
TARGET = "https://example.com/some/listing"
MUST_CONTAIN = "product-title" # a string only the real page has
PROXY = "http://login:password@198.51.100.20:50100"
results = collections.Counter()
for _ in range(200):
try:
r = requests.get(TARGET, proxies={"http": PROXY, "https": PROXY}, timeout=20)
except requests.RequestException:
results["network error"] += 1
continue
if r.status_code == 429:
results["429 rate limit"] += 1
elif r.status_code in (403, 503):
results[f"{r.status_code} block"] += 1
elif r.status_code == 200 and MUST_CONTAIN not in r.text:
results["200 without content"] += 1
elif r.status_code == 200:
results["ok"] += 1
else:
results[str(r.status_code)] += 1
print(results)
Then read the result:
- All two hundred are fine. Datacenter is enough. Stop here and do not buy residential traffic.
- Fine at first, then 429. That is a rate limit on the address, not a judgement on its type. Slow down or add more datacenter addresses. Switching to residential would cost far more and solve nothing.
- 403 or a challenge page from the first request. The target rejects the address class. This is the case residential traffic exists for.
- 200 with no content, every time. A soft block: the site answers politely with a bot wall. In our own tests an Amazon product page came back as HTTP 200 and 3.8 KB of "continue shopping". Treat it as a block, and retry on a different address type.
One control makes the test trustworthy. Run the same script without a proxy, from your own connection. If you are blocked there too, the problem is your client, its headers or its TLS fingerprint, and no proxy of any type will fix it.
What a million pages costs on each type
For per-gigabyte types the cost is decided by page weight, so we use weights we measured ourselves: 46 KB and 106 KB for the raw HTML of a Wikipedia article and a Booking.com city page, 424 KB and 2,011 KB for the same pages rendered in a browser. The measurements are in how to make money with web scraping.
| Setup | Traffic for 1,000,000 pages | Cost with us |
|---|---|---|
| Datacenter, ten addresses | Not metered | $13.50 a month |
| IPv6, one hundred addresses | Not metered | $20 a month |
| Residential, HTML only, 50 KB pages | about 48 GB | $80 for a 50 GB package |
| Residential, HTML only, 106 KB pages | about 101 GB | about $150 |
| Residential, rendered, 424 KB pages | about 405 GB | $650 for a 500 GB package |
| Residential, rendered, 2 MB pages | about 1,920 GB | $2,000 for a 2,000 GB package |
Those figures are before retries, and a failed request is billed like a successful one.
Two things follow from the table. First, the datacenter rows do not grow with volume. A million pages a month is one request every 2.6 seconds across the whole job, or one every 26 seconds per address with ten addresses, which almost any site tolerates. Second, on residential the biggest cost lever is not the vendor or the rate per gigabyte. It is whether you render. The same million pages costs $150 as HTML and $2,000 through a browser.
Settings that matter once you have chosen
Rotation is per connection, not per request. On our residential gateway a new connection gets a new exit. A client that keeps connections alive, which is what session objects in HTTP libraries do, keeps the address it started with. If your scraper shows one address for minutes, that is why.
The clean fix is to control it yourself with session identifiers in the login:
import itertools
import requests
GATEWAY = "proxy.sotaproxy.com:10000"
counter = itertools.count(1)
def proxy_for_new_exit(country="US"):
n = next(counter)
url = f"http://login_c_{country}_s_{n}_ttl_30s:password@{GATEWAY}"
return {"http": url, "https": url}
session = requests.Session()
r = session.get("https://example.com/page/1", proxies=proxy_for_new_exit(), timeout=30)
Each new identifier asks for a new exit, and reusing an identifier keeps the same one for as long as its lifetime allows.
Keep one address for anything with state. Pagination that depends on a cookie, a cart, a search session: give that job one identifier with a fifteen-minute or one-hour lifetime. The three lifetimes and how to choose between them are in the rotating and sticky sessions reference.
Give every worker its own identifier. Two workers sharing one share an exit, and the target sees one visitor making twice the requests.
Choose the exit country to match the site. A UK retailer shows UK prices and stock to UK addresses. Our datacenter addresses are sold per country in 41 countries, the United Kingdom, the United States and Germany among them, and residential traffic takes the country as a suffix in the login.
Cut page weight before you cut the rate. In a headless browser, block what you do not parse:
BLOCKED = {"image", "media", "font"}
def drop_heavy(route):
if route.request.resource_type in BLOCKED:
route.abort()
else:
route.continue_()
page.route("**/*", drop_heavy)
That is Playwright's Python API. It does not make a rendered page cheap, since scripts and stylesheets are most of the weight, but it removes the part you never needed.
IPv6 proxies for scraping: when they work
IPv6 addresses cost $0.20 each per month with us, the lowest price in our catalogue. They work only if the target publishes an AAAA record, meaning the site is reachable over IPv6 at all.
We checked this for the large sites on 8 September 2026. Google, YouTube, Facebook, Instagram, LinkedIn, Reddit, Wikipedia and Amazon answer over IPv6. X, TikTok, eBay, AliExpress and Walmart do not. The full list by country, with a script to re-check any domain yourself, is on our IPv6 support page.
Two cautions before you buy a thousand of them:
- Reachable is not the same as permissive. A site can answer over IPv6 and still block datacenter ranges. Run the 200-request test on an IPv6 address first.
- Sites count IPv6 by block, not by address. Because one subscriber normally receives a whole /64, rate limits are commonly applied to the /64 or wider. Many addresses from one block can behave like one address.
We sell IPv6 in 17 countries. Details are on the IPv6 proxies page.
When a proxy is not the answer
Proxies change the address a request comes from. They do not change what the client looks like.
- The page is an empty shell until scripts run. Our raw request to a Reddit listing returned 8 KB titled "Reddit". That needs a browser, whatever the proxy.
- You are blocked without a proxy too. That is fingerprinting of the client, and the fix is in the client.
- You do not want to maintain any of this. Then buy the result instead of the traffic. Bright Data, Oxylabs and Zyte sell unblockers and scraping APIs that handle rendering, retries and challenges as a managed service. We do not sell one. The two largest are compared in Bright Data vs Oxylabs.
Where to buy
For residential traffic, the prices of five vendors at 10, 100 and 1,000 GB are in best residential proxies. At the time of writing we are the cheapest of the five per gigabyte, and we have no published third-party benchmark, so test before you buy volume.
For datacenter, ISP and IPv6 addresses our prices are $1.80, $3.00 and $0.20 for a single address per month, falling to $1.35 and $2.10 at ten addresses for the first two. There is no subscription, and payment is in cryptocurrency only. The full ladders are on the pricing page.
If you want to run the 200-request test before paying anyone, Webshare gives ten shared datacenter proxies free. Shared addresses fail more often than dedicated ones, so a pass there is good news and a failure is not the final word.
FAQ
What is the best proxy for web scraping?
The cheapest type the target accepts. Datacenter for sites without bot defence, residential for sites that reject datacenter ranges, a static ISP address for anything behind a login. Find out which applies with a 200-request test on one datacenter address.
Do I need residential proxies for scraping?
Only if the target blocks datacenter addresses by class, which shows up as a 403 or a bot wall from the very first request. A 429 after a run of successful requests is a rate limit, and more datacenter addresses fix it at a fraction of the cost.
How many proxies do I need?
Divide the pages you need per day by what one address can fetch under the target's limit. If a site tolerates one request every two seconds from an address, one address fetches about 43,000 pages a day. For a million pages a month that is a single address on paper, and ten in practice for headroom. On rotating residential the question does not apply: you buy gigabytes, and the pool supplies the addresses.
Are free proxies or proxy scrapers good enough?
A proxy scraper collects public proxy lists, and those addresses are shared with everyone else who scraped the same list. Expect most of them to be dead or already blocked on any site worth scraping. They are fine for learning how proxies work and not for a job you depend on.
HTTP or SOCKS5 for scraping?
HTTP, unless your tool needs something HTTP cannot carry. Every product we sell speaks both. If you do use SOCKS5, write socks5h:// so that hostnames resolve on the proxy side and not on your machine. The details are in protocols and ports.
Is web scraping legal?
It depends on the country, on what the data is and on how you use it. Public, non-personal data is treated very differently from personal data or content behind a login, and a site's terms can matter too. This is not legal advice. If the data is personal or the project is commercial, ask a lawyer before you scale.
Related articles

How to Make Money With Web Scraping in 2026: Five Models, Priced
Five ways scrapers get paid, what each one charges, and what a scrape actually costs to run, measured on real pages: HTML-only against a full browser render.

What Is a Proxy Used for: 2026 Arbitrage Guide
What is a proxy used for - Learn what a proxy is used for in 2026, from boosting security to managing multi-account operations for arbitrage teams

Google Maps Lead Scraping: What It Actually Costs Per Usable Lead
Google Maps has no email field, so every email scraper is a two-stage pipeline and only about half of businesses yield an address. What a thousand listings really costs per usable lead, the businesses-without-websites play, and where the law stands after the SerpApi ruling.

The Cheapest Residential Proxies in 2026, With the Catch Each One Hides
Verified per-gigabyte prices from five vendors' own pages, not from last year's blog posts. Why the advertised number is almost never the entry price, which providers put a monthly floor under your bill, and how to work out your real cost per gigabyte.

ISP vs Residential vs Datacenter vs Mobile Proxies: Which One You Actually Need
Static residential and ISP are the same product under two names, which is why half these comparisons compare a thing to itself. What each type is, what it costs per unit, and the one task each is genuinely best at.

How to Test a Proxy Before You Buy It: A 10-Minute Checklist
Ten checks that tell you whether a proxy trial is worth paying for: exit ASN, hosting flags, rotation behaviour, subnet spread, DNS and WebRTC leaks, and success rate on your own target.