What does ad verification check?
Geo-targeting
Ads appear in the countries, regions and cities that were bought, and not elsewhere.
Placement and brand safety
Ads run on suitable sites and next to suitable content.
Creative and language
The right creative, language and size render for each market.
Landing pages
Clicks lead to the approved page, with no unexpected or malicious redirects.
Partner compliance
Affiliates and partners show reviewers and real users the same, approved content.
Market research
See which public ads run in a market you are planning to enter.
Which proxy type should you use?
| Check | Proxy type | Why |
|---|---|---|
| Web display and search ads by country or city | Rotating residential | Household IPs in the target location |
| Mobile web and carrier-targeted campaigns | Mobile | Real carrier IPs; target a carrier by ASN |
| Following one visitor through redirects | Residential with a sticky session | The same IP for every hop |
| Frequent checks of your own landing pages | ISP | A stable IP in each country |
Residential proxies start at $2.42 per GB, mobile proxies at $4.84 per GB.
How to verify a campaign
Write down what was bought
Locations, carriers, devices, dates and placements, from the insertion order or campaign settings.
Load placements from each location
Use a clean browser behind a proxy targeted to each country, city or carrier.
Capture evidence
Save a screenshot, the creative, the time, and the exit IP and location for every check.
Follow the landing path
Use a sticky session to follow each redirect from the ad to the landing page, and record every hop.
Report discrepancies
Compare what you saw with what was bought, and share the evidence with the publisher or network.
Python example: follow a landing page's redirects from one country
import requests
# A UK IP that stays the same for about 30 minutes: __cr.gb;sessid.adcheck1
PROXY = "http://USERNAME__cr.gb;sessid.adcheck1:PASSWORD@HOST:PORT"
proxies = {"http": PROXY, "https": PROXY}
response = requests.get(
"https://example.com/landing?campaign=spring",
proxies=proxies,
timeout=30,
)
for hop in [*response.history, response]:
print(hop.status_code, hop.url)
print("Checked from", requests.get("https://api.ipify.org", proxies=proxies, timeout=30).text)This follows HTTP redirects. Pages that redirect with JavaScript need a headless browser such as Playwright, configured with the same proxy.
Verify ads, never inflate them
- Never click ads or generate impressions to change campaign numbers, on your own campaigns or anyone else's. Ad fraud is prohibited on FuseProxy.
- Do not cloak. Do not use proxies to show ad reviewers different content from real users, or to avoid an ad platform's review.
- Stay in scope. Verify campaigns you run, buy or are authorised to audit. For other advertisers, only observe ads that are publicly shown.
- Keep samples small. A few page loads per location and placement are enough to verify delivery.
- Leave out personal data. Capture ads and pages, not information about the people who visit them.
The FuseProxy acceptable use policy lists what is not allowed on the network.