What is public-data scraping?
Public-data scraping is the catch-all for any pipeline that pulls structured data out of the public web. sites that don't expose an API, or whose API is too restrictive, too expensive, or too slow for the use case. It powers research datasets, lead-gen pipelines, real-estate aggregators, job-market analytics, news monitoring, sentiment indices, alt-data feeds for hedge funds, and a long tail of niche operations where a clean dataset is worth more than a clean conscience about the means of collection.
If you're reading this, you probably already know what you're scraping and roughly why. The question is the infrastructure underneath, because at scale the proxy layer is what separates a pipeline that runs for years from one that breaks every other Tuesday.
Scale here means different things for different teams. Some pipelines push 50,000 requests a day; some push 50 million. Some target a single domain; some hit 10,000 distinct sites. The common thread is that any meaningful volume from a single egress IP gets noticed, throttled, then blocked. usually in that order, sometimes silently.
Why proxies matter here
Modern websites are not the static documents they were when most scraping tutorials were written. They sit behind WAFs that score IP reputation, fingerprint the TLS handshake, look at HTTP/2 frame ordering, run JavaScript challenges that demand a real browser, and keep per-IP rate-limit counters that don't reset on 429. Without proxies, a single scraper hits the same wall on every domain. and worse, the same scraper IP gets cross-flagged across sites that share threat-intel feeds.
Beyond IP reputation, there's the fingerprinting layer. Even with proxies, a scraper that uses a single User-Agent, a single TLS cipher suite and a single set of HTTP headers gets clustered server-side as 'one entity' regardless of IP rotation. Proxies are necessary; they're not sufficient. But they're the foundation. without them, every other anti-detection measure is decoration.
And then there's geography. Some sites only serve content to specific markets. Others serve different content. If your dataset claims to cover the US e-commerce market but your scraper runs entirely from a single AWS region in Ohio, half the sites are giving you a foreign-visitor view that's incomplete or outright wrong.
What VaultProxies brings to this
For high-volume scraping, the Residential Unlimited plan is the right shape. 50K concurrent threads is enough to saturate most pipelines without queueing, and the unlimited bandwidth removes the per-GB tax that makes high-throughput scraping painful on metered plans. The pool is the same 32M+ residential IPs we use for everything else. country, state, city and ASN targeting are all available, and rotation is per-request by default with sticky sessions on demand.
For pipelines where IP type doesn't matter. internal APIs, sitemaps, anything that doesn't fingerprint at the IP layer. our Datacenter Unlimited gives you 1Gbps+ on dedicated IPs at a fraction of the residential cost. Many operators run a hybrid: residential for the hostile sites, datacenter for everything else, both behind the same dashboard.
- 50K concurrent threads on residentialRun a serious crawl without queueing yourself.
- 1Gbps+ on datacenterWhen the target site doesn't care about IP type, datacenter is faster and cheaper. Use both.
- Per-request rotationDefault rotation is per-request. Each call hits a different exit IP without any work on your side.
- Real working code samplesDrop-in snippets for Python, Node, Go and curl in the dashboard. and they're tested, not aspirational.
Recommended setup
Start with Residential Unlimited at the smallest thread tier and stress-test against your hardest target. Most pipelines find their natural ceiling well below 50K threads. disk I/O, parser CPU and downstream database throughput usually saturate first. Move up tiers based on measured concurrency, not aspiration.
Use country flags to match the target's primary market. Use sticky sessions only where the target requires session coherence (cart, login, multi-step forms). For everything else, default rotation will give you the lowest detection rate.
import fetch from "node-fetch";
import { HttpsProxyAgent } from "https-proxy-agent";
const PROXY = "http://USER-country-us:[email protected]:8080";
const agent = new HttpsProxyAgent(PROXY);
async function scrape(url) {
const res = await fetch(url, {
agent,
headers: {
"User-Agent": "Mozilla/5.0 ...",
"Accept-Language": "en-US,en;q=0.9",
},
});
if (!res.ok) throw new Error(`status ${res.status}`);
return await res.text();
}
// Run 200 in parallel; default rotation gives a fresh exit per request
const urls = await loadTargets();
const out = await Promise.allSettled(urls.map(scrape));
console.log(out.filter(r => r.status === "fulfilled").length, "ok");Common pitfalls
- Treating residential as a silver bulletResidential IPs help, but if your TLS fingerprint screams 'requests library' you're still detectable. Use a TLS-emulating client when targets are hostile.
- Burning sticky sessions on stateless targetsSticky on a JSON endpoint that has no session affinity just narrows your IP pool. Default to rotating.
- Not budgeting for retriesEven with great proxies, 5-10% transient failure is normal. Build retry-with-backoff into the worker, not the pipeline.
- Logging the proxy URLEmbarrassing but common. Sanitize logs. credentials in stack traces leak fast.
- One worker pool for all targetsDifferent targets warrant different concurrency, retry policy and rotation strategy. Pool per target type, not per pipeline.
Getting started
If you already know your volume, jump straight to Residential Unlimited at the right thread tier. If you're prototyping, start with the per-GB Residential plan and migrate when costs cross over. For non-sensitive targets, Datacenter Unlimited is dramatically cheaper. The same gateway covers all three. Pair with price intelligence and ML training datasets if those are also on your roadmap.