Skip to the answer
Proxy Costsobserved 2026-07-29

Answer

A question answered from the dataset, with the figure, the date it was observed and the source it came from.

How much bandwidth does web scraping use?

There is no honest universal GB figure in proxy pricing data. The 710 plan rows observed across 47 providers on 2026-07-25 contain prices and allowances, but no measured request or response sizes from a scrape. Once usage is measured, the lowest conflict-free exact residential checkout tiers in this dataset are $7.92 at 10 GB, $34.65 at 50 GB and $49.99 at 100 GB. Those figures come from geonode-residential-monthly at 10 GB and 50 GB, then evomi-core-residential-monthly at 100 GB. Full observed plan data · GeoNode source, retrieved 2026-07-25 · Evomi source, retrieved 2026-07-25

A plan’s bandwidth allowance is not a measurement of a scraping job. It says how much traffic a buyer may consume under that product. It does not say how large a target page is, whether the scraper downloads images, how much JavaScript runs, how many retries occur or whether the proxy meter counts both directions.

That distinction matters because the question has two separate parts:

  • Workload measurement: bytes transferred by the actual requests, responses, redirects, retries and assets.
  • Checkout pricing: the cheapest published configuration that covers the measured amount before its traffic expires.

plans.json can answer the second part. It cannot answer the first without observations from the scraper or the provider’s usage meter.

What measured usage costs at published checkpoints

The following table does not estimate a crawl. It takes exact traffic quantities that appear as checkout tiers and selects the lowest non-conflicted residential total at each quantity. Each result names the plan that produced it. The plan can change between rows, so the totals are not one vendor’s volume curve.

Measured traffic to buy Lowest exact checkout in the filtered set Plan row Expiry state Evidence
1 GB $2 thordata-residential Not published Vendor page, retrieved 2026-07-25
5 GB $5 dataimpulse-residential-intro Never expires Vendor page, retrieved 2026-07-25
10 GB $7.92 geonode-residential-monthly Never expires Vendor page, retrieved 2026-07-25
25 GB $18.45 geonode-residential-monthly Never expires Vendor page, retrieved 2026-07-25
50 GB $34.65 geonode-residential-monthly Never expires Vendor page, retrieved 2026-07-25
100 GB $49.99 evomi-core-residential-monthly 30 days Vendor page, retrieved 2026-07-25

The 100 GB row costs less than a straight extrapolation from the 50 GB row because the winning plan changes. It is Evomi’s 100 GB monthly product, not another point on GeoNode’s row. Its traffic expires after 30 days, while GeoNode’s recorded balance does not expire. The lower checkout therefore comes with a different time constraint. GeoNode source · Evomi source, both retrieved 2026-07-25

This is why “multiply pages by an average size, then multiply by an average price” is fragile twice. The page size is not universal, and the unit price is not a continuous market constant.

The same usage can have several valid prices

ProxyScrape publishes four residential rows for the same traffic ladder, separated by expiry. At an exact 5 GB purchase, the observed totals are $14.25 for proxyscrape-residential-30d, $15.25 for proxyscrape-residential-60d, $16.25 for proxyscrape-residential-90d and $19 for proxyscrape-residential-non-expiry. Vendor API, retrieved 2026-07-25

At an exact 100 GB purchase, those same four rows cost $220, $235, $250 and $295 in the same expiry order. Vendor API, retrieved 2026-07-25

The bandwidth measurement has not changed between those rows. The time available to spend it has. A scraping job that steadily uses its balance inside 30 days can compare the 30-day row. An irregular job that may pause cannot treat that row as equivalent to non-expiring traffic.

How to measure the workload without inventing a page size

Use the target workload itself. Route a representative run through the same request path, rendering mode and asset policy that production will use. Read traffic from the proxy provider’s meter if it is available, and also record client-side transferred bytes. A disagreement between those readings is a billing question to resolve before scaling.

The measurement needs to include:

  • Request bodies as well as response bodies.
  • Redirect chains and authentication handshakes.
  • Failed responses and retries, because traffic can still be billed when the useful payload is not returned.
  • Images, fonts, video, analytics scripts and other browser assets if a rendered browser is used.
  • API responses requested by client-side JavaScript after the initial document.
  • Duplicate downloads caused by disabled caching or isolated browser sessions.

These are components of the measurement, not estimates of their size. A raw HTML request and a rendered browser visit to the same URL can consume different amounts because they fetch different resources. The plan dataset has no field that can convert one into the other.

After measuring, use:

required traffic = measured traffic per representative run × planned number of runs

Then select a published checkout tier that covers that requirement and inspect expiry, rollover on the provider’s page, pooling and any overage on the provider’s page field. If an overage price is not published, the data should say “Not published,” not assume the next tier’s rate.

What a ranking competitor gets wrong

Massive’s bandwidth glossary, retrieved 2026-07-26, gives a rule of thumb that scraping 100,000 basic HTML pages may use 10 to 20 GB. The page does not name the target pages, measured response sizes, request method, compression, retry rate or sample from which that range was produced. It also says a properly coded scraper can save up to 30 percent of bandwidth without naming a measurement behind the figure.

Those statements may describe a particular crawl, but they are not reproducible as a universal answer. A reader cannot tell whether “basic HTML” excludes CSS and images, whether transfer encoding is counted, or whether failed requests are included. Our pricing rows cannot validate the range, so this page does not reuse it.

The same omission appears in price-first guides that assign a generic number of gigabytes to a use case. A monitoring job fetching compact API responses and a browser job rendering media-heavy pages are both “web scraping,” but the label does not determine their traffic.

What the data can and cannot answer

The data can identify exact checkout totals for published traffic tiers, the plan IDs behind those totals, the observed date, the traffic expiry and whether a source is conflicting. It can show that 5 GB costs $5 on dataimpulse-residential-intro or $14.25 on proxyscrape-residential-30d, with different plan properties. DataImpulse source · ProxyScrape source, both retrieved 2026-07-25

It cannot predict how many bytes a target transfers, how often the target blocks a request, how many retries the scraper will make or how a vendor counts traffic at the meter. It also cannot turn a bandwidth allowance into evidence that the plan can serve a given concurrency or success requirement when those fields are not published.

The practical answer is therefore measured, not remembered: observe the job’s traffic, price that observed total against named checkout tiers, and keep the expiry condition beside the result. Until the workload is measured, any universal gigabyte figure is a guess.