Proxies for Competitor Ad Research Across Countries
Competitor ad research by country: when ad libraries are enough, when you need proxies, which exit type fits each capture, and how to size a multi-market setup.

Competitor ad research across markets starts with the free, official ad libraries, and proxies only earn their cost for what those libraries do not show: which queries trigger a rival's search ads in a given country, where those ads rank, and what the landing page actually offers to a visitor from that market. Buy proxies for those three captures, not for browsing ad libraries you can open from anywhere.
This is a different job from verifying your own campaigns. Ad verification checks that your ads render in the right places and are not defrauded. Competitor research builds a dataset of someone else's creative, offers and landing pages, market by market, over time. The tooling overlaps, but the sizing, the data model and the ethics do not.
The decision in one table
| What you want to know | Best source | Proxy needed? |
|---|---|---|
| Every creative a competitor is running on Facebook and Instagram in the EU | Meta Ad Library | No |
| Which search, display and YouTube creatives a verified advertiser has run, by region | Google Ads Transparency Center | No |
| Which of your target keywords show a competitor's search ad in Germany today | Live search results from a German exit | Yes |
| Where that ad ranks against other advertisers, and which extensions it shows | Live search results, repeated over time | Yes |
| The price, promo code and currency on the landing page for French visitors | Landing page fetched from a French exit | Yes |
| Whether the landing page differs between the US and Brazil | Same URL, two exits, diffed | Yes |
| A competitor's total ad spend | Nobody outside the ad platform has this | Proxies do not help |
The last row saves teams money. Proxies show you what a visitor in a market sees. They never reveal budgets, bids or conversion rates, and any tool claiming exact competitor spend is estimating.
What the ad libraries already give you
Start here, because it is free, official and does not depend on the traffic you send.
Meta Ad Library. Searchable by advertiser or keyword and filterable by country. Meta's own transparency pages describe the Ad Library API as covering ads about social issues, elections or politics, plus ads delivered in the EU. For commercial ads outside the EU, you browse the library rather than query an API. Either way, the library shows creatives, not where they rank or what the landing page offers.
Google Ads Transparency Center. Lets you look up a verified advertiser and filter its ads by region, format and date, covering search, display and YouTube creatives. It tells you that a text ad ran in a region. It does not tell you which query triggered it, its position, or how often it appeared.
LinkedIn and TikTok. Both publish ad libraries, with coverage that varies by region and ad type. Check each platform's own page for what is included before relying on it.
Two things to do before buying any proxy:
- Build your competitor list from these libraries first. They reveal advertiser entities and brands you did not know were bidding in a market.
- Record the creative IDs and first-seen dates you find, so live captures later can be matched back to a known creative instead of treated as new every time.
The libraries answer "what are they running". The rest of this guide is about "where, against which queries, and sending people to what".
Scraping at scale? Skip the blocks.
Fast, unblockable datacentre proxies with unlimited bandwidth.
The three gaps that need a local exit
Query coverage
Search ads are auctioned per query and per location. The only way to learn that a rival bids on "payroll software Netherlands" but not "salary software Netherlands" is to run those searches from a Dutch exit and record which advertisers appear. Libraries do not publish keyword lists.
Position and share over time
One check tells you an ad appeared. Forty checks over two weeks can show a pattern, such as an ad that holds position one on weekday mornings and disappears at weekends, which is a budget-pacing clue. This is the data that justifies a proxy budget, because it needs many repeated requests from the same market.
Landing page as served locally
Landing pages change by visitor country: currency, VAT display, shipping promises, promo banners, even whether a free trial exists. Geo-IP personalisation is common and invisible from your own office. A page fetched from a local exit, saved with a timestamp, is the only reliable record. Our guide to geo-targeting in proxies covers how the exit location is determined.
Which proxy type for which capture
Different captures have different sensitivity to the IP type. Be realistic about each.
| Capture | Sensitivity to IP type | Practical choice |
|---|---|---|
| Landing page HTML and screenshots | Low to moderate. Most marketing sites serve datacenter traffic normally | Datacenter exits in the target country |
| Search result pages with ads | High. Search engines challenge automated traffic and may show fewer ads to it | A SERP API, or residential exits at modest volume |
| Shopping and marketplace sponsored listings | Moderate to high, depends on the marketplace's bot defences | Test datacenter first, escalate only on failure |
| Ad library pages | Low, and usually unnecessary | No proxy, or your normal connection |
| Display ads on publisher sites | Moderate, ad servers filter known hosting ranges | Residential for placement checks |
Search is the honest problem area. Search engines work hard to keep automated queries out, and an ad block rendered for a challenged or low-trust session may not match what a real user sees. If search ad coverage is your core metric, validate a sample of datacenter captures against manual checks from the same country before trusting them at scale. Our write-up on proxies for SERP scraping at scale goes deeper on the trade-offs.
Whatever the exit, control the rest of the request so that the IP is the only thing that says "Germany". Start every capture with no cookies, because a returning-visitor cookie from a previous market can pin the old currency. Send an Accept-Language header that matches the market, since many sites choose language from the header and currency from the IP, and a mismatch produces page variants no real visitor sees. Set the device explicitly and record it. And log the exit IP's resolved country with each capture, so a row that came back from the wrong location can be dropped instead of polluting the dataset.
Landing pages are the easy part, and usually the bulk of the traffic. Each creative might be seen in search a few times a day but leads to pages you want to snapshot in every market, with every variant. That is where cheap, high-throughput datacenter capacity is the right tool.
The data model worth collecting
Most competitor ad projects fail at analysis rather than collection, because the captures were never structured. Decide the schema before sending a single request.
| Field | Example | Why it matters |
|---|---|---|
| `captured_at` | 2026-09-17T08:15:00Z | Pacing and day-parting analysis |
| `market` | DE | Everything is compared within a market |
| `device` | mobile | Mobile and desktop auctions differ |
| `query` | lohnabrechnung software | Keyword coverage map |
| `advertiser_domain` | competitor display domain | Groups creatives by rival |
| `position` | 1 | Share of top positions |
| `headline`, `description` | as rendered | Messaging and offer tests |
| `landing_url` | final URL without tracking parameters | Joins ads to pages |
| `page_hash` | sha256 of normalised page text | Detects landing page changes cheaply |
| `offer_text` | "30 Tage kostenlos" | The field analysts actually read |
| `price_seen`, `currency` | 29.00 EUR | Cross-market price comparison |
| `screenshot_path` | object storage key | Evidence for stakeholders |
Two design notes. Strip tracking parameters from landing URLs before hashing, or every capture looks unique. And store the normalised page text, not just the hash, so a change can be explained, not merely detected. The same change-detection pattern is covered in how ecommerce companies use proxies for competitive intelligence.
Sizing a multi-market program
Size from the questions you want answered, not from a proxy plan. Here is an illustrative example with assumed inputs, not a customer benchmark.
Assumptions: 6 markets, 150 tracked queries per market, desktop and mobile, 3 search checks a day. About 400 distinct landing pages per market, each captured twice a day as HTML and once a day as a screenshot.
| Workload | Daily volume | Notes |
|---|---|---|
| Search checks | 6 x 150 x 2 devices x 3 = 5,400 | Highest block risk, spread across the day |
| Landing page HTML | 6 x 400 x 2 = 4,800 | Plain fetches, low risk |
| Landing page screenshots | 6 x 400 = 2,400 | Rendered, slower and heavier |
| **Total** | **12,600 requests a day** | About 378,000 a month |
The useful insight from sizing: concurrency, not IP count, is the constraint. 12,600 requests spread over 24 hours averages under one request every 7 seconds. Even with bursts at market opening hours and 10-second render times, a few dozen concurrent connections cover it. Throttle per target domain so you never send a competitor's site more than a handful of requests at once.
Cost splits along the same lines as the proxy-type table. Search checks are the expensive, fragile slice. Landing pages are the cheap, reliable bulk. Budget and monitor them separately.
Capturing landing pages per market with SparkProxy
SparkProxy sells datacenter proxies and a Scraping API. We do not sell residential or mobile proxies, so we are a fit for the landing page and screenshot slice, not for search ad capture where residential exits or a SERP-specialist API are the better tools. For scraping jobs, the SparkProxy Scraping API does offer residential exits through its premium_proxy option, which routes a request through a residential pool for 10 credits, or 25 with JavaScript rendering.
For multi-country landing page captures, the Scraping API is the simpler route because the country is a request parameter. country_code takes an ISO 3166-1 alpha-2 code and adds 5 credits. A plain fetch is 1 credit, a JavaScript render 5, and a screenshot 10, before the geo add-on.
import hashlib, re, requests
API = "https://scrape.sparkproxy.io/api/v1"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
def capture(url, market):
# Rendered Markdown text from a local exit: easy to diff and hash
r = requests.get(API, headers=HEADERS, timeout=120, params={
"url": url,
"render_js": "true",
"country_code": market, # e.g. "DE", "FR", "BR"
"format": "md",
"block_resources": "true", # skip images and fonts for the text pass
})
r.raise_for_status()
text = re.sub(r"\s+", " ", r.text).strip()
return {
"market": market,
"landing_url": url.split("?")[0],
"page_hash": hashlib.sha256(text.encode()).hexdigest(),
"text": text,
}
for market in ["DE", "FR", "BR"]:
row = capture("https://www.sparkproxy.io/pricing", market)
print(row["market"], row["page_hash"][:12], len(row["text"]))
Only take a screenshot when the text hash changes. That single rule cuts the most expensive request type by an order of magnitude on stable pages:
def screenshot(url, market, out_path):
r = requests.get(API, headers=HEADERS, timeout=180, params={
"url": url,
"country_code": market,
"format": "screenshot",
})
r.raise_for_status()
with open(out_path, "wb") as f:
f.write(r.content)
For high-volume plain fetches from US exits, the proxy plans are the cheaper meter. They run on gateway.sparkproxy.io, port 11000 for rotating HTTP and HTTPS, 11002 for sticky sessions and 13000 for SOCKS5, with USA and worldwide rotating pools. Plans are priced by concurrent threads with unlimited bandwidth, from Starter at $75/mo for 100 threads to Plus at $440/mo for 1,000.
# Rotating US or worldwide exit for bulk plain-HTML landing page fetches
curl -x http://USER:PASS@gateway.sparkproxy.io:11000 -s https://www.sparkproxy.io/pricing -o page.html
Rules that keep this research clean
Competitor research sits close to lines that matter. These are not optional.
- Never click a competitor's ad. Ad links in search results and on publisher sites are click-tracked, and an automated click costs the advertiser money. That is click fraud, regardless of intent. Reach the landing page through the final URL shown in the ad library or through the advertiser's own domain, never through the ad's redirect link.
- Do not generate fake impressions. Loading a display ad thousands of times inflates someone's costs. Sample placements, do not hammer them.
- Respect rate limits and robots rules on the sites you fetch. A handful of requests per page per market per day is research. Thousands is load. See our notes on ethical scraping and rate limiting.
- Do not log in to competitor accounts or gated areas. Public landing pages and public ad libraries only.
- Check the search engine's terms for automated queries. If search ad data is central to the business, a licensed SERP data provider is the cleaner route.
- Keep personal data out of your captures. Ads occasionally carry testimonials with names and photos. Store what you need for analysis and nothing more.
Turning captures into findings
Collection is only worth it if it changes a decision. The outputs marketing teams actually use:
- Keyword overlap map per market. Which of your tracked queries each competitor appears on, and how often. New entries week over week are the early-warning signal.
- Offer calendar. A timeline of
offer_textchanges per competitor per market. Promotions that run in one country two weeks before another are a common pattern and a planning gift. - Price and currency grid. The same plan's displayed price in each market, VAT included or not. Useful for your own localisation decisions, which is also the subject of our guide to proxies for localization testing.
- Landing page variant log. Every time a page hash changes, store a screenshot and a text diff. After a quarter, you have a record of what a competitor tested and what they kept.
- Top-position share. From repeated search checks, the fraction of checks where each advertiser held position one. Trend it rather than reading single days.
Treat every number as observed exposure from your exits, not ground truth. Personalisation, device and time of day all move what a real user sees.
Frequently asked questions
FAQ
Not for browsing the Meta Ad Library or Google Ads Transparency Center, which are free and open from anywhere. You need local exits for three things the libraries do not show: which queries trigger a competitor's search ads in a country, where those ads rank, and what the landing page offers to local visitors.
Yes for creatives, through the official ad libraries filtered by region. No for live search results and geo-personalised landing pages, which are served based on the visitor's IP location.
They are a good fit for landing page HTML and screenshots, which is usually most of the volume. Search result pages are more sensitive to automated traffic, so validate datacenter captures against manual checks or use a SERP data provider or residential exits for that slice.
Viewing public ads and public landing pages is ordinary market research in most jurisdictions. Clicking competitors' ads, generating fake impressions, accessing gated areas or ignoring a site's terms can create legal and ethical problems, so avoid all of them and get legal advice for your market.
For search ads, a few checks a day per market shows pacing patterns. For landing pages, once or twice a day is enough if you only take screenshots when the page text changes.
No. Proxies show what a visitor in a market sees, not budgets or bids. Spend figures from any third-party tool are estimates, apart from the spend data some ad libraries publish for political and social issue ads.
Get 20% off your first month
Premium datacentre proxies with unlimited bandwidth. Use the code at checkout.
Save up to 15% more on quarterly, half-yearly and yearly plans
Related articles

Proxies for Freelancers: Sizing and Billing Scraping Clients
Proxies for freelancers running scraping gigs: pass-through vs bundled pricing, splitting one plan across clients, billing credits per job and contract terms.

Proxies for Data-as-a-Service Companies: Buying for Resale
How data-as-a-service companies should buy proxies: cost per delivered record, refresh SLA capacity, vendor contract terms and a two-vendor setup that holds up.

Proxies for Marketing Agencies: One Plan for Many Clients
Proxies for agencies: which client work needs a proxy at all, how to size one shared plan by concurrency, and how to split a flat proxy bill across clients.
