Google Ads Transparency Scraper: Ads by Advertiser or Domain avatar

Google Ads Transparency Scraper: Ads by Advertiser or Domain

Pricing

from $1.20 / 1,000 ad founds

Go to Apify Store
Google Ads Transparency Scraper: Ads by Advertiser or Domain

Google Ads Transparency Scraper: Ads by Advertiser or Domain

Ads from the Google Ads Transparency Center by domain, advertiser ID or name: format, dates shown, regions and image links. No proxy needed. Pay per ad.

Pricing

from $1.20 / 1,000 ad founds

Rating

0.0

(0)

Developer

kelvin lab

kelvin lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Google Ads Transparency Scraper

Get every ad a company runs on Google Search, YouTube, Maps, Play and Shopping, straight from the Google Ads Transparency Center. Search by domain, advertiser ID or company name, filter by country, platform, format and dates, and get one clean row per ad. Countries, impressions, targeting and who paid are included at no extra charge. It uses plain HTTP and Apify datacenter proxy (no browser, no residential proxy), so it is fast and you only pay per ad.

What you can use it for

  • Competitor research: see every ad a competitor runs, when each one started and whether it is still running.
  • Creative inspiration: collect image and text ads for a market or a brand, with links to each ad.
  • Launch monitoring: schedule a run and watch firstShown and lastShown to spot new campaigns and paused ones.
  • Agency audits and pitches: list a prospect's live ads by country and platform before the first call.
  • Brand protection: find advertisers that promote your domain or use your brand name.
  • EU ad research: impression ranges, platforms and targeting criteria that Google publishes for ads shown in the EU.

Input

Give at least one domain, advertiser ID or advertiser name.

FieldDescription
domainsWebsites such as nike.com. Finds ads from every advertiser that promotes the domain. A full URL is fine.
advertiserIdsIDs starting with AR, or advertiser page URLs copied from adstransparency.google.com.
advertiserNamesCompany or brand names such as Nike. Each name is matched to the advertiser with that name and the most ads; the run log shows which one was picked.
maxAdvertisersPerNameHow many matching advertisers to scrape per name (default 1). Big brands often have one account per country.
regionOnly ads shown in this country (default anywhere).
platformGoogle Search, YouTube, Google Maps, Google Play or Google Shopping (default all).
adFormatText, image or video (default all).
dateFrom, dateToOnly ads shown in this date range.
includeDetailsAdds per-country dates and impressions, platforms, targeting, category, payer, variations and the advertiser's legal name, country and verification (default off). One extra request per ad, so runs are slower; no extra charge.
maxAdsPerSearchAds per domain, advertiser ID or matched advertiser (default 100, up to 10,000). The most recently shown ads come first.
maxAdsAds in the whole run (default 1,000, up to 50,000).
maxConcurrencyRequests in flight (default 3). The Actor also paces itself to about 2 requests per second and slows down when Google asks it to.
timeoutSecsTime limit per request (default 20 s).
proxyConfigurationApify datacenter proxy by default: when Google refuses an IP, the Actor moves to a new one. You can also use your own proxy URLs, or turn the proxy off. Residential proxy is not supported.

Example:

{
"domains": ["nike.com"],
"advertiserNames": ["Adidas"],
"region": "US",
"adFormat": "IMAGE",
"includeDetails": true,
"maxAdsPerSearch": 200
}

Output

One row per ad. With includeDetails on (previewUrl shortened):

{
"searchType": "domain",
"searchValue": "nike.com",
"advertiserId": "AR18378488041124659201",
"advertiserName": "Nike Retail BV",
"advertiserLegalName": "Nike Retail BV",
"advertiserCountry": "NL",
"advertiserVerified": true,
"creativeId": "CR07893733415659241473",
"format": "IMAGE",
"firstShown": "2021-10-25T07:00:00.000Z",
"lastShown": "2026-10-21T04:21:23.645Z",
"daysShown": 1380,
"matchedDomain": "nike.com",
"adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR07893733415659241473?region=anywhere",
"imageUrl": null,
"imageWidth": null,
"imageHeight": null,
"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&creativeId=475652781299&…",
"region": "anywhere",
"regionCount": 1,
"regions": [
{
"country": "FR",
"firstShown": "2023-03-01",
"lastShown": "2026-10-20",
"impressionsMin": 10000000,
"impressionsMax": null,
"platforms": [
{ "platform": "SHOPPING", "impressionsMin": 15000, "impressionsMax": 20000 },
{ "platform": "SEARCH", "impressionsMin": 10000000, "impressionsMax": null }
]
}
],
"platforms": ["SEARCH", "SHOPPING"],
"euImpressionsMin": 10000000,
"euImpressionsMax": null,
"targeting": {
"demographics": { "included": true, "excluded": false },
"geography": { "included": true, "excluded": false },
"contextual": { "included": true, "excluded": true },
"customerLists": { "included": true, "excluded": false }
},
"category": "Apparel & Accessories",
"paidBy": "Nike Retail BV",
"variationCount": 3,
"variationImageUrls": [],
"billable": true,
"error": null,
"scrapedAt": "2026-10-21T04:42:18.558Z"
}
  • An impression range with impressionsMax: null is open-ended, e.g. "10M+".
  • imageUrl is Google's archived picture of the ad. Image ads and most text ads have one; others have a previewUrl to Google's preview script, and every ad has adUrl.
  • Without includeDetails, advertiserLegalName, advertiserCountry, advertiserVerified and the detail fields (regionCount to variationImageUrls) are null.
  • billable says whether the row was charged; error says why a search or an ad failed. A search that finds nothing gets one row with an error, so you can see which inputs had no ads.
  • The run's key-value store has a SUMMARY record: ads saved, failed searches, requests and retries.

Pricing

Pay per event:

EventFree planStarterScaleBusiness
Ad found (only rows with billable: true)$0.002$0.002$0.0016$0.0012
Actor start (Apify's standard start fee)$0.00005$0.00005$0.00005$0.00005

That is $2 per 1,000 ads on the Free and Starter plans. Ad details cost nothing extra. Rows with an error, invalid input and duplicates are free: an ad found by two of your searches is saved and charged once. Set a maximum cost per run in the run options; the Actor stops cleanly when it is reached.

Limits

  • Data comes from what Google publishes in the Transparency Center. Impression ranges, platforms and targeting are mostly published for ads shown in the EU (and for political ads), so ads shown only elsewhere usually have countries and dates but no impressions.
  • The headline and description of text ads are not extracted: Google archives most text ads as images (imageUrl).
  • Speed. Without details a run needs one request per 100 ads: 5,000 ads take under a minute. With details every ad needs its own request, so the Actor handles about 2 ads per second (1,000 ads in about 9 minutes).
  • Google's limit per IP. Google allows each IP only a few hundred requests in a short time, then refuses it for a while; the shared IPs of cloud servers are sometimes refused from the start. That is why the Actor uses Apify datacenter proxy by default and moves to a new IP whenever Google refuses one. How far a large run with details gets depends on how many fresh proxy IPs your plan has (in our tests one run got 980 ads with details; without a proxy, about 300).
  • When Google refuses. The Actor pauses and retries. If Google keeps refusing, the run stops asking, keeps what it saved and says so in the status and the SUMMARY record; ads it could not finish are not charged. If Google refuses from the very first request, the run fails without any charge: try again later.
  • Only public data from the Transparency Center. You are responsible for how you use it.