Key Takeaways
A measurement-first guide to estimating proxy bandwidth for HTTP and browser scraping, including curl, Playwright request sizes, retry overhead, GB conversion, billing reconciliation, and failure modes.
How Much Proxy Bandwidth Do You Need for Web Scraping?
If you need to estimate proxy traffic before a scraping job goes into production, start with measured bytes from a representative sample—not a generic GB-per-page assumption.
A useful forecast has five inputs:
The important phrase is usable result. A request that returns 200 OK but contains the wrong market, a challenge page, an empty product page, or a parser failure still consumed bandwidth without producing business value.
This guide shows how to measure HTTP and browser traffic, turn the sample into a monthly GB estimate, and validate the estimate against provider billing before you scale.
For cost-per-result modeling after you have measured traffic, use the Residential Proxy Cost Calculator. That article focuses on cost; this one focuses on capacity planning.
1. Define What Counts as One Result
Do not begin with page count. Define the unit your business actually needs.
Examples:
- one parsed product record
- one SERP result set for a specific country and device profile
- one completed browser workflow
- one price-and-stock observation
- one verified screenshot
- one API-derived record discovered through a browser page
Then define a pass condition. For a product monitor, a usable result might require the expected SKU, currency, market, stock state, and parser version. For a browser workflow, it may require the final state—not just a successful navigation.
This distinction prevents a common budgeting error: dividing traffic by requests instead of by successful outputs.
2. Measure HTTP Traffic First
For plain HTTP collection, measure actual transferred payload on a representative sample.
A simple curl check:
size_download is useful for a quick sample, but it is not a provider billing meter. curl documents it as downloaded payload/body bytes; response headers and other protocol overhead are not included. Provider billing can use a different accounting boundary.
Do not estimate from Content-Length alone. A response can be chunked or otherwise framed without a usable Content-Length, and HTTP transfer framing is not the same thing as your proxy provider's billable-byte definition.
Sample several page classes
Measure page classes separately rather than averaging unrelated targets together:
| Page class | Why separate it |
|---|---|
| HTML article or detail page | Usually dominated by one response body |
| Search or category page | Pagination and repeated discovery requests change the cost |
| Large JSON/API response | Payload size may dominate even without browser assets |
| Redirect-heavy URL | More than one request can be involved |
| Stateful flow | One output may require several requests |
Collect enough samples to capture normal variation. Do not publish a universal page-size number from one site and reuse it everywhere.
3. Measure Browser Workflows Differently
A browser navigation can trigger document, script, stylesheet, image, font, XHR, fetch, and other requests. Counting only the main HTML response understates browser traffic.
Playwright exposes per-request size information through request.sizes(). The following example records completed network requests and totals their HTTP request/response header and body sizes:
This is an application-level measurement, not a claim that the number equals billable proxy bytes. TLS, HTTP/2 or HTTP/3 framing, CONNECT traffic, retries below your instrumentation layer, compression behavior, and provider accounting can make the billed total differ.
Resource blocking can reduce traffic—but validate the result
Playwright can abort requests by resource type. For example:
Do not assume this is safe for every target. Images, fonts, scripts, or background requests can affect layout, lazy loading, anti-abuse checks, or the specific evidence you need. Compare the blocked and unblocked result and keep the optimization only if the business output remains valid.
4. Convert the Sample into a Forecast
Once you have measured traffic per usable result, forecast by workflow.
Example values below are illustrative inputs, not BytesFlows benchmarks:
Then:
If your billing dashboard uses GiB or another unit, convert using the provider's definition instead of assuming that 1 GB = 1 GiB.
The attempt multiplier should come from a pilot run. If 100 usable results require 112 attempts, the observed multiplier is 1.12. Avoid inventing a fixed retry percentage before testing the target.
5. Separate Traffic by Collection Mode
One blended average hides the reason your bill changes.
Track at least these buckets:
| Mode | Measure | Typical planning question |
|---|---|---|
| HTTP fetch | Bytes per usable response | Can this remain a lightweight request workflow? |
| Browser render | Bytes per completed browser task | Which resources are required for correctness? |
| Screenshot/evidence | Bytes per evidence-producing task | Do all records need visual proof? |
| Discovery/listing | Bytes per discovered usable target | How much traffic is spent before detail-page collection? |
| Retry/recovery | Bytes consumed by unsuccessful attempts | Which failure class is increasing cost? |
A workflow that moves from HTML extraction to full browser rendering can change its traffic profile dramatically without changing the number of final records.
6. Do Not Treat Every Failure as Retryable
Blind retries turn operational problems into bandwidth problems.
| Failure | Default action | Why |
|---|---|---|
| Proxy authentication failure | Stop and fix credentials/configuration | Retrying the same invalid credentials wastes traffic |
| Wrong market or currency | Stop and fix targeting | The request succeeded but the result is unusable |
| Parser drift | Stop and fix extraction | More network attempts will not repair selectors |
| Target rate limit | Honor policy and retry guidance; reduce pressure | Immediate repeated requests can worsen the condition |
| Transient connection failure | Retry within a bounded budget | A different attempt may succeed |
| Challenge or access page | Classify and stop when policy or authorization is unclear | Do not turn access controls into an automatic retry loop |
For scraping and automation, only collect content you are authorized to access. Respect applicable terms, privacy requirements, rate limits, and explicit stop conditions. Proxies do not remove those obligations.
7. Reconcile Your Measurement with Provider Billing
Before committing to a larger plan, run a controlled pilot and compare two numbers:
- your application-side measured bytes
- the provider dashboard's billed traffic for the same window
Record:
- UTC start and end time
- target set
- number of attempts
- number of usable outputs
- application-measured bytes
- provider-reported bytes
- proxy mode and market
- software version
If the numbers differ, do not force them to match by changing the spreadsheet. Find the accounting boundary. Possible contributors include headers, uploads, tunneling, protocol overhead, browser subresources, retries, compression, or provider-specific billing rules.
Your provider dashboard is the authoritative source for what that provider bills. Application instrumentation is the authoritative source for what your code observed.
8. Capacity Planning Checklist
Before buying or increasing proxy traffic:
- Define one usable business output.
- Measure representative targets instead of using a generic page-size assumption.
- Separate HTTP, browser, screenshot, and multi-step workflows.
- Measure failed attempts as well as successful ones.
- Calculate an observed attempt multiplier from a pilot.
- Keep decimal GB and GiB definitions explicit.
- Compare application measurements with provider billing.
- Investigate wrong-market, challenge, parser, authentication, and transport failures separately.
- Re-run the sample when the target, browser behavior, cadence, or extraction strategy changes.
- Scale only after the cost per usable result is stable enough for the business case.
Common Failure Modes
The forecast is much lower than actual usage
Check whether the sample excluded redirects, browser subresources, screenshots, uploads, retries, discovery pages, or failed workflows.
Browser traffic varies wildly between runs
Look for cache differences, lazy-loaded assets, consent flows, A/B variants, session state, redirects, or target-side page changes. Measure the completed workflow rather than only the initial navigation.
Content-Length does not match what was downloaded
Do not use it as a universal transfer counter. HTTP messages can use other framing, and provider billing may include data outside the response body.
HTTP status is 200 but cost per result is poor
Add a content-level quality gate. Wrong-market pages, empty listings, soft blocks, login walls, or parser failures should not count as successful outputs.
FAQ
How many GB do I need for 100,000 pages?
There is no reliable universal number. Measure representative pages, calculate bytes per usable result, include retries and market/runs multiplicity, then extrapolate. Static HTTP pages and browser-rendered workflows can have very different traffic profiles.
Should I estimate using compressed or uncompressed page size?
Measure what your real client transfers and then reconcile it with the provider's billed usage. Do not substitute DOM size, saved HTML size, or an assumed uncompressed representation for an actual transfer measurement.
Does Playwright request.sizes() equal proxy billable traffic?
No. It gives useful HTTP request/response size information for browser requests, but it is not a universal proxy billing meter. Use it for application-side diagnostics and compare it with the provider dashboard.
Can I reduce browser traffic by blocking images?
Often, but only if the workflow remains correct. Test the same representative pages with and without blocking and validate the final business output.
What should I do after estimating GB?
If you need to translate measured traffic into cost per successful result, continue with the Residential Proxy Cost Calculator. For implementation patterns, see Web Scraping Proxy Architecture and Playwright Residential Proxy Guide.
Alex Vance
Lead Proxy Network Architect
Reviewed by the BytesFlows engineering team. Examples are written for compliant public-web data collection, QA, SEO monitoring, and market research workflows. Results can vary by target site, country, client runtime, and request rate.