Ten Proxy Providers and Five Scraper APIs, Priced and Probed
Prices per GB and per 1,000 requests for ten residential proxy vendors and five scraper APIs, with the two whose documented endpoints did not answer us.
11 min read · 20 Aug 2026
Every proxy comparison on the first page of Google is published by a company that sells proxies.
That is not an accusation of dishonesty. It is a description of the market. Proxy vendors have the budget, the domain authority, and the obvious incentive to write "the 10 best residential proxy providers," and so they do — DataImpulse ranks for cheapest proxies, LiveProxies for best residential proxies, and the remainder of the page belongs to Proxyway, Proxidize, HProxy and MagneticProxy. Read four of them and you will notice the winner changes to match the byline.
We buy proxies. We do not sell them. This is what the buy decision looked like from that side on 2026-08-20, including the parts that went wrong.
If you have not yet established that you need residential IPs at all, start with the mechanism — a meaningful share of workloads need none, and this post is an expensive answer to a question you may not have.
Method, and what we could not test
Read this before you use any number below.
What we did. Collected published prices and plan structures from vendor pricing pages and from one competitor's public blog post. Converted every price into dollars per 1,000 requests at a common payload assumption. Sent a plain HTTPS request to each scraper API's documented hostname to confirm it resolves and terminates TLS.
What we did not do, and it matters: we have not run production traffic through any of these with a real account. No success rates, no latency percentiles, no captcha rates, no "we scraped 100,000 Instagram profiles and here is the graph." Every number here is a price or a connectivity result. Anyone publishing head-to-head success rates across ten vendors either spent a great deal of money or made it up, and the second is more common.
Provenance is uneven, and we have labelled it. Some prices come from live vendor pricing pages. Several come from ScrapeCreators' own proxy comparison post — a company we compete with, writing about vendors they buy from. That is a decent source for what a working practitioner actually pays, and a poor source for anything neutral. It is in the table because excluding it would have made the table look more authoritative than it is.
The payload assumption. All per-request figures assume 150 KB per request, roughly what an Instagram profile fetch transfers. One gigabyte is therefore about 6,700 requests. If your targets are heavier — anything that requires rendering a full page — divide accordingly. Getting this number wrong is the single largest source of error in any bandwidth-to-request conversion, including this one.
Part 1 — Renting IPs
Ten residential providers, cheapest first. The verification column is the point of the table.
| Provider | $/GB | $/1k reqs | Source | The specific thing to know |
|---|---|---|---|---|
| Geonode | $0.27 | $0.04 | vendor page | Cheapest published price we found. Volume-tiered and quoted for India. Also sells datacenter at $0.14/GB. |
| Evomi | $0.49 | $0.07 | competitor blog | Reported behaviour: requests hang rather than fail. See below — this is worse than it sounds. |
| DataImpulse | $1.00 | $0.15 | vendor + competitor blog | The only vendor in this set with an unsolicited positive report from someone running our exact workload: "a steal… zero problems." |
| Proxyscrape | ~$1.50 | $0.22 | search result | Claims 3.2M Indian residential IPs. We could not verify the price on a pricing page. |
| AnyIP | $2.00 | $0.30 | search result | India residential plus mobile. Same caveat — price unverified. |
| Decodo (ex-Smartproxy) | $3.00 | $0.45 | competitor blog | What ScrapeCreators names as their primary provider. Eleven times Geonode's headline price, chosen anyway by someone with production volume. |
| Webshare | $3.50 | $0.52 | competitor blog | Cheapest static IPs at ~$0.30/IP/month. Different unit, different use case. |
| IPRoyal | $3.50 | $0.52 | competitor blog | Widest type variety including mobile. |
| Bright Data | $4.20 | $0.63 | competitor blog | Enterprise. Benchmarked at 98.44% success by a third party across eleven providers. Won Meta v. Bright Data. |
| Oxylabs | ~$4+ | ~$0.60+ | search result | Enterprise, same buyer as Bright Data. Leaning into AI tooling ("OxyCopilot"). |
The 15x spread is not a discount, it is a different product
Geonode's headline is $0.27/GB. Bright Data's is $4.20/GB. Nobody is fifteen times better at routing packets. What the top of that range buys is pool size, geographic granularity, success rate under adversarial conditions, and — for a certain kind of buyer — a procurement-shaped company with compliance documentation and a legal department that has already won a case about this.
The gap that should worry you is not price, it is that the cheap end of this table is entirely unmeasured. Nine of these ten providers have no published third-party success benchmark that we could find. Bright Data has one. That asymmetry is most of what you are paying for.
The failure mode worth more than the price difference
The note against Evomi — requests hang rather than fail — deserves more than a table row, because it inverts how you should read the whole list.
A provider that returns a clean 403 has done you a favour. Your retry logic fires, your failover moves to the next provider, your metrics show a spike, and you find out in minutes. A provider that accepts the connection and then holds it open until your client's timeout has converted a fast failure into a slow one. At 30-second timeouts and any real concurrency, a hang rate of a few percent will drain your connection pool and stall unrelated work behind it. The bill looks fine. Throughput quietly collapses.
Price this before you price bandwidth: how does this vendor fail, and how quickly? It is not on any pricing page, and it is the question a $0.07/1k provider can lose on against a $0.63/1k one.
The same logic applies one layer up, at the target. A platform that blocks you with a 403 is being kind; a platform that returns 200 and an empty body is not, and neither is a proxy vendor whose success detector cannot tell the difference.
On India-specific pools
Several vendors above lead with Indian residential IP counts, and it is easy to conclude you need them. You almost certainly do not. Buy geo-specific IPs only when you are scraping geo-specific content — regional TikTok or Instagram result sets, country-specific pricing pages, localised search. For general Instagram or Twitter access, a global residential pool is cheaper and behaves identically.
Part 2 — Renting the whole scraper
The other half of the decision is not buying IPs at all. A scraper API takes a URL and returns a response, and owns the anti-bot problem on your behalf. Five of them, and the plan structures are not comparable until you convert them.
| Provider | What the plan meters | Tiers |
|---|---|---|
| Geonode | Threads. Unlimited requests. | $47/2 · $199/10 · $399/25 · $699/50 · $1,799/100. Free trial: 5 threads, unlimited requests, 48 hours, no card. |
| Shifter | Threads and credits | $44/20 · $134/50 · $269/100 · $719/500 |
| ScraperAPI | Threads and credits | $49/100k/20 (US-EU only) · $149/1M/50 · $299/3M/100 · $475/5M/200 |
| ScrapingBee | Concurrent requests | $49/250k/50 → $599/8M/400 |
| Zyte | Requests per minute (3,000/min default) | PAYG ~$0.13–0.20/1k |
Apply the multiplier before you compare anything
Credit-metered plans charge more credits for harder requests, and residential is the hard one. Shifter's published table is 1 credit for datacenter, 5 for datacenter with JavaScript, 10 for residential, 25 for residential with JavaScript. A "1M credit" plan is therefore 100,000 residential requests, and residential is exactly what Instagram and TikTok require.
| Plan | $/mo | Credits | Mult | Real residential requests | Real $/1k |
|---|---|---|---|---|---|
| Geonode PAYG 1M | $126 | — | 1 | 1,000,000 | $0.13 |
| Geonode PAYG 250k | $43 | — | 1 | 250,000 | $0.17 |
| Geonode PAYG 50k | $13 | — | 1 | 50,000 | $0.26 |
| Shifter Enterprise | $719 | 10M | 10 | 1,000,000 | $0.72 |
| Shifter Business | $269 | 3M | 10 | 300,000 | $0.90 |
| Shifter Growth | $134 | 1M | 10 | 100,000 | $1.34 |
| Shifter Starter | $44 | 100K | 10 | — | no residential on this tier |
That last row is the most expensive thing on this page to discover on day three of an evaluation: the $44 tier cannot issue a residential request at any price, which means it cannot do Instagram at all. The full arithmetic, and the five questions to ask a vendor before the card goes in, are in the credit-multiplier writeup.
Geonode's marketing line — "never per credit, never with hidden multipliers" — turns out to be a real differentiator against this workload rather than a slogan. Five to ten times cheaper than Shifter for the same work.
Threads versus requests-per-minute is a real architectural difference
Four of these five vendors cap concurrency: how many requests you may have open at once. Zyte caps rate: 3,000 requests per minute by default, regardless of how long each one takes.
The difference shows up the moment your targets get slow. Under a concurrency cap, a target that goes from 1s to 8s cuts your throughput by eight — you are paying for 50 threads and getting the work of six. Under an RPM cap, slow responses cost you nothing; you keep issuing 3,000 a minute and simply have more in flight. For overnight batch work against variable-latency targets, that is a genuinely better shape, and it is not obvious from a pricing page.
Part 3 — The probes, including the two that failed
We sent a plain request to each scraper API's documented hostname on 2026-08-20, from a datacenter IP, with no credentials.
| Provider | Host | Result |
|---|---|---|
| ScraperAPI | api.scraperapi.com |
✅ 404 — host live, TLS valid |
| ScrapingBee | app.scrapingbee.com |
✅ 301 — host live, TLS valid |
| Zyte | api.zyte.com |
✅ 404 — host live, TLS valid |
| Geonode | api.geonode.com |
❌ connection timed out |
| Shifter | scrape.shifter.io |
❌ TLS certificate mismatch |
The two vendors with the most interesting pricing are the two that did not respond to us.
We are going to be careful about what that means, because it would be easy and satisfying to write "Geonode is down." It is not down. A connection timeout from one datacenter IP, unauthenticated, against a hostname taken from public documentation, is consistent with at least three dull explanations: ingress that only accepts authenticated traffic, an allowlist we are not on, or public docs that have drifted from the current hostname. A certificate mismatch is consistent with a host that has moved and a doc page that has not. We could not distinguish between those without an account, and we did not buy one.
So the honest finding is narrow and still useful: the two cheapest options on this page could not be confirmed reachable from outside, and the three more expensive ones could. If you are evaluating Geonode or Shifter, get the exact curl from inside the authenticated dashboard rather than from the public docs, and confirm it works before you plan a migration around the price.
Publishing this is mildly against our own interest — Geonode was the option we were most inclined to recommend on price. Leaving it out would have made the recommendation cleaner and worse.
What these vendors do better than we do
We run an API in this category, so it would be convenient to leave this section out. Three specific things, all checkable.
Bright Data has a measured success rate. We do not. A third-party benchmark of eleven providers put them at 98.44%, with a separate social-specific test at 88% and roughly 8-second responses. Our Instagram endpoints are marked ⚠️ in our own README, gated at preflight for want of residential IPs, and our only live probes hit rate limits inside two attempts — a sample of two, not a measurement. When a buyer asks "what fraction of my Instagram requests will succeed," Bright Data can answer with someone else's numbers and we cannot answer at all.
Zyte's plan model is better than the limiter we built. Requests-per-minute is the right shape for asynchronous batch work, as above. Our own concurrency control is a fair FIFO semaphore in src/core/semaphore.ts that models threads, because that is what most of this market meters. Point us at Zyte today and we would under-utilise the plan until we add a token-bucket rate limiter. Their architecture is better than ours for the workload we specifically built the product around, and closing that gap is our work, not theirs.
Bright Data has the legal precedent and the compliance paperwork. They won Meta v. Bright Data in 2024, which every subsequent post on this topic — including ours — now cites. They carry SOC 2 and the procurement artefacts an enterprise security review asks for. We have neither. If your blocker is a vendor questionnaire rather than a price, most of the cheap end of this page, us included, is not a candidate.
Build versus buy, and the condition that usually fails
The break-even is easy to state and easy to get wrong.
At 150 KB per request, renting IPs beats renting a scraper API once your bandwidth costs less than about $0.13 per 1,000 requests — roughly $0.87/GB — and your success rate matches theirs.
The second clause is the whole thing. Bandwidth is the cheap, visible, forecastable half. The expensive half is the engineering that turns a residential IP into a parsed response: session management, fingerprint consistency, captcha handling, retry policy, and the week every few months when a platform changes its defences and your pipeline returns plausible garbage until someone notices. None of that appears on a pricing page, and all of it is what you are actually buying when you buy a scraper API.
A useful way to decide: if a platform breaking would ruin your week, rent the API and let it ruin someone else's. If you already have the on-call rotation and the parsing expertise, rent the IPs and keep the margin.
How to run these probes yourself
Nothing here needs an account, and you should not trust a table this old anyway.
- Confirm the host answers.
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' https://<documented-host>/. A 404 or 301 is a pass — you are testing DNS, routing, and TLS, not the API. A hang or a certificate error is a finding. - Pull the multiplier table, not the plan cards. It is usually below the fold, sometimes only in the docs.
- Convert everything to one unit.
real requests = credits ÷ multiplier, then$/1k = (price ÷ real requests) × 1000. Do the same for per-GB pricing at your measured payload size — run twenty requests against your actual target and take the mean transfer, do not use ours. - Divide by success rate. You will not have one until you run a trial. Geonode's 48-hour, no-card trial exists precisely for this; use it on your real targets, not on
example.com. - Archive every pricing page you priced against. They are edited quietly and often, and the multiplier table is the part most likely to move.
Step 4 is the one everybody skips, and it is the only step that produces a number about your workload rather than someone else's.
For what it is worth, the split we ended up with is boring: YouTube and the Meta Ad Library run through no proxy at all, because neither needs one, and Instagram and Twitter run through a multi-provider residential pool with automatic failover and benching of providers that start failing. That is less a strategy than what happens when you ask the proxy question once per platform instead of once for the whole product.
Sources and dates. Prices, plan structures, and the endpoint probes are recorded in research/11-proxy-and-scraper-providers.md, gathered 2026-08-20, with a verification column distinguishing live probes from vendor pages from secondary sources. The Bright Data benchmark figure is Scrape.do's published comparison of eleven providers. Pricing in this category changes frequently — archive anything you plan to rely on, and re-run the probes before you sign.