15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

Guide · Scraping practice

How much bandwidth does web scraping use?

Scraping uses roughly 18 KB per page if you fetch only the HTML document and around 2.3–2.7 MB per page if you render it in a browser with all assets — the medians HTTP Archive measured in 2024. That is a difference of more than a hundredfold, so the method you choose decides your bandwidth bill far more than the number of pages does. At those medians, 100,000 pages cost about 1.8 GB as HTML and about 230–265 GB fully rendered.

Reviewed 30 Oct 2026

The short answer

  • HTTP Archive's 2024 Web Almanac: median page weight 2,652 KB on desktop and 2,311 KB on mobile; the median HTML document is 18 KB.
  • On the median desktop page, images are 1,054 KB and JavaScript 613 KB — the two things a scraper rarely needs.
  • HTML-only fetching of 100,000 median pages is about 1.8 GB; full rendering is over a hundred times more.
  • Medians hide a long tail, and the pages you scrape are not the median page. Measure 50 real fetches before you budget.
  • Add a margin for retries, redirects, headers and TLS handshakes.

What a web page weighs

HTTP Archive crawls millions of sites every month and publishes the results in its annual Web Almanac. The 2024 page-weight chapter, measured in October 2024, gives these medians — bytes transferred, so already compressed where the server compresses:

Resource (median, desktop)BytesDo you need it to scrape?
Whole page2,652 KB (mobile 2,311 KB)Only if you render
HTML document18 KBYes — usually the only thing
Images1,054 KBAlmost never
JavaScript613 KBOnly if the page builds content client-side
Fonts131 KBNo
CSS78 KBNo
Requests per page71 (mobile 66)One, for HTML-only

The component medians do not add up to the page median — each is the median of its own distribution — but the proportions are the point: the document you want is under 1% of what a browser downloads.

HTML-only versus rendered scraping

An HTTP client such as Python requests or Scrapy downloads exactly the URL you ask for. A headless browser downloads the document and then everything it references — scripts, styles, fonts, images, trackers — and runs the scripts, which fetch more.

Use a browser when the content is built client-side and you cannot find the JSON the page loads. Otherwise fetch HTML or that JSON directly. Many pages that look dynamic load their data from a single public JSON call you can request yourself.

A worked example: 100,000 pages

MethodPer page (median)100,000 pages
HTML only18 KB≈ 1.8 GB
Rendered, images blocked (desktop)≈ 1,600 KB (2,652 − 1,054)≈ 160 GB
Rendered, mobile2,311 KB≈ 231 GB
Rendered, desktop2,652 KB≈ 265 GB

Arithmetic in decimal units (1 GB = 1,000,000 KB). The blocked-images row is a rough subtraction of medians, not a measurement. Blocking JavaScript as well is usually impossible when you rendered precisely because of JavaScript.

On per-GB pricing, the method is the bill: the same 100,000 pages cost two orders of magnitude more rendered than fetched. The pricing page prints the current per-GB price per pool.

What the medians do not include

  • Your pages are not the median page. The Almanac describes the web at large; a product page or a fare search result can be heavier or lighter. Measure your own targets.
  • Retries and failures use bandwidth too. A 10% retry rate is 10% more traffic.
  • Redirects, cookie banners and interstitials add requests you did not plan.
  • Protocol overhead — request headers, TLS handshakes on new connections — is small per request but adds up across millions of small fetches.
  • Compression only helps if your client asks for it with Accept-Encoding; most HTTP clients do by default, some do not.

How to measure your own number

  • Fetch 50 representative URLs per target with the method you will use in production.
  • For HTTP clients, sum the response body sizes plus headers; for browsers, sum transferred bytes across all responses in the page's network log.
  • Take the median and the 90th percentile, multiply by planned volume and add a margin for retries.
  • Repeat when a target redesigns — page weight drifts upwards over time.

To bring the number down, see how to reduce proxy bandwidth. For a sense of real workloads, the web scraping and price monitoring pages work through monthly cost examples.

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

How much data does it take to scrape one web page?

About 18 KB for the HTML document alone at the 2024 median, according to HTTP Archive, and about 2.3 MB on mobile or 2.7 MB on desktop if a browser loads the full page with all its assets. Your targets may differ, so measure a sample.

How many pages can I scrape with 1 GB?

At the 2024 median HTML size of 18 KB, roughly 55,000 pages fetched as HTML only. Rendered in a browser at about 2.3–2.7 MB per page, roughly 370–430 pages. The method matters more than anything else.

Does a headless browser use more proxy bandwidth?

Yes, by a large factor. A browser downloads every script, stylesheet, font and image a page references — 71 requests on the median desktop page — while an HTTP client downloads only the URL you request.

What is the median web page size in 2024?

HTTP Archive's 2024 Web Almanac measured a median of 2,652 KB on desktop and 2,311 KB on mobile in October 2024, with 71 and 66 requests per page respectively.

Do failed requests count towards proxy bandwidth?

Any traffic that passes through the proxy uses bandwidth, whether or not the response is the one you wanted. Retries, redirects and error pages all count, which is why a retry budget belongs in a bandwidth estimate.

Sources & review

Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.

  1. [1]HTTP Archive: Web Almanac 2024 — Page Weight
  2. [2]IETF: RFC 9110: HTTP Semantics (Content-Encoding, Accept-Encoding)
  3. [3]Playwright: Network — Python

Next

Where to go from here

Use caseProxies for web scraping and data collectionA second provider that just works — Scrapy, requests, Crawlee or Playwright, self-serve, no sales call, bandwidth that never expires.Use caseProxies for price and competitor monitoringSee the price a shopper in Berlin, Lyon or Chicago sees. ISP bandwidth at our lowest price per GB for HTML checks, residential where a marketplace is strict.Use caseProxies for AI and LLM training-data collectionCollect public web text, images and product data at corpus scale from residential and ISP IPs, paid per gigabyte with no monthly commitment.GlossaryPer-GB pricingPer-GB pricing is a proxy billing model in which you pay for the volume of traffic that passes through the proxy, measured in gigabytes, rather than per IP address, per request or per month; the number of threads, requests and exit IPs you use does not change the price.GlossaryHeadless browserA headless browser is a real web browser engine running without a visible window and controlled by code instead of a person; it loads pages, executes JavaScript and builds the DOM like a normal browser, which makes it the tool for pages whose content only appears after scripts run.GuideHow to reduce proxy bandwidthCut proxy bandwidth by fetching HTML or JSON instead of rendering, blocking images and fonts, using compression, conditional requests and local caching.IntegrationScrapySet an authenticated proxy in Scrapy with meta['proxy'] and a small middleware: sticky sessions across pagination, geo per request, retries and SOCKS.IntegrationPlaywrightSet up an authenticated proxy in Playwright for Python and Node: launch and per-context proxies, sticky sessions, geo-targeting and handling proxy errors.