Scrape a business directory at any real volume — Yellow Pages, a company aggregator, a marketplace, a professional network — and you hit the same wall fast: the server notices that one IP address is firing hundreds or thousands of requests, decides no human browses like that, and throttles you, serves CAPTCHAs, or blocks the address outright. Rotating proxies for web scraping are the standard answer. Instead of every request coming from your one IP, each request leaves through a different address drawn from a large pool, so the target sees what looks like many unrelated visitors rather than one bot.
This guide explains how IP rotation actually works, the proxy types that matter, when rotating residential proxies are worth the premium, how to rotate proxies in your own code, and how to evaluate a web scraping IP rotation service before you commit budget to it.
Why directories block scrapers in the first place
Directory sites are among the most defended targets on the web, because their whole value is the data you are trying to collect. Their servers watch for the fingerprints of automation:
- Request volume from one IP — the single loudest signal. A residential connection making 5,000 requests an hour to a company listings page is not a person.
- Rate and regularity — perfectly even spacing, or bursts far faster than a human could click.
- Missing or robotic headers — no realistic
User-Agent, noAccept-Language, no cookies. - Behavioral gaps — no mouse movement, no asset loading, straight-line navigation.
Proxies address the first of these directly, and only the first. They spread your traffic so no single address looks abnormal. They do not fix bad headers, a giveaway TLS fingerprint, or robotic timing — a good proxy is necessary but never sufficient. Pair rotation with realistic user-agent rotation, sane pacing, and, where needed, a headless browser. For the wider picture of how sites detect you, see anti-scraping protection.
How IP rotation works
A rotating proxy service sits between your scraper and the target and swaps the exit IP according to a policy:
- Per request — every single request exits from a different address. Ideal for stateless scraping where each page is independent, which describes most directory crawling.
- Timed / sticky sessions — the same IP is held for a set window (say 1–30 minutes) or a fixed number of requests, then rotated. You need this whenever a task spans several requests that must share a session: logging in, stepping through a paginated result set behind a cookie, or completing a multi-step form.
Most services expose this through a single gateway endpoint. You point your scraper at one host and port with your credentials, and the provider handles pool management and rotation on their side:
http://USERNAME:PASSWORD@gateway.provider.com:7000
Rotating pools versus sticky sessions is the key operational choice. For enumerating hundreds of thousands of directory records, per-request rotation with the largest pool you can afford is usually right. The core requirement is unrepeatability: across a huge crawl, few requests should ever reuse the same IP, so the target only ever sees sparse, unrelated-looking traffic.
Proxy types: which pool to rotate
Not all rotating proxies are equal, and the type dominates both your success rate and your bill.
Datacenter proxies
IPs from cloud and hosting providers. Fast and cheap, often sold by the IP or with generous bandwidth. The downside: their address ranges are known and easy to flag, so well-defended directories block them quickly. Great for lightly protected sites and high-volume, low-sensitivity work; weak against serious anti-bot systems.
Residential proxies
IPs assigned by ISPs to real home connections, routed through a peer network. To the target they look like ordinary consumer traffic, so they pass where datacenter IPs fail. They are slower and billed by bandwidth, which makes them pricier per gigabyte, but for a stubborn directory a smaller volume of residential requests often beats a large volume of blocked datacenter ones. This is the category most people mean by rotating residential proxies for web scraping.
ISP (static residential) proxies
Residential IPs hosted in a datacenter — they carry an ISP's reputation but the speed and stability of a datacenter. Useful when you need a residential appearance and a stable address held across a session.
Mobile proxies
IPs from cellular carriers (4G/5G). Because carriers share one IP across many subscribers via CGNAT, blocking a mobile IP risks blocking thousands of real users, so sites are extremely reluctant to. The most resilient and the most expensive — reserve them for the hardest targets.
| Type | Speed | Cost | Block resistance | Best for |
|---|---|---|---|---|
| Datacenter | Highest | Lowest | Low | Lightly-defended sites, bulk work |
| Residential | Medium | High (per GB) | High | Tough directories, geo-targeting |
| ISP / static residential | High | Medium–High | Medium–High | Session-bound residential tasks |
| Mobile | Medium | Highest | Very high | The most aggressive anti-bot sites |
A common cost-effective pattern: start on datacenter proxies, measure your block rate, and only escalate to residential or mobile for the specific pages that fail. See the deeper proxies for web scraping reference for anonymity levels and protocols.
What to look for in a rotating proxy service
For directory scraping at scale, weigh a proxy rotation for web scraping provider on:
- Pool size and diversity. The larger and more geographically spread the pool, the less any address repeats and the lower your ban risk. This is the single most important factor for mass extraction.
- Rotation control. Can you choose per-request rotation and sticky sessions, and set the sticky duration?
- Geo-targeting. Directory data is often country- or city-specific. You want to select exit locations by country, and ideally by city or ASN.
- Concurrency limits. How many simultaneous connections does the plan allow? Directory crawls run many in parallel.
- Billing model. Datacenter plans are often per-IP or flat bandwidth; residential and mobile are almost always per-GB. Per-GB billing rewards lean scraping — request only what you need and block images and other heavy assets.
- Reliability and support. Low error rates, high uptime, and responsive support matter more on a week-long crawl than a slightly lower headline price.
Providers worth evaluating in 2026
The proxy market consolidated around a set of established players offering large residential and mobile pools with gateway rotation, geo-targeting, and API access. Names commonly shortlisted for serious scraping include Bright Data, Oxylabs, Smartproxy/Decodo, SOAX, IPRoyal, NetNut, and Rayobyte, alongside scraping-API platforms such as Zyte and ScraperAPI that bundle rotation, retries, and unblocking behind one endpoint. Treat any specific plan, pool size, or price as something to verify on the provider's own site the week you buy — this market moves, and vendors rebrand (several once-popular services from a decade ago no longer exist). Rather than trust a headline number, run your own trial (below).
How to rotate proxies in your code
Two patterns cover almost everything.
Pattern 1 — provider gateway (recommended). The service rotates for you; you send everything to one endpoint. In Python:
import requests
proxies = {
"http": "http://USER:PASS@gateway.provider.com:7000",
"https": "http://USER:PASS@gateway.provider.com:7000",
}
r = requests.get("https://example-directory.com/listing/123",
proxies=proxies, timeout=30)
Every request through that gateway can exit from a different IP — no rotation logic on your side. For a sticky session, most providers let you append a session token to the username (for example USER-session-abc123) to hold one IP.
Pattern 2 — rotate a list yourself. If you hold a raw list of proxies, cycle through them and retire ones that fail:
import itertools, requests
proxy_list = ["http://ip1:port", "http://ip2:port", "http://ip3:port"]
pool = itertools.cycle(proxy_list)
def fetch(url):
for _ in range(len(proxy_list)):
proxy = next(pool)
try:
return requests.get(url, proxies={"http": proxy, "https": proxy},
timeout=20)
except requests.RequestException:
continue # try the next proxy
raise RuntimeError("all proxies failed")
Frameworks build this in: Scrapy takes a proxy per request via request.meta['proxy'] (plus rotation middlewares), and Crawlee/Playwright and Puppeteer accept a ProxyConfiguration that assigns an IP per browser context. Whatever the tool, add retry-on-failure with rotation — when a request returns a block page, 403, or CAPTCHA, retire that IP and retry through a fresh one rather than giving up.
Testing a proxy service before you commit
The old way to compare providers was to run one scraping agent against a real directory through each service and record error rate, throughput, and unique records returned. That methodology still holds — just run it yourself on a free trial rather than trusting anyone's benchmark table:
- Pick one representative directory and a fixed target set (say, a few thousand listings).
- Run the identical scraper through each candidate service with the same concurrency (start modest — 20–50 concurrent connections is plenty; blasting 500 hammers the site and inflates errors).
- Record error/block rate, total time, and unique records successfully extracted for each.
- Divide cost by successful records to get true cost-per-record — the number that actually matters. A "cheap" pool with a high block rate is often the expensive one.
Watch for duplicates: directories return overlapping results across searches, so measure unique records, not raw requests. And test at your real scale — a pool that looks flawless over 500 requests can degrade over 500,000.
FAQ
Do I always need residential proxies? No. Many directories are beaten with datacenter proxies plus good headers and pacing, at a fraction of the cost. Escalate to residential or mobile only for the pages that actually get blocked.
Rotating or sticky sessions? Rotate per request for independent page fetches (most directory crawling). Use sticky sessions when several requests must share state — logins, cart flows, or cookie-bound pagination.
Will rotating proxies alone stop me getting blocked? No. They solve the "too many requests from one IP" signal only. You still need realistic headers, human-like timing, session handling, and sometimes CAPTCHA solving and a real browser.
Are rotating proxies legal? Using proxies is legal; what matters is what you scrape and how. Stick to public data, respect terms and rate limits, and review the legality of web scraping for your jurisdiction and use case.
How big a pool do I need? The rule of thumb: the more requests you plan and the more aggressive the target, the larger the pool, so that few requests ever reuse an IP. Millions-strong residential pools exist precisely for mass directory extraction.
Bottom line
Rotating proxies are the foundation of scraping business directories at scale — they distribute your traffic so no single IP looks abnormal. Choose the proxy type by how hard the target defends itself (datacenter first, residential and mobile as you escalate), lean on a provider's gateway for rotation instead of managing lists by hand, and validate any service with your own trial measuring cost-per-unique-record. Get the pool right and pair it with realistic headers and pacing, and even a heavily defended directory becomes a routine crawl.
If you would rather not run the proxy infrastructure yourself, scraping.pro delivers directory and marketplace data as a managed data-as-a-service feed, handling rotation, unblocking, and validation end to end.