Guide · Proxy basics
Rotating vs sticky proxy sessions: when to use each
A rotating proxy gives you a new exit IP on each new connection; a sticky session holds one exit IP for a period you choose. Use rotation for independent requests — one page, one fetch, no state — and a sticky session for anything that spans several requests sharing cookies or a token, such as a search flow, pagination or a checkout. On our gateway the switch is in the username: add _session-<id>_sesstime-<minutes> to hold an IP, leave it out to rotate.
Reviewed 30 Oct 2026
The short answer
- Rotation is per connection, not per request. A client that keeps a connection alive sends several requests through the same exit.
- Sticky sessions exist because HTTP state lives in cookies, and many sites expect the cookies and the address to stay together across a flow.
- One session handle per logical task. A new handle means a new IP; reusing a handle returns the same IP while it holds.
- On ARC Basic, Fast and Ultra the hold is best effort — the dashboard offers 1 minute to 24 hours — and an exit can drop early. ARC Mobile sessions run 5 to 60 minutes.
- Design for a changed IP: detect it and restart the flow, rather than treating it as a fatal error.
What rotation and stickiness actually do
A rotating proxy draws an exit from the pool each time your client opens a connection to the gateway. If your HTTP library reuses the connection (keep-alive, HTTP/2 multiplexing), the next request goes out through the same exit. If you want a fresh IP per request, open a new connection per request; if you want a stable one, ask for it explicitly.
A sticky session binds a handle you choose to one exit. Every connection that presents the same handle is routed through the same IP until the session time runs out or the exit goes offline.
Which one to use for which job
| Job | Use | Why |
|---|---|---|
| Independent page fetches (catalogue crawl, price checks) | Rotating | No state between requests; spreads load across exits |
| Search → results → detail | Sticky, ~5–10 min | Cookies and tokens must travel with one IP |
| Paginated listings | Sticky for the run of pages | Some sites bind pagination cursors to the session |
| Headless browser task or AI agent | Sticky for the task | A browser accumulates cookies and storage across many requests |
| Same address every day for allowlisting | Neither — a static IP | Pool exits are borrowed; see static ISP proxies |
How sticky sessions work on our gateway
Targeting on ARC Basic, ARC Fast and ARC Ultra is entirely in the username. A rotating German exit is USERNAME_pool-arcfast_country-de. Add a session handle and a duration and it becomes sticky: USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10 holds one IP for ten minutes.
_session-takes any handle you choose. The same handle later returns the same exit while the session holds; a new handle draws a new one._sesstime-is minutes. The dashboard generator offers 1 minute to 24 hours; the API'ssession_ttltakes 60 to 86,400 seconds. The hold is best effort upstream, with no hard cap.- Country and city are part of the string, so a session is tied to its market. Use a different handle per market.
- ARC Mobile endpoints are generated in the dashboard rather than composed by hand, and their sessions are clamped to 5–60 minutes.
Whatever the duration, an exit can go offline before the time is up. Treat a changed IP as a normal event: detect it, discard the half-finished flow and start it again on a new handle.
Choosing a session length
- Size it to the task, plus a margin: a fare search flow needs minutes, not hours.
- Long sessions concentrate traffic on one exit. If a task can be split into independent flows, give each its own handle.
- For browsers and agents, one session per task — not one per browser process — keeps cookies and IP aligned. See Playwright for wiring a proxy per context.
- Do not try to keep a pool exit for days. If you need the same address indefinitely, that is a static ISP proxy, not a long sticky session.
Code
Worked example
import secretsimport requestsGATEWAY = "proxy.arcproxies.io:8000"PASSWORD = "PASSWORD"def session_proxies(country: str, minutes: int = 10): handle = secrets.token_hex(4) # e.g. k3f9a1x2-style handle user = f"USERNAME_pool-arcfast_country-{country}_session-{handle}_sesstime-{minutes}" url = f"http://{user}:{PASSWORD}@{GATEWAY}" return {"http": url, "https": url}def exit_ip(s: requests.Session) -> str: return s.get("https://api.ipify.org", timeout=15).textdef run_task(country: str): with requests.Session() as s: s.proxies = session_proxies(country) ip = exit_ip(s) for step in ("https://example.com/search?q=x", "https://example.com/results"): s.get(step, timeout=30) if exit_ip(s) != ip: # exit dropped mid-flow raise RuntimeError("exit changed — restart the task on a new handle")# Rotating: no _session- token; a new connection may draw a new exit.rotating = "http://USERNAME_pool-arcfast_country-de:PASSWORD@proxy.arcproxies.io:8000"# Sticky: the same handle returns the same exit while it holds.sticky = "http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000"FAQ
Questions
Something not covered? Write to contact@arcproxies.io.
What is the difference between rotating and sticky proxies?
A rotating proxy gives you a new exit IP on each new connection. A sticky session holds one exit IP for a duration you choose, so several requests in one task come from the same address. Rotation suits independent fetches; sticky sessions suit multi-step flows.
Does a rotating proxy change IP on every request?
It changes on every new connection. If your HTTP client keeps the connection alive or multiplexes requests over HTTP/2, consecutive requests can share one exit. Open a new connection per request if you need a fresh IP each time.
How long can a sticky session last?
On ARC Basic, Fast and Ultra you set the minutes in _sesstime-; the dashboard offers 1 minute to 24 hours and the API accepts 60 to 86,400 seconds. The hold is best effort and an exit can drop early. ARC Mobile sessions run 5 to 60 minutes.
When should I use a sticky session?
Whenever several requests must share state: a search followed by results and a detail page, paginated listings, a logged-out checkout preview, or a headless browser or AI agent task. HTTP state lives in cookies, and many sites expect cookies and address to stay together.
What happens if a sticky IP goes offline?
The session moves to a different exit. Build for it: check the exit IP during the flow, and if it changes, discard the partial result and restart the task on a new session handle.
How do I get a new IP in a sticky setup?
Use a new session handle. Each distinct value after _session- draws its own exit; reusing a handle returns the same exit while the session holds.
Sources & review
Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.
Next
Where to go from here
Guides