20 IPs for 60 minutes on the country-mix package. No card required.
Start free trialRotating proxies for Scrapy and static packages that plug into your middleware: whitelist auth with no credentials in settings.py, unlimited bandwidth on packages, from $19/mo.
Scrapy routes every request through its downloader middleware chain, so rotation is a middleware decision — and there are two ways to make it. Path one: buy a static package, export the list, and let a rotation middleware walk through it. The maintainer-built scrapy-rotating-proxies package does this well — it picks an address per request, detects bans, and quarantines dead entries so your spider doesn't keep feeding requests to a throttled IP. The whole setup is a few lines in settings.py:
# settings.py
DOWNLOADER_MIDDLEWARES = {
"rotating_proxies.middlewares.RotatingProxyMiddleware": 610,
"rotating_proxies.middlewares.BanDetectionMiddleware": 620,
}
ROTATING_PROXY_LIST_PATH = "proxies.txt" # your exported list, one address per line
Path two skips list management entirely: point request.meta["proxy"] (or the http_proxy environment variable) at the gateway hostname of a rotating plan, and the exit IP changes on every request on our side — no rotation middleware, no ban bookkeeping, one line of config. The trade-off is the billing model: rotating plans meter by request, packages by IP with unlimited bandwidth. Scrapy is unusually well suited to per-request billing — it fetches the URLs you schedule and nothing else, so a million scheduled requests is a million credits, not the unpredictable multiple a full browser generates loading subresources.
Authentication is where Scrapy setups usually leak: credentials embedded in http://login:password@IP:port strings end up committed in settings.py and printed in crawl logs. With IP whitelisting you skip the credential part of the URL entirely — add your server's IP in the Dashboard (up to 5 source IPs, free) and both paths above work with bare IP:port entries. Which product fits which crawl is covered in the comparison below; the broader blocking mechanics — rate scoring, fingerprints, soft blocks — live on the web scraping proxies page. For working code — meta['proxy'], environment variables, and a rotation middleware — see the Scrapy proxy setup guide.
Four infrastructure types — and the use cases each one fits best.
| Packagesdatacenter IPv4 | Our pick for Scrapy Rotating |
ISP | IPv6 | |
|---|---|---|---|---|
| IP source | Datacenter, IPv4 | Datacenterthe same 100,000+ IP pool | Consumer ISP networks | Datacenter |
| IP allocation | Static list | Full pool accessthe exit IP rotates on every request | Static list | Static list |
| List refreshes | Up to 3 per month, free | Not applicable | Up to 3 per month, free | Provider-dependent |
| Pricing model | Per-IP packageunlimited bandwidth | Credit-basedyou pay per request, not per IP | Per-IP packageunlimited bandwidth | Per-IP package |
| Website compatibility | ✓ ~100% | ✓ ~100% | ✓ ~100% | ✕ Limitedmany websites don't support IPv6 |
| Speed | Up to 500 Mbps | Up to 300 Mbps | Up to 500 Mbps | Datacenter-grade |
| Anti-fraud trust | Medium | MediumIP rotation helps | High | Low to medium |
| Price | $from $0.07 per IP/month | $$$from $49.00/month | $$from $0.22 per IP/month | $typically the lowest-cost option |
| Best for | Web scraping and automation at a predictable volume: your own IPs, unlimited bandwidth | API scraping that needs as many different IPs as possible without buying a fixed list | Social media, accounts, long sessions — wherever IP trust matters | Use cases where the target site is guaranteed to support IPv6 |
| Buy now | Rotating proxies | ISP proxies | We don't sell these: too many limitations for general-purpose work |
A Scrapy proxy middleware setup needs a list it can read — we export your proxy list for Scrapy in Python-friendly form: plain text, one address per line, any field order and delimiter, ready for ROTATING_PROXY_LIST_PATH. Copy the example for your stack, or paste it into your AI coding assistant to adapt.
# HTTP or HTTPS proxy curl -x http://login:password@IP:port https://example.com # SOCKS5 curl --socks5-hostname IP:port \ --proxy-user login:password \ https://example.com
import requests proxy = "http://login:password@IP:port" # your proxy from the Dashboard r = requests.get( "https://example.com", proxies={"http": proxy, "https": proxy}, ) print(r.status_code)
import { ProxyAgent } from "undici"; const dispatcher = new ProxyAgent("http://login:password@IP:port"); const res = await fetch("https://example.com", { dispatcher }); console.log(res.status);
$ch = curl_init("https://example.com"); curl_setopt($ch, CURLOPT_PROXY, "IP:port"); curl_setopt($ch, CURLOPT_PROXYUSERPWD, "login:password"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch);
Choose a standard format or create a custom one with any field order and delimiter your software requires.
See the FAQ for the ports used by each protocol.
You can automate purchases, renewals, whitelist changes, and proxy list exports. Create an API key in your Dashboard in a couple of clicks.
Claude, Cursor, and other agents buy proxies, renew plans, and export updated proxy lists through an access token you create in your Dashboard. See how it works.
Per-IP prices shown are for the largest package size. Get an exact quote in the calculator above.
| IP | Country | Port | Protocol | |
|---|---|---|---|---|
| 212.183.88.215 | AT | 80 | HTTP | |
| 47.243.92.199 | HK | 3128 | HTTP | |
| 212.183.88.153 | AT | 80 | HTTP | |
| 212.183.88.13 | AT | 80 | HTTP | |
| 203.95.199.159 | KH | 8080 | HTTP | |
| 154.92.9.3 | JP | 80 | HTTP | |
| 113.204.79.230 | CN | 9091 | HTTP | |
| 181.214.1.97 | AE | 80 | HTTP | |
| 219.93.101.63 | MY | 80 | HTTP | |
| 185.18.250.64 | CH | 80 | HTTP |
A few service metrics—and feedback from our customers.
I use proxies for online games. I have been using the service for many months and I am satisfied with the quality and efficiency. Proxies work as they should and there are practically no disconnects. I recommend it, you will not regret it!
Like the service! Responsive and fast support, affordable prices, convenient renewal panel and network selection. Just what I need!
I used the service for social networking. At first I bought it for a month, but now I will definitely renew it because the quality is really good! I am very glad that I finally found a really cool service!
Proxies do not fail, and at this price it is a great gift. I buy them when I need them, usually once every few months. There have been a few minor glitches but the support here is above all praise. Responsive, kind, understanding and fast. All issues were resolved promptly. It is very nice to work with true professionals.
Can't find your answer? Message us in live chat — real humans reply.
Check three things in order. First, the value must be a full URL — http://IP:port, not bare IP:port; Scrapy's HttpProxyMiddleware silently does nothing with a string it can't parse as a scheme. Second, make sure that middleware is actually running: if a custom entry in DOWNLOADER_MIDDLEWARES set scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware to None (a common copy-paste from rotation tutorials), nothing reads the meta key anymore. Third, if you're using scrapy-rotating-proxies, remember it deliberately skips requests that already have proxy in meta — that's a feature for exempting individual requests, but it surprises people who expect the middleware to override their manual value.
Usually not — BanDetectionMiddleware counts any non-200 outcome as a ban by default, so a target that answers probing with 403s or CAPTCHAs will get every address in your list quarantined within minutes, even though the proxies themselves are fine. Verify independently: curl -x http://IP:port https://example.com against a neutral site. If that returns cleanly, the target is blocking your pattern, not your addresses — slow the spider down (CONCURRENT_REQUESTS_PER_DOMAIN, AUTOTHROTTLE_ENABLED) or write a custom ban policy so soft responses from that site don't poison the whole pool. Genuinely dead addresses in a package are the rare case; when one stops answering from two different networks, we replace it — open a ticket.
Not natively — Scrapy's downloader is built on Twisted's HTTP client, and HttpProxyMiddleware speaks HTTP proxying only. Community workarounds exist (a local converter like Privoxy in front of the SOCKS address, or third-party download handlers), but they add a moving part to debug for no gain in a typical crawl. The practical answer: use the HTTP port. Every address we issue answers on HTTP, HTTPS, SOCKS4, and SOCKS5 simultaneously, so the same list serves your Scrapy project over HTTP and a SOCKS-native tool without buying anything twice.
Size it from the pool, not from your hardware. Scrapy defaults to 16 concurrent requests and 8 per domain — with a 100-address list that's harmless, but people raising CONCURRENT_REQUESTS to 500 against the same 100 addresses concentrate five simultaneous connections on each IP, and per-IP rate limits fire long before the crawl saturates bandwidth. A working starting point: keep total concurrency at or below your address count, cap CONCURRENT_REQUESTS_PER_DOMAIN at a single-digit number, and let AUTOTHROTTLE_ENABLED = True adapt from response times. On a rotating plan the calculus flips — the pool behind the gateway absorbs concurrency for you, and your ceiling is the plan's concurrent-connection allowance rather than a per-IP budget.
Either one works as your Scrapy proxy pool — the difference is who runs the rotation: with a package your middleware distributes requests across the exported list, with a rotating plan the switching happens behind our gateway. So count your monthly requests and do both sums — the crossover is lower than most people guess. Rotating plans start at $49/mo for 2.5 million requests — a spider fetching 80,000 pages a day lands almost exactly at that allowance. A $19/mo package with unlimited bandwidth handles the same volume for less — if your targets tolerate a fixed set of addresses between list refreshes. Rotating earns its premium when targets burn static IPs faster than three refreshes per 30 days can replace them, or when maximum IP diversity is the point. Steady, tolerant targets — package; hostile or diversity-hungry ones — rotating.
A different proxy type may be a better fit for your use case. All products use the same Dashboard and support team.
An IP reserved exclusively for you, available from a single IP. Speeds of up to 500 Mbps per proxy.
Learn moreStatic ISP-registered residential IPs for use cases where network origin matters.
Learn morePay per request and access the full 100,000+ IP pool through a single gateway. Built for web scraping and API workloads.
Learn moreSOCKS5 with UDP support — for gaming, streaming, and VoIP.
Learn moreWe can sign a contract and provide all the documents your accounting team needs. Most business orders are activated within 24 hours of your request.