To test proxy speed, measure time to first byte and success rate across a few hundred requests to your real target, then compare the median and the slow tail, not a single run. A one-off speed-test site tells you almost nothing about how a proxy behaves on the pages you actually scrape. This guide gives you a reproducible method: a curl one-liner, a short Python script, and the rules for comparing providers fairly. It works on any proxy, including BuyProxy's residential network, and costs a few cents of bandwidth to run.
The Metrics That Matter
Speed is several measurements, not one. These are the ones worth recording:
| Metric | What it tells you |
|---|---|
| Connect time | How long it takes to reach the proxy and open the connection |
| TLS time | How long the secure handshake takes after connecting |
| Time to first byte (TTFB) | Request sent to first response byte: includes the proxy hop and the target's own processing |
| Total time | The full cost of one request, including the body download |
| Success rate | Share of requests that returned the real page, not an error or a block page |
| Median and p95 | Typical speed versus the slow tail that stalls a crawler |
For scraping, TTFB and success rate matter most. A proxy that is fast but fails one request in five is slower in practice than a steady one, because every failure is a retry.
Step 1: Get a Baseline Without the Proxy
Before you blame a proxy, measure the target on its own. Our free endpoint latency test sends three live requests to any host or URL and times them server-side, which gives you a baseline for how quickly the target responds at all. Any difference you see later is the proxy hop plus the exit network. Note that this tool measures the target directly, not through a proxy.
Step 2: Time One Request With curl
curl can print its own timing breakdown with the --write-out option, and -x sends the request through a proxy. Replace the placeholders with a line from your dashboard:
curl -s -o /dev/null -x "http://USER:PASS@HOST:PORT" \
-w "connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total} code=%{http_code}\n" \
https://api.ipify.org
Run it five times and look at the spread. A stable setup returns similar numbers each time, while a flaky one swings widely. Test with a lightweight endpoint such as api.ipify.org, which returns a handful of bytes, so even hundreds of test requests use a tiny fraction of 1 GB. The curl manual lists every timing variable.
Step 3: Benchmark Hundreds of Requests With Python
One request is noise. This script sends 200 requests with 10 in parallel and reports success rate, median and p95 TTFB, and a breakdown of failures. It uses the elapsed value from the requests library, which the requests documentation defines as the time from sending the first byte of the request to finishing parsing the response headers, so it approximates TTFB.
import statistics
from collections import Counter
from concurrent.futures import ThreadPoolExecutor
import requests
PROXY = "http://USER:PASS@HOST:PORT"
PROXIES = {"http": PROXY, "https": PROXY}
URL = "https://api.ipify.org" # swap for a lightweight page on your real target
N = 200
CONCURRENCY = 10
def one(_):
try:
r = requests.get(URL, proxies=PROXIES, timeout=20)
return r.status_code, r.elapsed.total_seconds()
except requests.RequestException as exc:
return type(exc).__name__, None
with ThreadPoolExecutor(max_workers=CONCURRENCY) as pool:
results = list(pool.map(one, range(N)))
times = [t for code, t in results if code == 200 and t is not None]
print(f"success: {len(times)}/{N} ({len(times) / N:.0%})")
if len(times) >= 20:
print(f"median TTFB: {statistics.median(times) * 1000:.0f} ms")
print(f"p95 TTFB: {statistics.quantiles(times, n=20)[18] * 1000:.0f} ms")
print("failures:", dict(Counter(code for code, t in results if code != 200)))
Point URL at a lightweight page on your real target once the basics work. If you see lots of 407, 403 or 429 codes in the failure list, our proxy error codes guide explains what each one means and how to fix it.
Step 4: Count Block Pages as Failures
A response with status 200 is not always a success. Many sites return a normal-looking page that is actually a CAPTCHA or a "verify you are human" screen. Check the body for a marker you expect on the real page, such as a product title or a known element, and count anything else as a failure. Without that check, success rate looks better than it is.
How to Compare Providers or Proxy Types Fairly
A fair comparison changes one variable at a time. Use the same target, the same concurrency and the same sample size for every candidate, and run each test at several times of day, because residential pools are shared and load changes. Request the same country and city for each. Keep every failure in the results rather than discarding slow or failed requests, since those are exactly what separates providers. Finally, record success rate next to speed, and convert both into cost: take the price per GB, divide by success rate, and compare that figure. The buying guide covers the other factors that sit alongside speed.
What to Expect From Different Proxy Types
Different proxy types have different speed profiles. Datacenter and ISP proxies run on hosting-grade infrastructure and tend to respond faster, while residential and mobile traffic travels over consumer connections, so latency varies more. That makes the choice a trade-off between speed and how often the target blocks you. The residential vs datacenter guide and ISP rotating proxies explained cover where each wins, and the proxy type decision guide compares all six BuyProxy products.
Test BuyProxy the Same Way
We build BuyProxy to be fast at a low price, but you should not have to take that on trust. Run the script above against your own targets. Pay-as-you-go starts at $0.99/GB with a $5 minimum and credits that never expire, and new accounts with a major email provider also get a one-time 100MB bandwidth bonus, so a full benchmark can cost nothing or about $5. Check the status page if results look off, and see the pricing page for current rates.
Just bought a proxy? See how to buy a proxy server, step by step for the full process.
Frequently Asked Questions
Q: What is a good proxy speed?
There is no universal number, because speed depends on the target, the exit location and the proxy type. Compare candidates against each other on the same target, and judge the median and p95 together with success rate rather than any single figure.
Q: What is the difference between latency and TTFB?
Latency usually means the network round-trip. Time to first byte includes that round-trip plus the time the target takes to start responding, so it is the more useful number for scraping.
Q: How many requests do I need for a reliable test?
A few hundred per candidate is a practical minimum, repeated at different times of day. Fewer than about 20 successful samples is too few to calculate a meaningful p95.
Q: Why is my residential proxy slower than a datacenter proxy?
Residential traffic routes through real consumer connections, which are slower and less uniform than hosting infrastructure. You trade some speed for far fewer blocks on protected sites.
Q: How much bandwidth does a proxy speed test use?
Very little if you test against a lightweight endpoint. A few hundred requests to a page that returns a few bytes use a tiny fraction of 1 GB, while testing a heavy real page costs more, so estimate with your actual page weight.
Summary
Test proxy speed with a baseline, a curl timing check and a Python benchmark that records success rate, median and p95 TTFB, counting block pages as failures. Compare providers on the same target and conditions, then convert the results to cost per successful request. You can run the whole process on BuyProxy for about $5.
Frequently Asked Questions
Q: What is a good proxy speed?+
There is no universal number, because speed depends on the target, the exit location and the proxy type. Compare candidates against each other on the same target, and judge the median and p95 together with success rate rather than any single figure.
Q: What is the difference between latency and TTFB?+
Latency usually means the network round-trip. Time to first byte includes that round-trip plus the time the target takes to start responding, so it is the more useful number for scraping.
Q: How many requests do I need for a reliable test?+
A few hundred per candidate is a practical minimum, repeated at different times of day. Fewer than about 20 successful samples is too few to calculate a meaningful p95.
Q: Why is my residential proxy slower than a datacenter proxy?+
Residential traffic routes through real consumer connections, which are slower and less uniform than hosting infrastructure. You trade some speed for far fewer blocks on protected sites.
Q: How much bandwidth does a proxy speed test use?+
Very little if you test against a lightweight endpoint. A few hundred requests to a page that returns a few bytes use a tiny fraction of 1 GB, while testing a heavy real page costs more, so estimate with your actual page weight.
Need residential proxies right now? Start free โ no card required.
Sign up free โWritten by
The BuyProxy Team
The BuyProxy team writes about residential proxy infrastructure, geo-targeting, session management, and best practices for scraping and data collection at scale.
Try residential proxies free
Rotating and sticky sessions, city-level geo-targeting, full HTTP/HTTPS/SOCKS5 support.