Products
Datacenter proxies from $19/mo Rotating proxies from $49/mo ISP proxies from $33/mo Dedicated proxies from $3.50/mo UDP proxies from $5/mo Free trial
Use cases
Data & scraping AI services Social media & messaging E-commerce & finance Media & entertainment Marketing & ads Automation & tools All use cases →
Pricing
Full pricing table All 20 locations Money-back guarantee
Resources
Blog Proxy API MCP server Setup guides FAQ For business About us Affiliate program
English
English Русский
99.9% uptime · 100,000+ IPs available

Proxies for Scrapy

Rotating 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.

  • Unlimited bandwidth—no usage-based billing
  • One of the highest connection limits in the industry
  • Whitelist up to five source IPs at no charge
  • Up to three free proxy list refreshes per month
Start free trial Trial: 20 IPs for 60 minutes, no card required.
Access a shared multi-country pool; the exit IP rotates on every request. What are API requests?
Total for 30 days $0.00
Buy proxies
✓ 24-hour money-back guarantee — details · ✓ No KYC required

How to set up rotating proxies in Scrapy

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.

Product specs at a glance
IP pool100,000+ IPv4
ProtocolsHTTP, HTTPS, SOCKS4, and SOCKS5
Bandwidthunlimited
Uptime99.9%
IP whitelistingup to five source IPs included
Username/passwordoptional, in addition to IP whitelisting
List refreshesup to three free refreshes per month
Minimum order100 IPs; 1 IP for dedicated proxies
Deliveryautomatically after payment
Refund24-hour money-back guarantee
Payment methods
StripeStripe VisaVisa MastercardMastercard American ExpressAmex USDT TRC20 and ERC20USDT USDCUSDC BitcoinBitcoin EthereumEthereum LitecoinLitecoin

Which proxies should you choose?

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

Connect in 60 seconds

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);
Fill in the credentials from your Dashboard. If you use IP whitelisting, you don't need a username or password.

Export in any format

Choose a standard format or create a custom one with any field order and delimiter your software requires.

IP:port login:password@IP:port {scheme}{ip}{port}{login}{password} — builder
HTTP HTTPS SOCKS4 SOCKS5 HTTP/2 ✓

See the FAQ for the ports used by each protocol.

PapaProxy API

You can automate purchases, renewals, whitelist changes, and proxy list exports. Create an API key in your Dashboard in a couple of clicks.

MCP server for AI agents

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.

Works with
…and 500+ more tools

Per-IP prices shown are for the largest package size. Get an exact quote in the calculator above.

Free proxy list for Scrapy tests

Updated 2 days ago · New proxies added hourly · 24,120 proxies currently listed

These are not PapaProxy.net trial proxies. They are public proxies collected from open sources and are intended only for testing your software. You can also try PapaProxy.net proxies free with a 20-IP, 60-minute trial. No credit card is required.
IPCountryPortProtocol
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
IP:port format—one proxy per line

Reviews

A few service metrics—and feedback from our customers.

27,000+
proxy packages sold since 2019
60%
of customers upgrade their plan after the first month
100,000+ IPs
in our own pool across 22 locations

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!

FD Felix Drechsler July 2025

Like the service! Responsive and fast support, affordable prices, convenient renewal panel and network selection. Just what I need!

KV Kornev Vitalii February 2026

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!

RC Ryan Cooper March 2026

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.

E Elliot May 2025

Frequently asked questions

Can't find your answer? Message us in live chat — real humans reply.

I set request.meta["proxy"] but the requests still go out from my own IP. Why?

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.

scrapy-rotating-proxies marks all my proxies as dead. Are they actually down?

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.

Does Scrapy support SOCKS5 proxies?

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.

How should I set Scrapy concurrency when running through a proxy pool?

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.

Rotating plan or a static package — which is cheaper for my crawl?

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.

Other PapaProxy.net products

A different proxy type may be a better fit for your use case. All products use the same Dashboard and support team.

Put our proxies to the test

Test our datacenter proxy packages free with 20 IPs for 60 minutes—no credit card required. See the speed and reliability for yourself.

Get a free trial

Buying as a company?

We can sign a contract and provide all the documents your accounting team needs. Most business orders are activated within 24 hours of your request.

Contract, invoices, and receipts Bank transfers and net payment terms Dedicated account manager Business orders from $100
Business terms or contact us on Telegram: @papaproxy