# See where a scraper's bytes go. Open the report in your browser.

Source: https://ipvolt.com/guides/scraper-bandwidth-report
Markdown: https://ipvolt.com/guides/scraper-bandwidth-report.md

[Home](https://ipvolt.com/index.md) / [Guides](https://ipvolt.com/guides.md) / Scraper bandwidth report

Free open-source tool · Browser-only viewer

Reviewed: 2026-09-24
Author: ipvolt

scrapescope is a free, MIT-licensed local metering proxy for scrapers and browser agents. It finds the smallest response that already contains the value your job needs, lists every host the job talked to and prices the bytes at a rate you type. This page opens a scrapescope report in your browser and explains how to read it.

Free and MIT-licensed · Works with any provider or none · Parsed in your browser, never uploaded

Use scrapescope with your current provider today. It has no default provider, rate or account, no telemetry and no update checks. ipvolt proxy access is coming separately.

## Install scrapescope.

Python 3.11 or newer. The browser extra adds find and the Playwright helper; install Playwright's Chromium from the same environment so the browser build matches.

Install the command with uv:

```sh
uv tool install 'scrapescope[browser] @ git+https://github.com/ipvolt/scrapescope' --with-executables-from playwright
playwright install chromium
```

Install with pipx:

```sh
pipx install 'scrapescope @ git+https://github.com/ipvolt/scrapescope'
pipx inject --include-apps scrapescope playwright
playwright install chromium
```

Install with pip:

```sh
pip install 'scrapescope[browser] @ git+https://github.com/ipvolt/scrapescope' && python -m playwright install chromium
```

PyPI publication is planned; the tool has been tested on macOS with Python 3.12, its CI runs the suite on Linux, and it is untested on Windows.

[Source and documentation on GitHub](https://github.com/ipvolt/scrapescope)

## The smallest response that already contains your value.

scrapescope find URL --value V loads the page once in headless Chromium and searches every text response the page received for the values you name: the document, XHR and fetch, scripts, embedded JSON and frames, with common encodings of each value tried for you. Matches are ranked by the bytes a standalone fetch of that response would move, which can be a small fraction of the full page load. Each match says whether the browser sent cookies or a token for it, and an optional replay checks whether it still works without a browser.

A provider dashboard cannot show this. A provider sees the host in each CONNECT request and a stream of encrypted bytes. It cannot see inside TLS, so it cannot tell you which resource type used the bytes, which browser component fetched something the job never asked for, or what blocking would change. scrapescope sits on your machine in front of your provider, counts the bytes of every tunnel at the socket and joins those counts to what the browser helper reports.

### Every host

Tunnel counts and bytes per host, with and without the CONNECT exchange, and the buckets for tunnels no request explains.

### Resource types

Bytes per resource type, such as document, script, image, font, media and XHR, allocated from each host's tunnel totals.

### Browser background traffic

Traffic the browser started by itself, labelled with a catalogued component such as Chromium's optimisation-guide model downloads, but only when the host is in the evidence-backed background catalog.

### What-if, with generated fixes

The modelled effect of blocking images, media and fonts or of denying catalogued background hosts, with fixes for your stack that appear only when the matching problem was measured in your run.

### Sizing before you buy

Sizing mode runs without any proxy account and approximates the transfer a job would need. It is a lower bound for protected targets and helps size a purchase; it does not predict a bill.

### Per-1,000-unit figures

Bytes per 1,000 page loads and, when you give your own rate, an estimated cost per run, per 1,000 units and per 1,000 successful units.

## Open a report.

Drop a scrapescope report.json into the frame, choose a file, or load the bundled sample. The report is parsed inside an isolated frame on this page and nothing is uploaded. You can compare two runs, price the bytes at a rate you type and download a share card rendered on your device.

The interactive viewer is HTML-only. On the web page it opens a scrapescope report.json inside an isolated frame, charts hosts, resource types and buckets, compares two runs, prices the bytes at a rate you type and renders a share card locally. This Markdown export carries the same reviewed text without the viewer.

[Open the viewer on the web page](https://ipvolt.com/guides/scraper-bandwidth-report#viewer)

## Three labels, one unit, no bill.

### Tunnel-measured, allocated, estimated

Per-host totals are tunnel-measured: the bytes scrapescope wrote to and read from the socket to your provider, TLS included, shown with and without the CONNECT exchange. Per-request and per-type bytes are allocated: each host's tunnel bytes shared in proportion to the sizes the browser helper reported. Every cost is estimated billable transfer: tunnel-measured bytes times the rate you typed.

### GB means 10⁹ bytes

scrapescope reports in GB = 10⁹ bytes by default; a GiB (2³⁰ bytes) is about 7.4% larger, and a --gib switch reports in GiB instead. Check which unit your provider uses before comparing.

### It is not a bill

Providers meter differently: with or without the CONNECT exchange, in GB or GiB, with minimums or rounding, including or excluding failed requests. No reconciliation against a provider's billing has been published yet, so no figure in a report is billing-grade.

### Hosted browsers are not covered

Cloud browser services send their proxy traffic from the service's own network, so a local meter cannot see it. scrapescope makes no claims about them.

### Blocking can break extraction

Blocking images, media and fonts, or denying background hosts, can change how a page behaves or attract anti-bot scrutiny, and denying Chromium's component updates also stops certificate-revocation and Safe Browsing data. Every what-if is a prediction: compare a second run before relying on it.

## How the figures are computed.

scrapescope is an open-source local metering proxy that a developer wraps around a scraper or browser agent. It counts the bytes of every tunnel at the socket to the proxy provider, attributes them to hosts, resource types and browser background traffic, finds the smallest response that already carries a named value, and can stop a run at a byte budget.

### Billed basis

find ranks matches by encoded body bytes + response header bytes + request header bytes + one new TLS handshake estimate of 7,200 bytes for https. This approximates one standalone fetch of that response on a new connection by a client that accepts the same compression as the browser. It leaves out the CONNECT exchange, redirects and a second handshake after a failed resumption. On HTTP/2 and HTTP/3 there are no separate header sizes, so both header fields are 0 and the match is marked multiplexed.

### The 7,200-byte estimate

The TLS handshake figure is a typical value from local measurements, not a constant. Certificate chains vary by site, so a real fetch can move more or less.

### Buckets

Tunnels of hosts with no matching request are labelled by rules: background:<id> only for hosts in the background catalog; before_attach for tunnels opened before the helper attached; preconnect_idle for tunnels that did not fail and carried at most 3,072 payload bytes up and 6,144 down, typical of a connection opened in advance and never used; and unattributed otherwise. An uncatalogued host is never called background, and the buckets add up to the with-CONNECT total.

### Cost

Costs appear only when you give a rate: the total bytes, with and without CONNECT, divided by 10⁹ (or 2³⁰ with --gib) and multiplied by your rate, plus the same per 1,000 units and, when success is known, per 1,000 successful units. The label is estimated billable transfer.

## When a fix pays for itself.

In words: the bytes a fix removes per 1,000 units, divided by 10⁹, times your price per GB, is what the fix is worth per 1,000 units; multiply by the units you run in a month and compare it with the time the fix costs you, including the second run that checks it. A fix that breaks extraction removes nothing. The viewer does this arithmetic with a price you type; it has no default rate.

For a starting point, the Proxyway 2026 proxy market research (read 2026-09-23) gives these median residential prices by monthly volume:

| Monthly volume | Median residential price |
| --- | --- |
| 5 GB | $4.16 per GB |
| 50 GB | $3.00 per GB |
| 100 GB | $2.84 per GB |
| 250 GB | $2.60 per GB |
| 500 GB | $2.28 per GB |
| 1 TB | $1.94 per GB |

Medians describe the market on the day they were read, not any provider's quote to you. Use the rate on your own invoice.

Source: [Proxyway: proxy market research 2026](https://proxyway.com/research/proxy-market-research-2026)

## Your report stays on your machine.

Your report is parsed in your browser inside an isolated frame and never uploaded; nothing about it is sent to analytics. If you accept optional analytics, this page records only fixed labels: that a report was opened from a file, a drop or the bundled sample and whether it parsed; that two runs were compared; that a share card was downloaded; that an install command was copied; and that the link to the homepage was used. Hostnames, byte counts, prices and file names never leave the frame.

[Privacy and analytics](https://ipvolt.com/privacy)

## Built on ideas others implemented first.

Chrome DevTools and the NetScope DevTools panel already find which request carries a value; scrapescope adds the ranking by billed basis, the encoded variants, the cookie and token flags and a replay check. apify/proxy-chain exposes per-connection traffic statistics, Bright Data Proxy Manager is a local forward proxy with statistics for a Bright Data account, and Scrapfly Proxy Saver is a hosted, paid layer that blocks and caches for you. NodeMaven's benchmark notebook and Skyvern's postmortem documented the Chromium background traffic that the background catalog builds on. Each is credited with a dated citation in the project README.

## Frequently asked questions

### Do I need an ipvolt account or proxy to use scrapescope?

No. scrapescope works with any provider or none. It has no default provider, rate or account, and it never contacts ipvolt. This viewer opens any report.json the tool writes.

### Is the viewer free, and what does it send?

Yes. The page and the tool are free. The report is parsed inside an isolated frame in your browser and is never uploaded. Optional analytics, if you accept it, receives only fixed labels, never hostnames, byte counts, prices or file names.

### Why do the figures differ from my provider's dashboard?

scrapescope counts every byte on its socket to your provider, TLS included. A provider may count a different subset: with or without the CONNECT exchange, in GB or GiB, with rounding or minimums, including or excluding failed requests. Treat the report as a measurement on your machine, not a bill.

### Which clients does it cover?

Any client that can be pointed at an HTTP proxy gets tunnel totals per host: Playwright, Puppeteer, Selenium, Scrapy, curl, aiohttp and Node's fetch among them. Per-type attribution, units and the bypass check need the Playwright Python helper or the Requests and HTTPX hooks. Hosted browsers are not covered.

### Can I share a report without exposing my targets?

The share card is rendered on your device, and you choose whether to download it. The tool itself keeps query strings out of reports and can replace hosts with catalog ids or keyed hashes (--redact-hosts). Check a report before you share it; it is your data.

### Does blocking always reduce the bytes?

No. The what-if is a model of your measured run. Blocking can change how a page behaves, break extraction or attract anti-bot scrutiny, and a page that loads more on a second visit can move the numbers the other way. The second, compared run is the measurement; the what-if is a prediction.

## Use it with any provider.

Use scrapescope with your current provider today. ipvolt is launching per-GB proxies — residential, datacenter, ISP and mobile — from $3.50/GB at launch.

[Explore ipvolt](https://ipvolt.com/). This document does not submit a signup.

## Measure before you optimise.

- [ETag monitoring: a no-cache header changed our results](https://ipvolt.com/blog/etag-monitoring-cache-control.md): A live test where one request header turned 304 responses into full downloads.
- [What to measure in a proxy benchmark](https://ipvolt.com/blog/what-a-proxy-benchmark-should-measure.md): Content success, response times and session behaviour, with failures retained.
- [Residential vs datacenter proxies](https://ipvolt.com/blog/residential-vs-datacenter-proxies.md): Compare by network, content success, latency, session needs and billing.
- [Proxy Toolkit MCP](https://ipvolt.com/mcp.md): Configuration templates and error diagnostics inside your coding agent.

[All developer guides](https://ipvolt.com/guides.md)
