Proxies for Ad Verification: Seeing the Ad Your Audience Sees
Campaigns target a geography, a device and often a carrier, and the verification team sits in none of them. Matching the segment is the whole job.
Loading page content.
Research from one country is a study of one country labelled global. Each observation is accurate; the sample was drawn from wherever you were sitting.
Dana Whitfield
· updated 23 Aug 2026
Market research collected from one country is a study of one country that has been labelled global. The problem is not that the data is wrong — each observation is accurate. The problem is that the sample was drawn from wherever the researcher happened to be sitting.
Query a category from a London address and you get the UK assortment, UK pricing, UK promotions and UK competitors. Nothing signals that anything is missing. The German assortment, the local brands that dominate it, and the price points they hold are simply absent, and absence does not show up in a spreadsheet.
Four things vary by market in ways that change conclusions:
A study that misses the local competitive set is the expensive failure. It produces a confident market-share estimate built on a denominator that omits the actual leader.
The fix is unglamorous: choose the markets, choose the locations inside them, and keep both fixed across waves.
for cc in de fr it es pl nl; do
curl -x "http://user-country-$cc:[email protected]:8080" \
-s "https://retailer.example/category/coffee" \
-o "assortment-$cc.html"
doneRotating residential reaches 195 countries with city and ASN targeting at $2.65 per GB, falling to $1.59 at 500 GB. For research the country list should come from the markets in scope rather than the markets that are easy to reach, and it should be written down alongside the results.
Within a large market, add cities. Assortment and price vary by fulfilment region, so a single national sample is itself a convenience sample. Three or five deliberately chosen cities beat one arbitrary one, and the improvement is larger than most researchers expect.
Research is longitudinal. A wave in March compared against a wave in June is only meaningful if the instrument did not change.
The things that quietly change between waves, in the order they cause trouble:
Accept-Language header, which changes both currency and copy.Pin all five and record them with the data. Most unexplained movement between waves is instrument drift, and instrument drift is indistinguishable from a real market shift once the configuration has been forgotten.
An exit in Warsaw sending Accept-Language: en-US gets a translated storefront, English copy, and sometimes a different currency. That is not the Polish market — it is the Polish market as shown to an anglophone visitor, which is a different research question and rarely the one being asked.
LOCALE = {
"de": "de-DE,de;q=0.9",
"fr": "fr-FR,fr;q=0.9",
"pl": "pl-PL,pl;q=0.9",
}
headers = {"Accept-Language": LOCALE[country]}Match the header to the exit country unless you are deliberately studying the expatriate experience. If you are, record that as a separate arm rather than mixing it in.
Research volumes are modest compared with production scraping. A category sweep across six markets is thousands of requests, not millions, which changes the economics.
Start on rotating datacenter at $1.20 per GB with a 0.28s median response. Where the target does not weigh ASN reputation, it collects the same pages faster and cheaper. Move to residential for the domains that block it — and for anything where the content itself is personalised by network, since a datacenter address can be treated as a non-consumer and served a generic experience.
That last point is the one exception worth taking seriously in research. In price monitoring a soft-block is a failure you detect and retry. In research, a generic experience served to a datacenter IP is a plausible-looking page that silently is not what a consumer sees, and it enters the dataset as though it were.
Three checks separate a real localised page from a fallback:
Run all three as assertions rather than eyeballing a sample. Research datasets are large enough that manual inspection covers a rounding error of the rows.
Every row should carry where it came from: exit country, exit city, UTC timestamp, language header, and the proxy tier used. It costs a few columns and it is the difference between answering "why did Spain move?" from the data and answering it from memory.
For the wider workflow see market research, and how to avoid IP bans when web scraping for the collection mechanics.
Accept-Language to the exit country.Campaigns target a geography, a device and often a carrier, and the verification team sits in none of them. Matching the segment is the whole job.
Retailers do not have a price, they have a price per market and per fulfilment region. Ignore that and you collect one arbitrary sample and call it fact.
Counterfeit listings are not hidden, they are targeted, and a rights holder is the visitor they are withheld from. How to sweep the markets you protect.
Every snippet in this article points at the production gateway. Create an account, take the 50 MB residential trial, and swap in your credentials.
No card required for the trial. Cancel or downgrade at any time.