Proxies for Scrapy

One proxy URL in your downloader middleware, with rotating datacenter or residential exits behind it.

From $7.47 a month for 3 GB

That is $2.49/GB at 3 GB, and the rate falls as the volume rises.

For targets that refuse or challenge datacenter ranges

  • Rotating Datacenter from $5.90 a month for 10 GB.Cheaper, and enough where the target accepts hosting ranges
  • Any Scrapy spider takes the proxy URL, and a working middleware guide exists.
  • Residential exits from an upstream partner network in 170+ countries.
  • HTTP(S) / SOCKS5 included; Scrapy carries credentials in the proxy URL.
VisaMastercardAmerican ExpressAMEXPayPalBitcoinCard, PayPal or Bitcoin
  • 7-day refund on your first order
  • Billed monthly. Cancel anytime, keep access to period end.

Point your spider at the real target through a free allocation of shared datacenter proxies first, no card required.

Start free

Plans and pricing

Billed monthly. Card and PayPal renew automatically until you cancel; a Bitcoin plan does not renew on its own, so you renew it from your dashboard. Cancel anytime from your own settings. You keep access until the end of the period you have paid for.

Residential

High-quality residential IPs for accurate, location-specific data

BandwidthPrice per GBTotalDiscountSelect this plan
3 GB$2.49/GB$7.47 /mo-
5 GB$2.29/GB$11.45 /moSave 8%
10 GB$1.99/GB$19.90 /moSave 20%
25 GB$1.69/GB$42.25 /moSave 32%
50 GB$1.39/GB$69.50 /moSave 44%
100 GBPopular$0.79/GB$79.00 /moSave 68%
250 GB$0.75/GB$187.50 /moSave 70%
500 GB$0.70/GB$350.00 /moSave 72%
1 TB$0.65/GB$650.00 /moSave 74%
5 TB$0.49/GB$2,450.00 /moSave 80%
Bandwidth
Per GB pricing
Threads
Unlimited
Protocols
HTTP(S) / SOCKS5
Sessions
Per tunnel or request, or sticky (best effort, up to 30 min)

Rotating Datacenter

Auto-rotating datacenter proxies across the US, Italy and Spain, billed by bandwidth usage. The gateway picks an exit per HTTPS tunnel, SOCKS5 connection or plain-HTTP request, or holds one with a session id

BandwidthPrice per GBTotalDiscountSelect this plan
10 GB$0.59/GB$5.90 /mo-
25 GBPopular$0.52/GB$13.00 /moSave 12%
50 GB$0.47/GB$23.50 /moSave 20%
Bandwidth
Per GB pricing
Threads
Unlimited
Protocols
HTTP(S) / SOCKS5
Sessions
Per tunnel or request, or sticky up to 30 min

Is this the right product for you?

Scrapy does not decide which product you need; the target does. Run your existing spider through the free datacenter allocation against the real target. If pages come back, rotating datacenter is the cheaper buy and gives Scrapy one endpoint with rotation behind it. If they come back blocked or challenged, residential is where to start. Residential can be refused too, so buy the smallest plan and check your own target before scaling. The middleware wiring is the same either way.

What you get

Residential in 170+ countries
Country, state, city and ASN targeting, all set in the proxy username rather than by switching endpoints. These exits come from an upstream partner network and are resold, which is why residential is billed by the gigabyte.
Both protocols, no upcharge
HTTP(S) / SOCKS5 on every tier of this product, on one credential, at no extra charge.
Thousands
Owned datacenter IPs
170
Residential countries

Scrapy already knows how to use a proxy: HttpProxyMiddleware ships enabled, and a proxy URL on a request routes it through that address. What Scrapy does not decide for you is which address each request leaves from, what happens to that decision on a retry, and whether a paginated crawl keeps one address for the whole sequence. Those three answers are the difference between a crawl that finishes and one that collects the same blocked page a thousand times.

Set the proxy in a downloader middleware

Assign the proxy in a downloader middleware, before the retry middleware sees the request. Set the proxy in process_request and Scrapy uses it for that attempt; keeping the decision out of the spider means every request gets it, including the ones Scrapy generates itself. The ordering number matters: place the middleware so that a retried request is re-assigned rather than sent back through the exit that just failed.

The chain, the retry interaction and a working class are in the Scrapy middleware guide.

  • Set the proxy in process_request, not in the spider, so generated requests are covered
  • Order it so a retry is re-assigned rather than reusing the exit that just failed
  • Leave the credential in the proxy URL and Scrapy passes it through for you
  • Let one endpoint do the rotation instead of maintaining a list in Python

A fresh exit per tunnel or request, or one exit per session

The gateway picks an exit for each HTTPS tunnel your spider opens and for each plain-HTTP request. Scrapy's downloader keeps connections alive, so HTTPS requests that reuse an open tunnel reuse its exit, and a new tunnel gets a new address. For discovery work (search pages, listings, availability checks) that is the behavior you want. For anything with state, hold one exit on purpose: add a session segment to the username and every request carrying that id leaves from the same address, on rotating datacenter for up to 30 minutes from when the pin is first assigned. Residential sessions are best effort, with a 30-minute ceiling: the exit can drop sooner if its device goes offline, so switch to a new session ID after repeated failures. Drop the segment and you are back to rotation with nothing to clean up.

What breaks when the exit changes mid-crawl is covered in sticky versus rotating sessions.

Concurrency decides the bill

Scrapy's concurrency settings control how much traffic you generate, and auto-throttling adapts them to the latency it sees. Through a rotating endpoint that traffic is spread across many addresses, so per-domain settings that looked conservative against a single IP can become a much heavier load, and on a metered product it lands on the invoice. Start lower than you expect, let auto-throttling find the ceiling, run a bounded slice of the crawl, and size the plan from the gigabytes it moved rather than from an estimate.

To size a pool against a page count and a time window, use the proxy calculator.

What you are buying, by product

Residential exits are consumer connections in a partner network, billed by the gigabyte, and are the product to try when a target refuses datacenter ranges. Rotating datacenter selects an exit for each connection (each request, on plain HTTP) from blocks Node4 owns in the United States, Italy and Spain, also billed by the gigabyte, and is the cheaper answer when a target accepts hosting traffic but rate-limits each address. Dedicated datacenter is priced per address with unlimited bandwidth, which suits a heavy crawl of a tolerant target where the bytes would otherwise dominate the cost.

Where each billing unit wins, with the arithmetic, is in unmetered billing versus per GB.

Frequently asked questions

Which proxies should I use with Scrapy?

It depends on the target, so test first. Run your existing spider through the free datacenter allocation. If the pages come back, rotating datacenter is the cheaper product and the place to start. If they come back blocked or challenged, try residential; it can be refused too, so start on the smallest plan.

Do I need a rotating endpoint, or a list of proxies?

A rotating endpoint is one hostname that selects an exit for each connection (each request, on plain HTTP), so there is no list to hold in Python, no health checking, and no code change when the pool changes. A fixed list is the better shape when you want to control which address handles which task, for example one dedicated address per logged-in account. Scrapy works with either; the endpoint is less code.

How do I keep the same IP across a paginated crawl?

Add a session segment to the username and reuse it for every request in that sequence. Requests carrying the same session id exit from the same address; drop the segment to return to rotation. On rotating datacenter the pin is held for up to 30 minutes measured from when it is first assigned, so a longer crawl should mint a fresh session id partway through. Residential sessions are best effort, with a 30-minute ceiling: the exit can drop sooner if its device goes offline, so switch to a new session ID after repeated failures.

Will proxies stop my spider being blocked?

They address one cause: limits counted per IP address. Spreading requests over many exits keeps any single address under a per-IP rate limit or request cap, and a ban on one address affects only the requests that land on it. They do nothing about identity above the IP layer: cookies, headers, TLS fingerprints and request timing still travel with your client, and a target correlating on those will connect your requests whatever the exit is. Set a real user agent, keep auto-throttling on, and respect the site.

How much bandwidth does a Scrapy crawl use?

Multiply the pages you intend to fetch by the average response size, then add any assets your spider follows, which is where estimates usually go wrong. A crawl fetching HTML only is far cheaper than one pulling images and fonts. On a metered product that arithmetic is the bill, so measure a small run before committing to a large one.

From $7.47 a month for 3 GB

Billed monthly. Cancel anytime in your settings, and you keep access to the end of the period you have paid for.