Proxy Basics

Sticky vs Rotating Proxy Sessions: How to Choose

Sticky sessions keep the same IP for minutes or hours; rotating sessions change it every request. Learn when each is right, how session IDs work, and typical session lengths by use case.

By Team of Monkeys Editorial Updated 5 min read Affiliate disclosure

This guide contains affiliate links to Geonode, Webshare and Rayobyte. If you buy through them we may earn a commission, at no extra cost to you.

Sticky vs rotating proxy sessions illustration showing a session pinned to one sticky IP compared with an IP that rotates per request 3jdej38j4

The difference in one line

A rotating session gives you a new IP for every request. A sticky session keeps the same IP for a set period, or until you ask for a new one.

Both come from the same rotating proxy pool. The difference is how you tell the gateway to behave, usually with a session parameter.

How sticky sessions work

Most residential and mobile providers let you pin an IP by adding a session ID to your username:

text
customer-acme-country-us-session-a1b2c3
customer-acme-country-us-session-a1b2c3-sesstime-20
How rotating, sticky and static IPs differ, and which session type suits scraping, logins and checkouts. Video: Decodo (formerly Smartproxy) on YouTube

All connections that use the same session ID are routed through the same exit IP, for as long as the provider allows (often 1, 10 or 30 minutes; some offer hours) or until the exit device goes offline. To get a new IP, change the session ID.

Note the caveat. With residential proxies, the exit device is a real consumer device. If its owner closes their laptop, the session ends early and the gateway either errors or assigns a new IP. Good providers try to keep long sessions on more stable devices, but no residential sticky session is guaranteed. If you need an IP that never changes, use static residential (ISP) proxies.

A fresh IP every time it comes around (animated GIF) 3jdej38j4
A fresh IP every time it comes around. GIF via GIPHY

When to use rotating sessions

  • Scraping independent pages: product pages, search results, listings.
  • Checking prices or availability across many locations.
  • Any stateless request where you don't need cookies to persist.
  • Maximising the number of distinct IPs your traffic is spread across.

When to use sticky sessions

  • Logging into an account and performing actions.
  • Adding to cart and checking out.
  • Browser automation, where a page loads dozens of sub-resources that should come from the same IP. See Puppeteer proxies.
  • Passing a bot-protection challenge and then reusing the clearance cookie.
  • Paginating through search results that are tied to a session.
  • Any multi-step form.

Proxy tip: If you want to try these ideas on a real network, Geonode sells pay-as-you-go residential bandwidth that doesn't expire, so a small balance is enough to experiment with rotation, sticky sessions and geo-targeting. See our Geonode proxies guide for how its products fit together.

TaskSession typeTypical length
Stateless page scrapingRotatingPer request
Search paginationSticky1 to 5 minutes
Browser scraping sessionSticky5 to 15 minutes
Account login and actionsSticky or static10 to 30+ minutes, ideally static
Sneaker checkoutSticky or ISPFull checkout duration
Social media account managementStatic (ISP/mobile)Permanent

Common mistakes

  • Rotating during login. The site sees a login from Texas and the next request from Ohio. Account flagged.
  • Sharing a session ID across parallel workers. Many concurrent connections on one residential IP looks unnatural and may overwhelm the device.
  • Sessions that are too long. If an IP gets blocked, a long session keeps you on a bad IP. Detect blocks and switch session IDs.
  • Assuming sticky equals static. It isn't. Plan for session drops with retry logic.

Handling session failures

Build your code to detect a broken or blocked session and create a new one:

python
import uuid, requests

def new_proxy():
    sid = uuid.uuid4().hex[:8]
    url = f"http://customer-acme-country-us-session-{sid}:PASS@gate.example.com:7777"
    return {"http": url, "https": url}

proxies = new_proxy()
for url in urls:
    r = requests.get(url, proxies=proxies, timeout=30)
    if r.status_code in (403, 429) or "captcha" in r.text.lower():
        proxies = new_proxy()  # rotate to a fresh IP

For more patterns, read proxy rotation strategies.

Worked examples

Example 1: Scraping 10,000 product pages

Each product page is independent. Use rotating sessions, one new IP per request. Disable keep-alive or use a new session ID per request so connection reuse doesn't keep you on one exit. Retry failures with a new IP.

Example 2: Paginating search results

Page 2 of a search may depend on cookies set on page 1. Use a sticky session per search query, 2 to 5 minutes long, and rotate between queries.

Example 3: Logging into an account and downloading reports

Use a static IP (ISP proxy) or the longest sticky session available. A login from one IP followed by downloads from another looks like session hijacking. See static residential proxies.

Example 4: Passing a bot challenge, then scraping

The site sets a clearance cookie after a JavaScript challenge, tied to the IP. Use a sticky session for as long as the cookie stays valid, scraping as many pages as the site tolerates per session, then rotate.

Budget tip: If you want a cheap proxy to try this with, Webshare has a free plan with 10 datacenter proxies and 1 GB of bandwidth a month, no card required. Paid lists let you pick proxy count, bandwidth and location. See Webshare rotating residential proxies.

Session parameter syntax varies

Providers use different names and formats. Examples of the same idea:

Provider styleSticky session username
Hyphen parameterscustomer-USER-country-us-session-abc123
Underscore parametersUSER_country-us_session-abc123
Separate session time...-session-abc123-sesstime-30
Port-basedPort 10001 = sticky slot 1

Read your provider's docs and use their generator to avoid typos. See proxy authentication methods.

Monitoring session health

Log the exit IP at the start of each sticky session and periodically during it. If the IP changes unexpectedly, the device went offline and the provider reassigned your session. Frequent changes mean you should shorten sessions, change targeting, or switch to ISP proxies for that workload.

Residential tip: Rayobyte is worth testing when you need precise targeting: its residential proxies can be pinned to a country, state, city, ZIP code or ASN, with sticky sessions from 1 to 120 minutes. More in Rayobyte sticky sessions.

Choosing good session IDs

The session ID is a small detail that causes a surprising number of problems. A few rules keep it boring:

  • Make IDs random and unique per task. Something like uuid4().hex[:8] works. Sequential IDs (1, 2, 3) collide across scripts and teammates sharing an account, and a collision puts two unrelated jobs on one IP.
  • Add a short readable prefix. shopa7f3k2q tells you in logs which job owned the session. Keep the prefix short; some gateways limit username length.
  • Respect the provider's character set. Many gateways accept only letters and digits in the ID. Hyphens and underscores are often parameter separators in the username itself, so keep them out unless the docs allow them.
  • Never put personal data in an ID. It travels in the username and lands in the provider's logs and yours.
  • Don't deliberately reuse old IDs. Some gateways remember a recent session-to-IP mapping, so yesterday's ID might hand you an IP your job already burned.
  • Map accounts to sessions on purpose. For account work, store which account uses which session or static IP in a register, so the same account always returns to the same exit. See social media management proxies.

Session IDs are also the cleanest way to give each worker its own exit when you scale out. Puppeteer rotating proxies shows the browser version of this pattern, and antidetect browser proxies covers pairing sessions with browser profiles.

Session controls differ a lot between providers, from fixed 10 minute sessions to custom lengths. Check them against your workload when you compare providers in our best proxies in 2026 guide.

Comparing two popular self-serve providers? Webshare vs Geonode Sticky Sessions breaks down which fits this job and when it makes sense to use both.

If you're weighing Rayobyte as well, Rayobyte Sticky Sessions explains which of its products fits, and Rayobyte vs Geonode vs Webshare Sticky Sessions Compared puts it side by side with Geonode and Webshare.

FAQ

What's the maximum sticky session length?

It varies by provider. Thirty minutes is common; some offer several hours. Always check, and remember that residential devices can drop sooner.

Do sticky sessions cost more?

Usually not. Traffic is billed the same per GB. Some providers charge more for very long sessions or premium stable IPs.

Can I get the same IP back after a session ends?

Sometimes, if you reuse the session ID within a window, but don't rely on it. Use ISP proxies when you need a fixed IP.

Sources and further reading

Independent references that back up the points above, from standards bodies, governments, universities and non-profits. They open in a new tab.

Affiliate disclosure: Team of Monkeys is an affiliate of Geonode, Webshare and Rayobyte. Links and banners marked as sponsored, and links to Geonode, Webshare and Rayobyte in the text, use our referral links, and we may earn a commission if you buy through them, at no extra cost to you. Our explanations and comparisons are written to be useful whichever provider you choose.

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.