Most teams do competitor ad research backwards.
They manually open ad libraries when they remember to, scroll through creatives, save a few screenshots, and then forget to check again for weeks.
That workflow is broken.
The more useful workflow is not:
“Let me browse every competitor ad manually.”
It is:
“Tell me when something new appears.”
That is the idea behind this workflow: turning Google Ads Transparency Center into a scheduled competitor ad monitor that can alert you when new creatives show up.
The problem: Google Ads Transparency Center is useful, but not an alert system
Google Ads Transparency Center is one of the most useful free tools for competitor ad research.
You can look up advertisers and see public creative information, including creative formats, first shown dates, last shown dates, and preview links.
But it has one major limitation:
It is built for manual lookup, not automated monitoring.
That means if you are a PPC marketer, agency, founder, or growth team, you still have to manually check:
Did this competitor launch new ads?
Did they start testing more video creatives?
Which creatives have stayed active for a long time?
Did a batch of creatives disappear?
Should my team review this campaign now?
For a one-time audit, manual checking is fine.
For ongoing competitor monitoring, it is a bad workflow.
The better workflow
The better workflow looks like this:
Advertiser ID
→ Scheduled Apify Actor
→ Baseline comparison
→ New creative detection
→ Webhook alert
→ Slack / n8n / Make / Clay / Discord
Instead of checking competitors manually, you schedule a monitor.
The first run creates a baseline.
Future runs compare against that baseline.
If new creatives appear, the workflow sends an alert.
That is the key shift:
You are not just scraping a dataset.
You are creating a competitor ad signal.
What this workflow detects
This setup can help you track:
New Google Ads creatives from a competitor
Creative format changes, such as new video or image ads
First shown and last shown timestamps
Ad longevity in days
Newly seen creatives since the previous run
Removed creative counts
Preview URLs and ad detail URLs
LLM-ready summaries for analysis workflows
The most useful signal is usually not the full archive.
It is what changed.
Who this is useful for
This workflow is useful for:
PPC agencies monitoring client competitors
DTC brands watching creative testing patterns
SaaS growth teams tracking competitor campaigns
Marketing operations teams building alert systems
Competitive intelligence teams building internal dashboards
Automation builders using n8n, Make, Zapier, Clay, or Slack
If you already check Google Ads Transparency Center manually, this workflow replaces that repetitive habit with an automated alert.
Step 1: Find the advertiser ID
First, open Google Ads Transparency Center and search for the advertiser you want to monitor.
When you open an advertiser page, the URL contains an advertiser ID.
It looks like this:
AR07085335169422327809
That advertiser ID is the input for the monitor.
For example, if you want to monitor Apple’s public Google Ads Transparency creatives, you can use:
AR07085335169422327809
Step 2: Run the Actor once to create a baseline
The first run creates the baseline.
Example input:
{
"advertiserIds": ["AR07085335169422327809"],
"maxAdsPerAdvertiser": 40,
"minimumLongevityDays": 0,
"includePreviewUrls": true,
"monitorMode": true,
"notifyOnlyOnNew": true,
"debug": false
}
On the first monitor run, every creative is treated as already known.
That means:
previousCount = 0
currentCount = 40
newCount = 0
This is intentional.
The first run is the baseline. The next run is where change detection starts.
Step 3: Enable monitor mode
With monitorMode enabled, the Actor stores a per-advertiser baseline of creative IDs.
On future runs, it compares the current creative IDs against the previous baseline.
If a creative ID was not present before, the record gets:
"isNewSinceLastRun": true
The run summary also reports:
previousCount
currentCount
newCount
removedCount
This is what turns the workflow from a one-time scraper into a competitor monitor.
Step 4: Add a webhook URL
To turn monitoring into alerts, add a webhook URL.
Example:
{
"advertiserIds": ["AR07085335169422327809"],
"maxAdsPerAdvertiser": 40,
"minimumLongevityDays": 0,
"includePreviewUrls": true,
"monitorMode": true,
"webhookUrl": "https://your-webhook-url-here",
"notifyOnlyOnNew": true,
"debug": false
}
If notifyOnlyOnNew is true, the Actor sends a webhook only when new creatives appear.
That keeps the workflow clean.
No new ads?
No alert.
New creatives detected?
Send the alert.
Step 5: Send alerts to n8n, Slack, Make, Clay, or Discord
The webhook payload can be sent anywhere:
n8n
Make
Zapier
Slack
Discord
Clay
Airtable
Notion
Your own backend
A simple n8n workflow could look like this:
Webhook Trigger
→ Check if newCount > 0
→ Format message
→ Send Slack alert
A Slack alert might look like:
🚨 New Google Ads creatives detected
Advertiser: Apple
New creatives: 3
- VIDEO — 27 days longevity Detail URL: [link]
- IMAGE — 12 days longevity Detail URL: [link] This is the workflow that matters.
Join The Writer's Circle event
Not “download a CSV.”
Not “remember to check again later.”
Just:
Competitor launched something new → your team gets notified.
Example output fields
Each creative record includes fields like:
{
"advertiserName": "Apple",
"advertiserId": "AR07085335169422327809",
"creativeId": "CR03420806151204241409",
"adFormat": "video",
"firstShown": "2026-05-18T04:19:25.000Z",
"lastShown": "2026-06-13T05:56:54.000Z",
"adLongevityDays": 27,
"isNewSinceLastRun": false,
"previewUrls": ["https://..."],
"adDetailUrl": "https://adstransparency.google.com/advertiser/...",
"llmMarkdown": "### Apple creative...",
"dataComplete": true,
"errorMessage": null
}
The useful fields are:
creativeId
adFormat
firstShown
lastShown
adLongevityDays
isNewSinceLastRun
previewUrls
adDetailUrl
llmMarkdown
Why ad longevity matters
The workflow also computes adLongevityDays.
This is the number of days between when the creative was first shown and last shown.
Long-running ads can be a useful signal because they show which creatives an advertiser kept active over time.
This is not proof that an ad is profitable.
But it is still a useful filter.
For example, you may want to focus only on creatives that have been active for at least 30 days:
{
"minimumLongevityDays": 30
}
That helps reduce noise from short-lived tests.
Why LLM-ready markdown is included
A lot of marketing teams now use AI workflows for competitive research.
That is why each record includes an llmMarkdown field.
This makes it easier to send creative summaries into:
Clay
n8n AI agents
internal RAG tools
Notion databases
custom competitor intelligence dashboards
Instead of writing custom formatting logic for every workflow, the record already includes a clean markdown summary.
Important limitations
This is a list-only MVP.
It does not extract:
ad copy
headline text
body text
landing page URLs
advertiser domains
downloaded media assets
Those fields are intentionally not promised.
The goal of this version is to monitor public creative inventory and detect changes over time.
It is not a full ad intelligence suite.
It is not a Google Ads API replacement.
It does not use browser rendering, stealth, CAPTCHA solving, or bypass logic.
Why this matters for agencies
For agencies, the value is not just “more data.”
The value is repeatable monitoring.
A PPC agency could create one scheduled monitor per client competitor and receive alerts whenever new creatives appear.
That can support:
competitor audits
creative research
client reporting
campaign inspiration
weekly strategy reviews
sales enablement
market movement tracking
Instead of saying:
“We checked their ads once last month.”
You can say:
“We monitor new competitor creatives every day.”
That is a much stronger workflow.
Example use cases
PPC agency
Monitor five competitors for each client and send a Slack alert when new creatives appear.
DTC founder
Track when similar brands launch new video ads or seasonal campaigns.
SaaS growth team
Watch competitor creative changes before major launches, pricing changes, or new positioning tests.
Marketing ops team
Push new creative metadata into Airtable, Notion, or a data warehouse.
Clay user
Use new competitor creatives as a GTM signal for outbound or account research.
Final workflow
The full workflow is simple:
- Find the advertiser ID
- Run the Actor once to create a baseline
- Turn on monitorMode
- Add webhookUrl
- Schedule the Actor daily or weekly
- Get notified when new creatives appear That is it.
The goal is not to manually inspect ad libraries forever.
The goal is to know when something changes.
Try it
I built this as an Apify Actor here:
https://apify.com/opalescent_bird/google-ads-transparency-monitor
If you try it, I would especially like feedback on one question:
Would this be more useful if the next feature was domain/name search, so you do not need to manually find advertiser IDs?
Or is ad copy and landing page extraction the bigger missing piece?
Top comments (0)