Docs menu
Docs

Proxy Management: Track Traffic and Costs per Project

To track proxy traffic and costs across several scraping projects and team members, label every request with a project and a person, log its bytes, and price each label's gigabytes at your tier rate. ProxyField's dashboard shows real-time usage and the gigabytes left for the account, and the rate runs from $2.95/GB for 1-9 GB down to $1.95/GB from 1,000 GB, so 38.2 GB of one project's traffic from a 100 GB purchase costs 38.2 × $2.49 = $95.12. Start with the Easy Trial: 1 GB for $2.95, no subscription, and the traffic never expires.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95

The method in 5 steps:

  1. One set of proxy lines per project. The dashboard's configurator generates as many lines as you need.
  2. One access path per person. Add each server's public IP to the allowlist, and remove it when someone leaves.
  3. Log every request, retries included: time, project, person, target, status, bytes. Or route every scraper through one metering gateway that does it for them.
  4. Price it. Project cost = project GB × your tier rate; cost per 1,000 successful pages = project cost ÷ successful pages × 1,000.
  5. Reconcile weekly with the dashboard's gigabytes left, and warn at 15% left.

Cost per project and person (an illustrative month: a 100 GB purchase at $2.49/GB, as the report script below prints it):

ProjectPersonGBCostSuccessful pagesPer 1,000 successful pages
price-monitoringalice38.2$95.1261,400$1.55
price-monitoringbob9.6$23.9015,900$1.50
real-estatebob21.5$53.5418,300$2.93
Total69.3$172.5695,600$1.80

The real-estate project costs almost twice as much per good page as price monitoring, which is the number to act on: heavier pages, more retries, or a target that blocks more often. The 30.7 GB left stays on the balance, because the traffic never expires.

Proxy management, more broadly, is keeping proxies usable and their cost under control: tracking traffic and cost, organizing credentials across devices and tools, rotating and replacing IPs, and watching error rates per target. With a rotating gateway the provider handles the IP side, so what remains is mostly usage, credentials and monitoring.

On this page 9 sections

What proxy management covers

TaskWith a rotating gateway (residential, mobile)With static IPs (ISP, dedicated datacenter)
Choosing IPsthe gateway picks an exit IP per request or per sessionyou assign IPs to tasks and accounts
Rotationbuilt in: per request, or sticky for 30 s to 36 hyour code cycles the list
Replacing bad IPsthe next request gets another IPyou swap the IP
Usage and costgigabytes used, at your tier's rate per GBnumber of IPs and their 30-day terms
Credentialsone login, or an IP allowlist, for every toola login per IP list
Monitoringstatus codes and block rates per targetthe same, plus each IP's health

Most teams start with the gateway and add static IPs only where one IP must stay tied to one account. How to set up each proxy type covers the setup side.

Track proxy traffic and costs across projects and team members

Treat the proxy bill like a shared utility: the dashboard gives the account total, and your own request log says which project and which person used it.

WhereWhat it gives you
ProxyField dashboardreal-time usage and the gigabytes left on the balance, for the whole account (one login per account, with no per-member logins or limits); this is the figure you pay by
Your request logproject, person, target, status, bytes and retries for every request, so you can split the total
Your tier rateturns gigabytes into dollars: $2.95/GB for 1-9 GB, $2.79 from 10 GB, $2.65 from 50 GB, $2.49 from 100 GB, $2.29 from 250 GB, $2.09 from 500 GB, $1.95 from 1,000 GB

The steps in detail:

  • Lines per project. Each project gets its own list with its own targeting, so a stray job shows up under its project.
  • Access per person. With allowlist entries on servers, nobody needs the account password. The method does not rely on sub-users: the person is a label in your log or your gateway.
  • What to log. One row per attempt: time, project, person, target domain, country, status, bytes, attempt number, seconds.
  • Two numbers per project: cost per successful page = project cost ÷ successful pages, and cost per usable record = project cost ÷ records you could actually use. Retries count: 1,000 good pages plus 250 failed attempts of the same size cost 1,250 page loads, so each good page costs 25% more.
  • Reconciling. Note the gigabytes left in the dashboard, compare the week's drop with your log's total, and share the dashboard's figure out by each project's share of the logged bytes. Your log is an estimate and the dashboard's figure is the one you pay by. The Python logger below counts response bodies and headers, not TLS handshakes, so expect a small gap; a large gap usually means another tool uses the same login.

What to look for in a provider's dashboard

FeatureWhy it matters for several projectsWith ProxyField today
Separate proxy lines or sub-users per projectusage can be told apart at the sourcethe configurator generates as many lines as you need; one login per account, with no per-member logins or limits
Live usage and balanceyou see the burn rate before the balance runs outreal-time usage and the gigabytes left
Spend or traffic caps per projecta runaway job cannot eat the team's balanceenforced in your own code or in a metering gateway, as below; a warning at 15% left
Usage exportyour log can be checked against the billyour own request log (CSV) is the export; reconcile it with the dashboard weekly
What counts as billed trafficupload, download, failed requestsboth directions (upload and download), including a site's error responses; a connection the gateway refuses (407, 402, 502) costs nothing
Access without sharing a passwordpeople can leave without a password changeIP allowlist entries per server, or the login

Budgets. There is no monthly plan to cap: the balance is prepaid and never expires, so a project's budget is the gigabytes you assign to it. Your code enforces it, as in the script below, and stops the job when the project reaches its share. What the meter counts, by direction and for failed requests: both directions (upload and download), including a site's error responses; a connection the gateway refuses (407, 402, 502) costs nothing

A request logger with per-project budgets (Python)

Python
import csv, time, requests
from urllib.parse import urlparse

BUDGET_GB = {"price-monitoring": 40, "real-estate": 25}   # GB assigned to each project
used = {}                                                 # bytes per project in this run

def fetch(url, project, user, country="us", retries=2):
    proxy = f"http://<login>-country-{country}:<password>@gate.proxyfield.io:7000"
    for attempt in range(retries + 1):
        if used.get(project, 0) / 1e9 >= BUDGET_GB[project]:
            raise RuntimeError(f"{project}: budget of {BUDGET_GB[project]} GB reached")
        start = time.time()
        try:
            r = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30)
            size = len(r.content) + sum(len(k) + len(v) + 4 for k, v in r.headers.items())
            status = r.status_code
        except requests.RequestException:
            r, size, status = None, 0, "error"
        used[project] = used.get(project, 0) + size
        with open("proxy-usage.csv", "a", newline="") as f:
            csv.writer(f).writerow([time.strftime("%Y-%m-%d %H:%M:%S"), project, user,
                                    urlparse(url).hostname, country, status, size, attempt,
                                    round(time.time() - start, 2)])
        if status == 200:
            return r
        time.sleep(2 ** attempt)   # back off, then retry on a new IP
    return None

r = fetch("https://example.com/", project="price-monitoring", user="alice")

And the monthly report, cost per project and person:

Python
import csv
from collections import defaultdict

RATE = 2.49   # your tier's $/GB, here a 100-249 GB purchase
gb, ok = defaultdict(float), defaultdict(int)
for ts, project, user, host, country, status, size, attempt, secs in csv.reader(open("proxy-usage.csv")):
    gb[project, user] += int(size) / 1e9
    ok[project, user] += status == "200"
for key in sorted(gb):
    cost = gb[key] * RATE
    print(*key, f"{gb[key]:.3f} GB", f"${cost:.2f}",
          f"${cost / max(ok[key], 1) * 1000:.2f} per 1,000 successful pages")

It prints one row per project and person, as in the cost table at the top of this page. The logger uses the Python requests library and the standard csv module. len(r.content) is the decompressed body, so the log is an upper estimate when a site compresses its pages, and failed connections log 0 bytes; the dashboard's count is the billed one. Load the CSV at start-up if a budget must carry over between runs.

Alert before the traffic runs out

Warn the team when 15% of a purchase is left, so nobody finds out from a failed job. Two ways, both with what the dashboard shows today (real-time usage and the gigabytes left):

  1. Weekly, by hand: read the gigabytes left in the dashboard and compare it with 15% of what you bought (15 GB of a 100 GB purchase).
  2. Daily, from your log: gigabytes left ≈ purchased GB − logged GB. Add this to the report script:
Python
PURCHASED_GB = 100   # the purchase the team draws on
left = PURCHASED_GB - sum(gb.values())
print(f"about {left:.1f} GB left of {PURCHASED_GB} GB")
if left < 0.15 * PURCHASED_GB:
    print("WARNING: under 15% left: check the dashboard and buy more before jobs stop")

In the month above, 100 − 69.3 = 30.7 GB is left, so no warning yet. Run the script from cron and send its output to your team's chat or email. Your log is an estimate, so trust the dashboard's figure when the two differ.

Put one metering gateway in front of your scrapers

When every scraper does its own logging, the budget logic lives in every codebase. A small local gateway does it in one place: scrapers connect to it with <project>.<person> as the proxy username, and it attaches the ProxyField credentials and targeting for that project, counts the bytes in both directions, refuses projects over budget and writes one CSV row per connection.

Python
# meter.py: one local entry point for every scraper (Python 3.8+, standard library only)
# Scrapers use the proxy http://<project>.<person>:x@<meter host>:8899
import asyncio, base64, csv, time

HOST, PORT = "127.0.0.1", 8899            # an internal address if scrapers run on other machines
UPSTREAM = ("gate.proxyfield.io", 7000)
LOGIN, PASSWORD = "<login>", "<password>"
PROJECTS = {"price-monitoring": {"gb": 40, "target": "-country-us"},
            "real-estate": {"gb": 25, "target": "-country-us-city-new_york"}}
used = {}                                 # bytes per project since start-up

async def pipe(reader, writer, count, key):
    try:
        while True:
            data = await reader.read(65536)
            if not data:
                break
            count[key] += len(data)
            writer.write(data)
            await writer.drain()
    except OSError:
        pass
    finally:
        writer.close()

async def handle(c_reader, c_writer):
    try:
        head = (await c_reader.readuntil(b"\r\n\r\n")).decode("latin-1").split("\r\n")
        method, target = head[0].split(" ")[:2]
        auth = next(l.split(":", 1)[1].split()[-1] for l in head
                    if l.lower().startswith("proxy-authorization:"))
        project, person = base64.b64decode(auth).decode().split(":")[0].split(".", 1)
    except Exception:
        method = project = person = None
    p = PROJECTS.get(project)
    if method != "CONNECT" or p is None or used.get(project, 0) >= p["gb"] * 1e9:
        c_writer.write(b"HTTP/1.1 403 Forbidden\r\n\r\n")   # the meter's own refusal
        c_writer.close()
        return
    u_reader, u_writer = await asyncio.open_connection(*UPSTREAM)
    cred = base64.b64encode(f"{LOGIN}{p['target']}:{PASSWORD}".encode()).decode()
    u_writer.write(f"CONNECT {target} HTTP/1.1\r\nHost: {target}\r\n"
                   f"Proxy-Authorization: Basic {cred}\r\n\r\n".encode())
    count, start = {"up": 0, "down": 0}, time.time()
    await asyncio.gather(pipe(c_reader, u_writer, count, "up"), pipe(u_reader, c_writer, count, "down"))
    used[project] = used.get(project, 0) + count["up"] + count["down"]
    with open("meter.csv", "a", newline="") as f:
        csv.writer(f).writerow([time.strftime("%Y-%m-%d %H:%M:%S"), project, person, target,
                                count["up"], count["down"], round(time.time() - start, 1)])

async def main():
    server = await asyncio.start_server(handle, HOST, PORT)
    async with server:
        await server.serve_forever()

asyncio.run(main())

A scraper then needs only its label, for example proxies={"https": "http://price-monitoring.alice:[email protected]:8899"} in Python requests. What it does and does not do:

  • HTTPS stays encrypted. The meter relays the CONNECT tunnel as bytes and never decrypts it, as ProxyField's gateway does not, so it counts every byte on the wire, TLS handshakes included, but cannot see URLs inside the tunnel; the target host and port are in the CSV.
  • The budget is checked when each connection opens, so a long-lived connection can run past it by its own size.
  • Plain http:// targets are refused (they arrive without CONNECT); send them straight to gate.proxyfield.io:7000 or extend the handler.
  • The label is not a password. Bind the meter to an internal address and allow port 8899 only from your scraper hosts.

A decrypting proxy such as mitmproxy can log full URLs and status codes per request instead, but every client must then trust its certificate authority.

What 1,000 pages cost

Page size through the proxyGB per 1,000 pagesAt $2.95/GB (1-9 GB)At $2.49/GB (100 GB)At $1.95/GB (1,000 GB)
100 KB (HTML only)0.1$0.30$0.25$0.20
1 MB (HTML with some assets)1$2.95$2.49$1.95
3 MB (full page in a browser)3$8.85$7.47$5.85

The tier rate applies to the whole purchase, so the team's combined purchase sets the rate every project pays. To size a project before you buy, measure 10-20 real pages as below and multiply by your monthly requests, with a margin for retries. Account questions on billing and access: help.

Measure bytes per page before you scale

What uses traffic is everything that passes through the proxy: HTML, images, scripts, fonts, video, plus retries and redirects. A page that weighs 3 MB in a browser costs about 3 MB through the proxy. In a headless browser, the biggest saving is to block what you don't need, and Playwright reports the bytes it received:

Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://gate.proxyfield.io:7000",
                                       "username": "<login>-country-us-city-new_york", "password": "<password>"})
    page = browser.new_page()
    page.route("**/*", lambda route: route.abort()
               if route.request.resource_type in ("image", "media", "font") else route.continue_())
    finished = []
    page.on("requestfinished", finished.append)
    page.goto("https://example.com/")
    print(sum(req.sizes()["responseBodySize"] for req in finished), "body bytes received")
    browser.close()

request.sizes() is part of Playwright's API (Playwright: Request.sizes). More savings on scraping projects: Playwright with proxies.

Use one proxy account across devices, tools and sites

One ProxyField account works everywhere at once. The gateway allows unlimited concurrent threads, so the same login can run in a scraper, a browser, an antidetect browser and a phone at the same time, and all of them draw on one balance.

  • With a username and password: paste the same credentials into every tool. Change the targeting per tool in the username, as in <login>-country-us-city-new_york for a New York IP.
  • With the IP allowlist: add the public IP of each place you connect from, and connect to the port you set up in the dashboard, where the location and session are set. Devices behind one home router share one public IP, so one entry covers them all; a laptop that moves between networks needs the login instead.
  • Per site or task: use rotation for public pages and a sticky session per logged-in account. Managing your own or your clients' accounts through ProxyField is allowed, one sticky or ISP IP per account.

Device and tool steps are in how to set up a proxy, and credentials in proxy authentication.

Organize sessions and credentials

  • Name sessions by account. Give each logged-in account its own sticky session, so it keeps its IP for the time you set (30 s to 36 h); use a dedicated ISP IP when an account needs one IP for weeks. The full line is gate.proxyfield.io:7000:<login>-country-us-region-new_york-city-new_york-session-he9f2qga-ttl-600:<password>: -session-<id> names the session and -ttl-<seconds> sets its time, 30 to 129,600 seconds, 20 minutes by default. Every part after the login is optional.
  • Keep credentials in one place, a secret store or environment variables, so a password change is one edit.
  • HTTP, HTTPS and SOCKS5 all run on gate.proxyfield.io:7000 with the same username and password, so one stored credential serves every tool.

Monitor proxy health and your scraping jobs

The proxy rarely fails alone; the target site pushes back. Log these per target site, not just in total (the codes below are their standard HTTP meanings):

SignalWhat it tells youWhat to do
Share of 403 and 429 responsesthe site is blocking or rate-limitingslow down, fix headers, then change the IP type (403, 429)
407 responsesthe proxy wants valid credentialscheck the login or allowlist (407)
Timeouts and 502/504a slow route or an overloaded targetretry on a new IP with back-off (502 and 504)
Response timelatency of the routecompare by country; retry slow requests
Bytes and retries per successful pagetraffic costblock heavy resources; stop retrying targets that block every IP

Retry each failed request a few times on a fresh IP, with growing delays, and stop retrying a target that blocks every IP; ProxyField's network already moves traffic to the next node if one slows down. If you use several providers, run the same checks with a provider label so you can compare them on your own targets. The full list of errors is on all proxy and HTTP errors.

Proxy management tools: build or buy

A home-made rotator over a list of IPs is simple to start and hard to keep healthy: you track bans, cool-downs, locations and retries yourself. A rotating gateway moves that work to the provider and leaves you with one address. Desktop proxy managers and browser proxy switchers help on the user side, switching profiles in one click. If you would rather pay per page than per GB, ProxyField's Web Scraping API is in development: it is designed to bill successful results only, $0.50 per 1,000 over plain HTTP; see the API documentation and Contact sales.

Keep proxy costs predictable

  • Traffic never expires and there is no subscription: buy what you need and spend it over months.
  • The tier rate applies to the whole purchase, so one larger purchase costs less per GB than many small ones: $2.95/GB for 1-9 GB, $2.49 from 100 GB, $1.95 from 1,000 GB. From 1 TB, the price is individual: contact sales. See pricing.
  • All purchases are final, so measure a sample of your pages first; the Easy Trial (1 GB for $2.95) is enough to estimate a project.

Proxy Management FAQ

How can I track proxy traffic and costs across several scraping projects and team members?

ProxyField's dashboard shows real-time usage and the gigabytes left for the account; you split it by labeling every request in your code with a project and a person and logging its bytes. Each label's gigabytes times your tier rate, $2.95/GB for 1-9 GB down to $1.95/GB from 1,000 GB, is its cost: 38.2 GB from a 100 GB purchase at $2.49/GB is $95.12, and over 61,400 good pages that is $1.55 per 1,000. Give each project its own proxy lines, cap each project's gigabytes in your code, and reconcile your log with the dashboard once a week.

How do I get a warning before my proxy traffic runs out?

ProxyField's dashboard shows the gigabytes left in real time; check it weekly against 15% of your purchase, or compute purchased GB minus logged GB daily from your own request log. The report script on this page prints a warning under 15%, for example below 15 GB of a 100 GB purchase.

How do I count proxy traffic for HTTPS requests without decrypting them?

Count the bytes of the CONNECT tunnel in both directions in a small gateway of your own, as meter.py on this page does: it sees the target host, the person and the project, not the URLs. Decrypt only if you need per-URL logs, with a tool such as mitmproxy whose certificate every client must trust.

What is proxy management?

Tracking your traffic and cost, organizing credentials and IPs across tools, rotating and replacing IPs, and watching error rates per target. With a rotating gateway the provider handles the IP side, so what remains is targeting, sessions and usage.

How do I calculate the cost per successful page?

Divide the proxy cost of a job by the pages that came back usable: at $2.49/GB, 1 GB spent on 800 good pages is about $3.11 per 1,000 good pages. Failed attempts and retries use traffic too, so a lower block rate cuts this figure more than a lower price per GB.

Can I set a traffic budget for each project?

Yes, in your own code: assign each project a number of gigabytes and stop its jobs when its logged bytes reach it, as the logger on this page does. ProxyField's balance is prepaid and never expires, so an unused project budget stays on the balance.

What is a proxy account?

It is your account with a proxy provider: it holds your balance, your proxy credentials and IP allowlist, and your usage. With ProxyField, an email address is all an account needs, and one balance covers residential and mobile proxies.

Can I track my proxy usage?

Yes. ProxyField's dashboard shows real-time usage and the gigabytes you have left. To estimate a project before scaling, measure the bytes per page in your own code on a small sample.

How do I manage and monitor my proxies?

Keep credentials in one place, generate proxy lines per project, and log status codes, response times and bytes per target site. Watch the share of 403, 429 and 407 responses: each points to a different fix.

Can I use the same proxy on multiple devices?

Yes. ProxyField allows unlimited concurrent threads, so one login works on several devices at once, all drawing on one balance. With the IP allowlist instead, add the public IP of each network you connect from.

Show 7 more questionsShow fewer questions

Can I use one proxy account across several tools or websites?

Yes, one account serves every tool and site. Set different targeting per tool in the username, rotation for public pages and a sticky session for each logged-in account.

Can I add multiple proxies in a tool?

Most scrapers, antidetect browsers and proxy switchers accept a list, one proxy per line, usually as host:port:user:pass. With a rotating gateway you often need only one line, because the gateway changes the IP for you.

How do I monitor proxy health across several providers?

Send the same test requests through each provider to your own target sites and log success rate, status codes, response time and bytes per request with a provider label. Compare them on your targets, not on a generic test page.

How do I measure bandwidth usage with Playwright?

Collect the finished requests and add up request.sizes()["responseBodySize"], or compare the dashboard before and after a test run. Blocking images, media and fonts with page.route usually cuts the traffic the most.

Can I integrate proxies with third-party tools?

Yes: any tool that accepts an HTTP or HTTPS proxy works with ProxyField's gateway, from browsers and antidetect browsers to Scrapy, Playwright, curl and Postman. SOCKS5 runs on the same gate.proxyfield.io:7000 with the same username and password; tools that can't send a login can use the IP allowlist and connect to the port you set up in the dashboard.

When does it make sense to use an off-the-shelf proxy management tool?

When you juggle many static IPs or several providers and spend more time on bans, cool-downs and retries than on your project. With a rotating gateway, a simple retry policy and per-target logging are often enough.

What features does a proxy management solution need?

Rotation and sticky sessions, location targeting, retries with back-off, per-target logging of status codes and latency, usage and cost tracking per project, and safe storage of credentials. A rotating gateway covers the first three on the provider's side.

Easy Trial: 1 GB for $2.95.

Try for the price of 1 GB, no subscription, traffic never expires.