Blog/Search & RAG
12 min read

Do You Still Need a Rotating Proxy in 2026?

A rotating proxy is an input you buy by the gigabyte and hope works. Most teams wanted the outcome instead. Here is how to tell which one you need.

Do You Still Need a Rotating Proxy in 2026?

Copy this line to your agent to read a defended page without owning any proxies.

set up https://monid.ai/SKILL.md and use context.dev /web/scrape/markdown to read a page into markdown

A rotating proxy is an input. You buy gigabytes of it, point your scraper through it, and hope the requests land. What you actually wanted was a rendered page, and the distance between those two things is where the proxy bill goes. This guide explains what rotating proxies are and how they work, then makes the case that most teams buying one are buying a component when the outcome is available directly through Monid, the OpenRouter for agent tools.

What is a rotating proxy?

A rotating proxy is a service that sends each of your requests out from a different IP address, drawn from a pool the provider maintains. You connect to one endpoint, the provider handles the selection, and the site you are calling sees a different origin each time rather than a stream from one machine.

Residential, datacentre and mobile, and why the labels cost different amounts

The pool has to come from somewhere, and where it comes from is the entire pricing story. Datacentre addresses belong to hosting providers, are cheap and plentiful, and are the easiest kind for a site to identify as automated traffic. Residential addresses belong to consumer internet connections, look like ordinary people because they are ordinary people's connections, and cost far more. Mobile addresses come from carrier networks, are the most expensive, and are also the hardest to block because carriers share one address across many subscribers.

That ordering is why "residential proxy" carries eight times the search volume of "rotating proxy" in the United States: the rotation is the mechanism, and the address type is what people are actually shopping for.

Why the pricing model matters more than the pool

Residential and mobile pools are almost always sold by bandwidth, which is a strange unit for the job. You are billed for the bytes that cross the connection whether or not the page you wanted came back, so a blocked request, a challenge page and a successful fetch all cost you something, and only one of them is worth anything. Datacentre pools are usually sold per IP or per month, which is easier to reason about and buys you a resource that is worse at the task.

Neither model prices what you care about, which is pages retrieved.

Residential pools are assembled from real people's connections, generally through software those people installed for some other reason with the proxy participation somewhere in the terms. The reputable providers audit this and publish how they source it, and it is worth reading before you buy rather than after. If your own product is going to be judged on data provenance, the provenance of the pipe counts too.

AspectDatacentreResidentialMobile
Address belongs toA hosting providerA consumer connectionA carrier network
Typical billingPer IP or per monthPer gigabytePer gigabyte, higher
Easy to identifyYesNoRarely
Cost per successful pageLow, when it worksHighHighest
You pay for failuresYesYesYes

The bottom row is the pattern: every one of these is priced on the attempt and none of them on the result.

📖 See also Your Scraper Is Blocked: What Actually Gets Through in 2026

How does a rotating proxy work?

It works as a gateway. You send your request to one host and port with your credentials attached, the provider picks an exit address from its pool, forwards your request from there, and returns the response back down the same connection. Your code changes by one line, which is most of the appeal.

What the provider decides on your behalf

Which address to use, how long to keep it, and what to do when the target refuses. Those three decisions are the product, and they are usually opaque: you set a session parameter and a country, and the rest is the provider's policy. When a job works this is invisible, and when it does not you have very little to debug with, because the layer that made the decision is not yours.

What a rotation cannot fix

Rotation changes where a request appears to come from. It does not change what the request looks like. Modern bot detection reads the shape of the connection and the browser fingerprint alongside the address, so an obviously automated client from a perfect residential IP is still an obviously automated client. This is why teams add a proxy, see no improvement, and conclude they need a more expensive pool, when the address was never the failing part.

It also does nothing about rendering. If the content arrives through JavaScript after the page loads, a proxied requests call returns the same empty shell it returned before, from a nicer address.

Where that leaves the rotation

As one component of three: an acceptable address, a client that looks like a browser, and a renderer. Buying one of the three and expecting the outcome is the mistake, and it is a natural one to make because only one of the three has an obvious marketplace.

📖 See also The Real Cost of Scraping YouTube Yourself

Rotating proxy vs sticky session: which do you want?

Sticky, more often than people assume. A rotating configuration gives you a new address per request, and a sticky one keeps the same address for a set window, usually a few minutes. The choice is decided by whether your target needs to recognise you across requests.

Rotate when every request is independent: a list of unrelated URLs, a wide crawl, a batch of lookups where nothing carries over. Rotation spreads the load and no request cares what the previous one did.

Stick when there is a session. Anything with a login, a cart, pagination that depends on a cursor, or a multi-step form will break if the address changes underneath it, and the failure is confusing because it looks like the site logged you out at random. A static residential address, held for the length of the job, is the version of this you buy when the session lasts hours rather than minutes.

The rule that resolves it: rotation is for breadth, stickiness is for depth. If your job has state, you do not want the address changing, and if it does not, you do not want to pay for the address to persist.

How do you rotate proxies in Python?

You point your HTTP client at the gateway and let the provider do it. In requests that is a proxies dictionary; in Selenium or Playwright it is a launch argument. The mechanics are five lines and every provider documents them, so the interesting question is not how, it is what you inherit once you have.

What you inherit

A credential to rotate, a bandwidth budget to watch, a failure mode that is invisible from your side, a retry policy you now have to write, and a bill that grows with attempts rather than results. None of that is hard individually. Collectively it is a system, and it is a system that exists to deliver page text.

The version where the fetch is the endpoint

What it does. Returns the page, with the address selection, the browser and the retry policy on the provider's side of the call.

The endpoints. context.dev/web/scrape/markdown, context.dev/web/scrape/html, octen/extract for batches.

The call.

monid inspect -p context.dev -e /web/scrape/markdown

monid run -p context.dev -e /web/scrape/markdown \
  --query '{"url":"https://example.com","useMainContentOnly":true}' -w

What comes back. success, markdown, contentLength, url, and a metadata object carrying sourceUrl, finalUrl, title and language. Verified against a live run on 21 August 2026.

What it costs. A fraction of a cent per page, billed per call, with current figures on monid.ai/tools. The line that matters is in the endpoint's own pricing note, verified the same day: JavaScript rendering, anti-bot bypass and premium proxies are included, and failed or blocked requests are not billed. octen/extract says the same thing in its own terms, returning failed URLs with a failed status and not charging for them.

Why the billing unit is the whole argument

Because it moves the risk. Bandwidth pricing charges you for attempts, so every block is a small payment for nothing and the incentive to keep the pool working sits with you. Per-page pricing that excludes failures charges you for results, so the incentive sits with the provider. That is the same reason a fixed-price quote feels different from an hourly rate, and it is a bigger practical difference than any pool quality claim on either side.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

📖 See also Web Scraping in Python Without Maintaining a Scraper

Which endpoint should I use for which job?

JobEndpointInputOutputBilling
One defended page to markdowncontext.dev/web/scrape/markdownurl, useMainContentOnly, waitForMs, countrymarkdown plus page metadataper call, failures unbilled
Rendered HTML for your parsercontext.dev/web/scrape/htmlurl, render optionsfully rendered HTMLper call
Twenty URLs in one requestocten/extracturls, optional querymarkdown or text per URLper result, failures unbilled
Ten URLs, freetinyfish/fetchurls, purpose, formattext, title, language, latencyfree
A job that needs a real sessionx402.browserbase.com/browser/session/createnonesessionId, connectUrl, liveUrl, paidMinutesper call
Search rather than fetchcontext.dev/web/searchquery, numResults, freshnessranked results, optional markdownper result

Every row verified with monid inspect on 21 August 2026. The table gives the billing shape rather than a figure, because the shape is the argument and a number goes stale silently.

When do you actually need to own the proxies?

When the address itself is the requirement rather than a means to a page. Geolocation testing is the clearest case: if your job is to see what a site serves in twelve countries, you need to control the exit point, and no page-fetch endpoint will give you that granularity. Ad verification and localisation QA are the same shape.

You need your own pool when the protocol is not HTTP. Fetch endpoints return web pages. If you are speaking to a socket service, a mail server or a game protocol, buy proxies, because nothing in this guide applies to you.

And you need one at sustained volume against a single target where you have negotiated a rate. If a proxy provider will sell you a committed plan that undercuts per-page pricing for the traffic you actually run, take it, and run the fetch layer. That is Bright Data's genuine strength: at the top end their pool is deeper than anything you get bundled, their country and city targeting is real, and if you have the engineering to operate it, you will beat a per-page price. The honest position is that most teams asking this question are nowhere near that volume and are buying the operating cost along with the pool.

Conclusion

Do you still need a rotating proxy in 2026? Only if you need an address. If you need a page, you have been buying a component of the answer and assembling the rest yourself, and the assembly is where the cost and the maintenance live.

The thing worth carrying away is the billing unit. Bandwidth pricing charges you for attempts and puts the risk of a block on you; per-page pricing that excludes failures puts it on the provider. That difference survives every argument about pool quality, and it is the one to check first when you compare two offers.

Free next step: run monid discover -q "scrape any website url to markdown" and monid inspect the top result. Both are free, and the pricing note will tell you exactly what is bundled before you spend anything. Start at monid.ai.

FAQ

How do you get a free rotating proxy?

Public free proxy lists exist and they are a bad idea for anything you care about, because you cannot know who operates the exit node your traffic passes through. Free tiers from real providers are the safer version and are sized for testing. If what you want is free page fetching rather than free addresses, tinyfish/fetch handles batches of up to ten URLs at no cost, which covers a lot of evaluation work without any proxy at all.

What is the difference between a rotating and a static residential proxy?

A rotating residential proxy gives you a different consumer IP per request; a static one gives you the same consumer IP for as long as you hold it. Rotating is for breadth across many independent requests, static is for jobs with a session that must not change identity mid way. Static residential addresses usually cost more per unit and are sold per IP rather than purely by bandwidth, which makes them easier to budget.

Is there a rotating proxy with pay as you go pricing?

Several providers sell prepaid bandwidth with no monthly commitment, and that is the closest thing the proxy category has to pay as you go. It is still pay per gigabyte, which means you pay for blocked attempts. Pay per successful page is a different pricing shape and it comes from fetch endpoints rather than proxy sellers. There is a fuller treatment of why the unit matters in the pay-per-call guide.

Do I need a proxy to scrape with Selenium?

Not usually, and reaching for one first is a common misdiagnosis. Selenium already solves the rendering problem, so if pages are still failing, check whether the response is a block or an empty render before you buy addresses. When you do need both a browser and an address you did not have to source, a hosted session such as x402.browserbase.com/browser/session/create gives you a connectUrl to attach Playwright to and keeps both concerns off your machine.

Last updated August 2026.

rotating proxyresidential proxyweb scrapingai agentsinfrastructure