Google Ads Monitor — Competitor Ads Tracker
Under maintenancePricing
from $1.20 / 1,000 ads
Google Ads Monitor — Competitor Ads Tracker
Under maintenanceGoogle Ads Transparency scraper and competitor ad monitor. Get ad text, images, videos, impressions by country and platform, targeting and dates. Monitoring mode returns only new, stopped and resumed ads and new countries. Pay only per result.
Pricing
from $1.20 / 1,000 ads
Rating
0.0
(0)
Developer
Violet Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Security
Limited permissionsShare

Google Ads Monitor — Competitor Ads Tracker
Track every ad your competitors run on Google Search, YouTube, Shopping, Maps and Play, straight from Google's official public ad library (Google Ads Transparency Center). No login, no cookies, no browser.
Schedule it and get only what changed since the last run: new ads, stopped ads, resumed ads and ads expanding to new countries. It works as an alert feed for Slack, email, Google Sheets, Make, Zapier or n8n.
What you get
- 🔎 Every ad for a domain (
nike.com), brand name or advertiser ID, across all advertiser accounts - 🔔 Monitoring mode: change events
NEW,STOPPED,RESUMED,NEW_REGION - 📊 Summary per competitor: active ads, launched in the last 7 days, formats, top countries, number of changes
- 📝 Ad copy for text ads: headline, description, display URL. Google publishes most text ads only as a screenshot, so we read the text from it (
textSource: "ocr"). Where Google provides the text itself, we use it as is (textSource: "google"). - 🌍 Impressions by country and platform: Google's published ranges, e.g. Germany 7k–8k, of which Search 5k–6k
- 🎯 Targeting: whether demographics, geography, contextual signals or customer lists were used
- 🎬 Video ad YouTube links, image URLs, all ad variations, first/last shown dates, days served
- 🌐 Filters: country, platform, date range
Input examples
Daily competitor alerts (create an Apify Schedule, e.g. every morning):
{"domains": ["competitor1.com", "competitor2.com"],"region": "US","onlyNewAds": true,"includeSummary": true}
Full export with ad copy, impressions and targeting:
{"domains": ["booking.com"],"region": "DE","includeAdDetails": true,"maxAdsPerTarget": 500}
By brand name or advertiser ID:
{ "brandNames": ["Nike"], "advertiserIds": ["AR16735076323512287233"] }
Output example (ad with details)
{"recordType": "ad","advertiserName": "Booking.com","legalName": "Booking.com B.V.","creativeId": "CR01370996166958776321","format": "TEXT","headline": "2 Hotels in Brüel - Unsere Top 10 Hotels Entdecken","description": "Hotels in Brüel, Deutschland. Schnell und sicher online buchen","displayUrl": "www.booking.com/","textSource": "ocr","firstShown": "2023-03-01T00:00:00+00:00","lastShown": "2026-11-02T00:00:00+00:00","numServedDays": 1343,"totalImpressions": { "lowerBound": 30000, "upperBound": 35000 },"regionStats": [{"regionCode": "DE", "regionName": "Germany","impressions": { "lowerBound": 7000, "upperBound": 8000 },"platformStats": [{ "platform": "SEARCH", "impressions": { "lowerBound": 5000, "upperBound": 6000 } },{ "platform": "YOUTUBE", "impressions": { "lowerBound": 0, "upperBound": 1000 } }]}],"targeting": { "demographics": {"1": true, "2": false}, "geography": {"1": true, "2": false},"contextual": {"1": true, "2": true}, "customerLists": {"1": true, "2": false} },"previewImageUrl": "https://tpc.googlesyndication.com/archive/simgad/...","adUrl": "https://adstransparency.google.com/advertiser/AR.../creative/CR..."}
Monitoring event: the same record plus "changeType": "NEW" | "STOPPED" | "RESUMED" | "NEW_REGION" (and newRegions for NEW_REGION).
Summary record (includeSummary: true, free):
{"recordType": "summary", "query": "booking.com","adsChecked": 15, "activeAds": 15, "launchedLast7Days": 0,"estimatedTotalAdsInLibrary": { "min": 14300000, "max": 14400000 },"byFormat": { "TEXT": 15 },"topRegions": [{ "regionCode": "FR", "ads": 9 }, { "regionCode": "DE", "ads": 7 }],"changes": { "NEW": 2, "STOPPED": 1, "RESUMED": 0, "NEW_REGION": 0 }}
Filter the dataset by recordType to separate ads from summaries.
How monitoring works
- Turn on Monitoring mode and add your competitors.
- The first run records the ads that are live right now as a baseline. It outputs nothing and charges only the competitor check.
- Create a Schedule. Each later run outputs only changes. An ad counts as
STOPPEDwhen it has not been shown for longer than active within days (default 2). NEW_REGIONneeds Include ad details to be on.
State is kept per domain/advertiser + region + platform. Changing the filters starts a new baseline.
Pricing (pay per event)
| Event | Price |
|---|---|
| Competitor check (each domain / advertiser per run) | $0.01 |
| Ad returned | $0.0012 ($1.20 / 1,000) |
| Ad details (impressions, targeting, ad copy, video), optional | $0.002 ($2.00 / 1,000) |
| Summary records | free |
Examples:
- Monitoring 5 competitors daily ≈ $1.50 per month plus new ads only.
- Exporting 1,000 ads with full details = $3.20.
Notes and limits
- Data comes from Google's public transparency library. Google decides which ads and fields are published. Impressions are published only for some ads (mostly in the EU), as ranges.
- Ad copy from screenshots is read with OCR. It is very accurate for Latin-script languages; diacritics may occasionally be lost. CJK scripts are not supported yet.
- A domain search returns every ad that points to that domain, including ads from other advertiser accounts (resellers, agencies, sites hosted on that domain). Use
advertiserIdsorbrandNamesto track one company only. - Age-restricted ads are not visible without a Google login and are not included.
- Proxy: starts on Apify datacenter proxy and switches to residential automatically if Google blocks it. This costs you nothing extra.
- Not affiliated with or endorsed by Google. Google Ads is a trademark of Google LLC; the logo is used only to identify the data source.
- Use the data responsibly and in line with applicable laws.
Built by Violet Lab · small, reliable data tools with pay-per-result pricing.
Found a bug or need a field? Open an Issue on this Actor. We usually reply within 24 hours.