Log in Sign up
Traffic arbitrage

Traffic arbitrage proxies: your funnel as the geo sees it

A media buyer needs to open the landing, the offer page and the competitor ad from the geo where the traffic goes, and to keep ad cabinets on a steady address. Resi Prime gives a home IP with a choice of country and city, while regional IPv4 packages cover bulk link checks, spy tools and trackers.

  • Resi Prime: city-level geo
  • sessions from 3 minutes to 24 hours
  • packages for link checks
Desk with three monitors showing advertising dashboards
Traffic arbitrage

What arbitrage work needs and what the package gives

Half of the job is looking at pages through someone else's eyes. The other half is doing it a thousand times an hour.

What the task needsWhat the plans give

Open the funnel from the target country

Regional pools; filter the CSV export by the country column for exact countries

Check hundreds of links and trackers per hour

1,000 threads on Europe #8, 2,000 on Europe #9

Feed spy tools and parsers of ad networks

Thousands of addresses per list, refresh every 10 minutes, traffic not counted

A steady IP for an ad cabinet

On Resi Prime the session term runs from 3 minutes to 24 hours, with the city and ISP of your choice

Residential proxies

Work out your Resi Prime traffic

The price per GB drops with the order size, and traffic lasts three months. Link checks and spy tools cost less on an unlimited package from the block below.

Residential proxy price per 1 GB by order size
Order sizeResi CoreResi Prime
1 GB+$0.85$2.29
10 GB+$0.79$2.09
50 GB+save 15%$0.72$1.95
100 GB+$0.65$1.75
500 GB+$0.57$1.55
1000 GB+$0.49$1.39

Prices are in US dollars per 1 GB. You buy whole gigabytes, starting with a single one.

Pool

  • 30M+ home IPs in 220 countries
  • Geo down to the city, plus ISP, ASN and device type
  • A session lasting 3 minutes to 24 hours, or a new IP on every request
  • SOCKS5 with UDP and up to 5,000 lines at once
Total
$97.50
Per 1 GB
$1.95
Tier
50–99 GB

You save 15% ($17.00) against the 1 GB+ price

Add 50 GB and every gigabyte drops to $1.75

Buy this amount

You can use the gigabytes for 3 months from the purchase date; whatever is left after that is written off.

About residential

Three steps to a checked funnel

Pick the region of the offer

Europe for EU and UK offers, CIS for Russian-speaking markets, China for Chinese networks, World MIX for the US, LATAM and Asia.

Filter to the exact country

Keep the CSV rows whose country column is the geo you need. Point your link checker, cloaking test or spy parser at that list.

Run checks in bulk

Landing status, redirect chains, tracker pixels: each check from a different address, with the list refreshed every 10 minutes.

Ready landing checker: follow every redirect by geo

Put your links in links.txt and pick COUNTRY. The script opens each URL through a proxy of that country, follows the redirect chain by hand and writes the final address, status and hop count. Check the pool geo with the validator on the proxy checker.

CSV export link from your dashboard
open the funnel as a visitor from this country
one URL per line
url;final_url;status;hops;proxy is written here
Values come from the form; copy or download the ready file.
Show the script code
Python 3.8+ · arbitrage.py
#!/usr/bin/env python3
"""Landing and redirect checker for Advanced.name proxies.

Opens each URL through a proxy from the target country, follows the redirect
chain by hand and reports the final address, HTTP status and the whole hop path.
Use it to see where a funnel really lands from a given geo before you buy traffic.
Standard library only. Run: python3 landings.py
"""

# ================================ CONFIG ====================================
CSV_URL = "https://get.advanced.name/YOUR_LIST_ID.csv"  # CSV export link from your dashboard
COUNTRY = "DE"          # open the funnel as a visitor from this country
MIN_SPEED = 3
LINKS_FILE = "links.txt"                 # one URL per line
OUT_FILE = "landings.csv"                # url;final_url;status;hops;proxy is written here
MAX_HOPS = 10
THREADS = 30
TIMEOUT = 20
# ============================================================================

import csv
import io
import sys
import threading
import urllib.error
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
from urllib.parse import urljoin

COL_IP, COL_PORT, COL_COUNTRY, COL_SPEED = 0, 1, 2, 3
UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1 Mobile Safari/604.1"


class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, *args):
        return None            # we follow redirects ourselves to record every hop


def load_proxies():
    raw = urllib.request.urlopen(CSV_URL, timeout=30).read().decode("utf-8", "replace")
    pool = []
    for row in csv.reader(io.StringIO(raw), delimiter=";"):
        if len(row) <= COL_SPEED or not row[COL_PORT].strip().isdigit():
            continue
        if COUNTRY and row[COL_COUNTRY].strip().upper() != COUNTRY.upper():
            continue
        if int(row[COL_SPEED] or 0) < MIN_SPEED:
            continue
        pool.append(row[COL_IP].strip() + ":" + row[COL_PORT].strip())
    return pool


def opener(proxy):
    return urllib.request.build_opener(
        NoRedirect, urllib.request.ProxyHandler({"http": "http://" + proxy, "https": "http://" + proxy}))


def trace(url, proxy):
    hops = 0
    op = opener(proxy)
    while hops < MAX_HOPS:
        req = urllib.request.Request(url, headers={"User-Agent": UA, "Accept-Language": COUNTRY.lower()})
        try:
            resp = op.open(req, timeout=TIMEOUT)
        except urllib.error.HTTPError as err:
            resp = err
        status = resp.getcode()
        location = resp.headers.get("Location")
        if location and 300 <= status < 400:
            url = urljoin(url, location)
            hops += 1
            continue
        return url, status, hops
    return url, 599, hops


def main():
    proxies = load_proxies()
    if not proxies:
        sys.exit("No proxies for COUNTRY=%r." % COUNTRY)
    with open(LINKS_FILE, encoding="utf-8") as fh:
        links = [line.strip() for line in fh if line.strip() and not line.startswith("#")]
    print("proxies: %d (%s), links: %d" % (len(proxies), COUNTRY, len(links)))

    lock = threading.Lock()
    counter = {"i": 0}
    rows = []

    def check(url):
        with lock:
            proxy = proxies[counter["i"] % len(proxies)]
            counter["i"] += 1
        try:
            final, status, hops = trace(url, proxy)
        except Exception as exc:
            final, status, hops = "err: %s" % exc.__class__.__name__, 0, 0
        return url, final, status, hops, proxy

    with ThreadPoolExecutor(max_workers=THREADS) as pool:
        for fut in as_completed([pool.submit(check, u) for u in links]):
            row = fut.result()
            rows.append(row)
            print("%-3s hops=%d  %s -> %s" % (row[2], row[3], row[0][:40], str(row[1])[:50]))

    with open(OUT_FILE, "w", encoding="utf-8", newline="") as out:
        writer = csv.writer(out, delimiter=";")
        writer.writerow(["url", "final_url", "status", "hops", "proxy"])
        writer.writerows(rows)
    print("written %s" % OUT_FILE)


if __name__ == "__main__":
    main()
Setup

Checking funnels and trackers by geo

Landings, cloaking and spy tools

Point your link checker, cloaking test or spy-tool parser at a per-country list and open every landing from the geo of the campaign before the first dollar. The script above follows the whole redirect chain, so you see where a funnel really lands, not just its first hop.

Send the language header with the regional IP; some networks decide by header first and IP second, and a redirect to the wrong language wastes the test.

Trackers and ad tools

Keitaro and other trackers accept a proxy per stream in the traffic-source settings — paste ip:port and pick SOCKS5. Keep a separate list per geo so mixed addresses do not mix your screenshots.

Confirm the pool geo with the validator on the proxy checker; for a small test the free proxy list is enough.

In practice

The desk of a media buyer

Four habits of a careful media buyer

  1. Check every landing from the geo of the campaign before the first dollar is spent; a redirect to the wrong language wastes the whole test.
  2. Send the language header with the regional IP; some networks decide by header first and IP second.
  3. Keep separate lists per geo and per tool: mixed lists produce mixed screenshots.
  4. These are shared rotating packages. Run ad cabinets and antidetect profiles through Resi Prime residential proxies, and keep the packages for checks, scrapers and spy tools.

Per-GB plans for this task

FAQ

Questions about this task

Can I open the landing as a German user?
Yes. Take the Europe pool and keep the CSV rows with country DE; every address in that list is German.
Are these proxies for ad account management?
No. Packages are shared rotating addresses for checks, parsing and spy tools. Ad cabinets and antidetect browsers need Resi Prime: a home IP of their own per profile for up to 24 hours.
How many links can I check per hour?
With 1,000 threads on Europe #8 a checker handles tens of thousands of links an hour; the limit is the target's tolerance, not the pool.
Is there a test?
One free hour on any unlimited package with full threads, enough to run your link checker across all geos. Resi Prime is tried with a 1 GB purchase, and the traffic lasts three months.
Can I pick a city to check the geo?
Yes, on Resi Prime: country, region, city, ISP and ASN go into the connection string. Unlimited packages stop at the country, filtered by the column in the CSV export.
Plans for this task

What to take for traffic arbitrage

Ad cabinets and antidetect profiles live on Resi Prime. Link checks, cloaking tests and spy tools cost less on an unlimited package.

Resi Prime

Cabinets and antidetectBest fit

30M+ IPs · 220 countries · no thread limit

Each profile gets its own home IP: city, ISP and device type to match the campaign geo, with a session lasting 3 minutes to 24 hours. SOCKS5 with UDP suits antidetect browsers.

from $1.39 per GB1 GB for $2.29

Resi Core

Landings from the geo

2M+ IPs · 200+ countries · no thread limit

Open the landing and the offer from a home IP in the right country when the network cuts addresses from lists. A new address on every request, with the country set in the string.

from $0.49 per GB1 GB for $0.85

Unlimited proxies

Spy tools and link checkers

Package #8 · Europe · 3,000 IP · 1,000 threads

European addresses with no traffic meter. Enough for thousands of link and tracker checks an hour and for spy tool parsers.

$277 per monthor $1.70 per hour

Unlimited packages do not suit ad cabinets: their addresses are shared and change with the list, and a cabinet needs one steady IP.

Check the funnel from every geo tonight

Take Resi Prime for cabinets and a regional package for checks, then run the checker on the live list.

Pricing Grab a free hour