Setting up rotating proxies means pointing your scraper at a single gateway endpoint that hands out a different exit IP on each request — instead of managing a list of IPs yourself. You set one host, port and credentials, and choose whether each request gets a new IP or a session sticks to one for a while. That is the whole configuration; the rest is knowing which mode to pick.
What "rotating" actually means
A static proxy sends every request through one IP. A rotating proxy puts a gateway in front of a large pool: you connect to the same endpoint every time, and the provider assigns the outbound IP — a fresh one per request by default, or a pinned one if you ask for a sticky session. The point is spreading requests across many IPs so no single address accumulates enough traffic to a target to trip a rate limit or ban. You never see or manage the pool; you manage the endpoint.
The two rotation modes, and when each fits
| Mode | Behavior | Use it for |
|---|---|---|
| Per-request (fully rotating) | New IP on every single request | Independent page fetches, wide crawls, SERP queries |
| Sticky session | Same IP held for N minutes or a session token | Multi-step flows: login, cart, pagination, checkout |
The mistake beginners make is fully rotating a flow that needs continuity — an IP change mid-session between adding to a cart and checking out looks exactly like fraud to the target. Match the mode to the task: stateless reads rotate per request; anything with steps that must appear to come from one user takes a sticky session.
Setting it up, step by step
- Get the endpoint and credentials. A rotating provider gives you a host, a port and a username/password. With ours the rotating gateway looks like
pr.quanticdata.io:7777with your key as credentials — one endpoint for the whole pool. - Choose the mode via the port or username. Providers signal sticky-vs-rotating either through different ports or through a token in the username (for example a session id suffix). Per-request rotation is usually the default port.
- Point your HTTP client at it. Every language sets a proxy in one line — examples below.
- Add country targeting if needed. Pass the country as a username parameter so exits come from the right geography — essential for localized content and SERPs.
- Test with an IP-echo service to confirm the IP changes (or holds, for sticky) as you expect before pointing at the real target.
Configuration in three languages
# curl — a fresh IP each call
curl -x http://USER:[email protected]:7777 https://ipinfo.io/ip
curl -x http://USER:[email protected]:7777 https://ipinfo.io/ip
# → two different IPs# Python (requests)
import requests
proxy = "http://USER:[email protected]:7777"
r = requests.get("https://ipinfo.io/ip",
proxies={"http": proxy, "https": proxy})
print(r.text) # new exit IP each run// Node (with an https proxy agent)
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent(
"http://USER:[email protected]:7777");
const res = await fetch("https://ipinfo.io/ip", { agent });That is the entire integration — no IP list, no health-checking dead proxies, no rotation logic in your code. If you already have a Python scraper, our rotating-proxies-in-Python guide shows the same setup inside requests, Scrapy and Selenium.
Sticky sessions: holding an IP on purpose
For multi-step flows you want the same exit across several requests. Providers expose this as a session token — add an identifier to the username and every request carrying it routes through the same IP until the session window expires (commonly up to 10–120 minutes). Change the token to get a new sticky IP. This is what lets you paginate through 20 pages of results, or complete a login-then-scrape flow, without the target seeing a location teleport between requests.
The settings that decide whether you get banned
Rotation alone is not stealth. Three things matter as much as the IP:
- Network type. Datacenter IPs are fast and cheap but easy to flag; residential IPs look like real home users and survive strict targets. Match the network to how defended the target is — do not pay for residential on a site that never blocks datacenter.
- Request rate. Rotating lets you send more total traffic, not infinite traffic per IP. Keep per-IP pacing human and add small delays; a thousand IPs hammering in one second still looks like an attack in aggregate.
- Fingerprint consistency. A rotating IP with a frozen, obvious bot User-Agent defeats the purpose. Rotate a realistic header and TLS profile alongside the IP.
Free rotating proxies: the honest warning
Free rotating proxy lists exist and are a trap for anything real: the IPs are shared by thousands, already blocklisted on the targets you care about, frequently dead, and — worst — a free proxy can read the traffic you route through it, which rules them out for anything authenticated. They are acceptable only for throwaway experiments. For production, a paid pool with real bandwidth accounting is cheaper than the failed requests and debugging time free lists cost you. Our rotating proxies start at $0.50/GB across residential, datacenter and mobile behind one endpoint, with sticky sessions to 120 minutes and bandwidth valid for the plan term; if you are only ever scraping, the same pool is built for exactly that. There is a free trial to validate the setup before committing.