Google Ads Transparency Scraper: Competitor Ads by Domain
Pricing
$1.50 / 1,000 ads
Google Ads Transparency Scraper: Competitor Ads by Domain
Google Ads Transparency Center scraper: type a competitor's domain, brand name or advertiser ID and get its ads with format, first and last shown dates, countries, creative images and ad links. $1.50 per 1,000 ads, details included. No login, no browser.
Pricing
$1.50 / 1,000 ads
Rating
0.0
(0)
Developer
Data Gleaner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Google Ads Transparency Scraper: competitor ads by domain or advertiser
Type a competitor's domain or brand name and get the ads Google shows for it in the Ads Transparency Center: format, first and last shown dates, countries, creative images and a link to each ad. One row per ad, as JSON, CSV or Excel. No login, no browser, no Google account. $1.50 per 1,000 ads, with ad details included.
Why this one
- One flat price. $0.0015 per ad.
includeDetails(every creative variant and the countries where an ad ran) costs nothing extra. No start fee and no monthly rental. - Search the way you think. By competitor domain (
nike.com), by company name (it picks the advertiser accounts with the most ads, up to 10 per name, because big brands run several), or by pasting an advertiser or ad page URL from adstransparency.google.com. - Built to run from Apify's servers. Google throttles a single IP after a few advertisers, so the Actor uses Apify Proxy datacenter IPs, spaces its requests and retries. Platform runs on 2026-10-11 returned ads for nike.com, adidas.com, shopify.com and notion.so.
- Only new ads, on a schedule. Turn on
onlyNewAds, run it daily, and you receive and pay for the ads that appeared since the last run. - Honest about content. You get ad metadata,
imageUrlsfor image and text ads, and apreviewUrlfor video ads. Ad copy is not returned as text and video files are not downloaded (see Limits).
Minimal input
{"domains": ["nike.com"], "region": "US", "maxAdsPerAdvertiser": 20}
An empty input runs the example domain adidas.com, capped at 5 ads.
Sample output row
A real row from a platform run on 2026-10-11 (domain search shopify.com, region US, includeDetails on, which adds regions, variationCount and previewUrls):
{"advertiserId": "AR01625195283841286145","advertiserName": "Shopify Inc.","creativeId": "CR06709085365593964545","format": "text","firstShown": "2024-03-18T00:25:58+00:00","lastShown": "2026-10-11T05:46:47+00:00","shownForDays": 937,"regions": [{"region": "US","lastShown": "2026-10-10"}],"variationCount": 1,"imageUrls": ["https://tpc.googlesyndication.com/archive/simgad/9011262948780097556"],"landingDomain": "shopify.com","adUrl": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR06709085365593964545?region=US","height": 180,"width": 348,"previewUrls": [],"region": "US","input": "shopify.com","scrapedAt": "2026-10-11T06:10:03+00:00"}
Price
$1.50 per 1,000 ads ($0.0015 each). 20 ads cost $0.03; 5 advertisers with 400 ads each (2,000 ads) cost $3.00. Set a maximum charge on the run and it stops when the limit is reached.
What you can do with it
- Competitor ad research: see which Google ads a competitor has run, since when, and whether they are still live.
- Creative swipe files: collect image creatives for a brand, filtered by format, region and date.
- Brand protection and compliance: find who advertises pointing to your domain or under your brand name.
- Ad intelligence feeds: schedule a daily run per advertiser with
onlyNewAdson to get only the ads that are new since the last run.
Input
Give at least one advertiser ID, domain or search term. An empty input runs the example domain adidas.com, capped at 5 ads.
{"advertiserIds": ["AR16735076323512287233"],"domains": ["shopify.com"],"searchTerms": ["Spotify"],"region": "US","startDate": "2026-01-01","format": "any","maxAdvertisersPerTerm": 3,"maxAdsPerAdvertiser": 100,"includeDetails": false,"onlyNewAds": false}
advertiserIds: theAR...id, or an advertiser or ad page URL pasted fromadstransparency.google.com(the id is taken from it). Returns that advertiser's ads.domains: a website domain such asnike.com. Returns ads that point to that domain, from any advertiser.searchTerms: a company or brand name, resolved through the site's search to the matching advertiser accounts with the most ads (accounts with no ads are skipped).maxAdvertisersPerTerm(default 3, max 10) sets how many accounts to scrape per term; big brands often run ads from several accounts. A domain typed here (nike.com) runs a domain search.maxAdsPerAdvertiser: cap on ads for each advertiser ID, each domain and each advertiser account a search term resolves to (default 100, max 10000). Pages come in the order the site lists them, which is not strictly by date.region: two-letter country code (US, GB, DE, JP, ...) oranywhere(default).startDateandendDate(YYYY-MM-DD) andformat(any,text,image,video) filter the ads.includeDetails(default false): one extra request per ad for all creative variants (moreimageUrls,previewUrls,variationCount) and the regions where it ran, the requested region first. Slower, no extra charge.onlyNewAds(default false): monitor mode, see below.requestDelaySeconds(default 1.0) andproxyConfiguration(Apify Proxy by default) control pacing.
Monitor mode
Set onlyNewAds to true and schedule the Actor daily: each run returns only ads not delivered by an earlier run with onlyNewAds on, so you pay only for the new ones. Seen creative IDs are kept in a named key-value store, google-ads-transparency-seen, separately per advertiser or domain and per combination of region, format and dates. The first run returns everything up to the limit.
Output
One row per ad creative:
{"advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","creativeId": "CR06289851821125009409","format": "image","firstShown": "2023-11-17T11:19:29+00:00","lastShown": "2026-10-07T09:20:38+00:00","shownForDays": 1055,"region": "US","regions": [{"region": "US", "lastShown": "2026-10-07"}],"variationCount": 1,"width": 300,"height": 250,"imageUrls": ["https://tpc.googlesyndication.com/archive/simgad/9542525759016532365"],"landingDomain": "nike.com","previewUrls": [],"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR06289851821125009409?region=US","input": "nike.com","scrapedAt": "2026-10-07T12:00:00+00:00"}
region is the region you filtered on (or anywhere), and adUrl then opens the site filtered to it; shownForDays is how long the ad has run. A row only carries the fields the ad has, so there are no null columns: regions and variationCount are left out, and previewUrls is absent, unless includeDetails is on. previewUrl, googleCustomerId, googleCreativeId, adGroupId and versionId come from Google's preview URL, so they are left out when an ad has none (as with this image ad). width and height (pixels) are given for image ads only. The example above is abridged and shows a domain search with details on. Download the dataset as JSON, CSV, Excel or HTML, or read it through the API.
Pricing
Pay per result: $1.50 per 1,000 ads ($0.0015 per ad, event ad). Example: 5 advertisers with 400 ads each is 2,000 ads, about $3.00. Details cost nothing extra. A test run capped at 10 ads costs about $0.015. You can cap spend with the run's maximum total charge; the Actor stops when it is reached.
Use with Python
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("datagleaner/google-ads-transparency-scraper").call(run_input={"domains": ["nike.com"], "region": "US", "maxAdsPerAdvertiser": 10})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["advertiserName"], item["format"], item["lastShown"], item["adUrl"])
Use with JavaScript / Node.js
// npm install apify-clientimport { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('datagleaner/google-ads-transparency-scraper').call({domains: ['nike.com'],region: 'US',maxAdsPerAdvertiser: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const ad of items) console.log(ad.advertiserName, ad.format, ad.lastShown, ad.adUrl);
Use it from n8n, Make, Zapier or an AI agent
Actor ID: datagleaner/google-ads-transparency-scraper
Minimal input:
{"domains": ["nike.com"], "region": "US", "maxAdsPerAdvertiser": 10}
Each tool below runs this Actor with your own Apify API token.
-
n8n: add the Apify node (
@apify/n8n-nodes-apify). On n8n Cloud you install it from the community node registry. Choose Run an Actor and get dataset, set Actor todatagleaner/google-ads-transparency-scraperand paste the input above. -
Make: use the Apify app's Run an Actor module, then Get Dataset Items to read the results. Watch Actor Runs can trigger a scenario when a run finishes.
-
Zapier: use the Apify action Run Actor, then the search Fetch dataset items. The trigger Finished Actor run starts a Zap when a run ends.
-
AI agents (MCP): connect to
https://mcp.apify.com?tools=datagleaner/google-ads-transparency-scraper. In Claude Code:claude mcp add --transport http apify "https://mcp.apify.com?tools=datagleaner/google-ads-transparency-scraper"Then run
/mcpto sign in to Apify in your browser, or send the headerAuthorization: Bearer YOUR_APIFY_TOKEN. Then ask in plain words, for example:Find the Google ads Shopify has run in the US since July, up to 20, and list each one's format, first and last shown dates and ad link.
-
LangChain (Python):
# pip install langchain-apify, then set APIFY_TOKEN in your environmentimport jsonfrom langchain_apify import ApifyActorsTooltool = ApifyActorsTool("datagleaner/google-ads-transparency-scraper")result = tool.invoke({"run_input": json.loads('{"domains": ["nike.com"], "region": "US", "maxAdsPerAdvertiser": 10}')})
Monitor mode: only new ads
Turn on onlyNewAds and schedule the Actor (daily is typical) to receive just the ads that appeared since the last run, and pay only for those.
- The Actor keeps a named key-value store,
google-ads-transparency-seen, with one entry per advertiser or domain and the same region, format and dates. Each entry holds thecreativeIds already delivered and the date of the last complete run. - The first run delivers up to
maxAdsPerAdvertiserads and sets that date. - Later runs deliver an ad only if it was never delivered and was first shown on or after the stored date (with one day of slack). Long-running ads that you already have, and old ads that were never delivered, are skipped and not charged.
- The site does not list ads by age, so the Actor does not stop at the first known ad. It keeps paging until it reaches
maxAdsPerAdvertiser, the end of the list, or five pages in a row with nothing new. - If more than
maxAdsPerAdvertisernew ads appear between two runs, the extra ones are skipped for good, because the date moves forward after each complete run. Raise the limit or run more often for very active advertisers. - Only ads that were delivered and charged are remembered. If a run stops early (your maximum total charge, or Google throttling), the date stays where it was, so the next run picks up the rest without charging twice.
FAQ
Can I use the Google Ads Transparency Center as an API? Yes, through this Actor: call it from the Apify API, the Python or JavaScript client, or MCP, and get the ads back as JSON.
How do I see a competitor's Google ads? Put their domain in domains or their company name in searchTerms (it picks the accounts with the most ads, default 3). You get the ads the Transparency Center shows for them, with first and last shown dates and image creatives.
How do I find an advertiser ID? Use searchTerms with the company name, or paste the advertiser's page URL into advertiserIds.
Do I need a Google account? No. The data is public and the Actor needs no login.
Why fewer ads than the site shows? Region, date and format filters and maxAdsPerAdvertiser apply, and duplicates are removed by creativeId.
Limits
- Ad copy is not returned as text. Google archives most text and image ads as rendered images, which
imageUrlsholds; the rest, video ads included, havepreviewUrl, Google's preview script for that creative. Video files and impression ranges are not exposed. landingDomainis only filled for domain searches.- Google throttles a single IP that sends many requests quickly, so the Actor uses Apify Proxy (datacenter) by default, paces its requests and retries. Without a proxy, expect throttling after a few advertisers.
- Results come in the order the site lists them, which is not strictly by date. The region filter uses country-level codes.
Responsible use
This Actor reads public transparency data that Google publishes for anyone. Advertiser names can be individuals; if you store or process personal data, your own data-protection obligations apply.