Google Ads Transparency Scraper & New Ads Monitor
Pricing
from $0.80 / 1,000 ads
Google Ads Transparency Scraper & New Ads Monitor
Scrape competitors' Google ads from the Ads Transparency Center, then pay only for new ones. Text, image and video ads with their copy and dates, on a schedule.
Pricing
from $0.80 / 1,000 ads
Rating
0.0
(0)
Developer
Trong Nguyen
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Security
Limited permissionsShare
Know the week a competitor launches a new Google ad. Add their websites, put the scraper on a schedule, and get back only the ads that were not there last time: text, image and video ads with their headlines and descriptions, straight from the public Google Ads Transparency Center.
Most Ads Transparency scrapers hand you every ad an advertiser has running, every time. That is fine once. Run it each morning on five competitors and you pay for the same thousand rows again and still have to work out what changed. This one remembers what it has already shown you. The first run saves a baseline. After that, a quiet day returns nothing and costs nothing, and a launch day returns just the launch.
Who uses it
- PPC managers and agencies see the new offers in a client's market before the client asks about them.
- E-commerce and DTC brands catch a rival's sale, bundle or product launch the week it goes live.
- SaaS marketers follow how competitors pitch free trials, pricing changes and new features.
- Creative teams build a swipe file of the image and video ads advertisers keep paying to run.
Why monitor instead of re-scraping
Watching 5 competitors every day, 200 recent ads each, at the same price per ad:
| Re-scrape everything daily | This Actor | |
|---|---|---|
| Ads you pay for each day | 1,000 | Only the new ones |
| Cost over 30 days | about $45 | $1.50 for the baseline, then cents (10 new ads a day comes to $0.45) |
| What changed today | You compare the lists yourself | Every row is new, marked isNew: true |
What you get
- The ads an advertiser runs across Google Search, YouTube, Shopping, Maps and Play, as listed in the Transparency Center
- The advertiser's verified name and ID, the ad format, the first and last day it ran, and how many days it was shown
- The headline, description and display URL of each text ad, and the words on image ads. Google publishes most text ads as pictures; the Actor reads them for you
- An image of each ad, a preview link for video ads, and a link to the ad's own page in the Transparency Center
- On request, the countries each ad ran in with dates, Google's impression ranges where it publishes them (EU countries), and every variation of the ad
- Results in JSON, CSV, Excel or HTML, through the API, or sent on to Slack, Google Sheets, Make, Zapier or n8n
How to see your competitors' Google ads
- In Advertisers, enter a competitor's website (
nike.com), an advertiser ID (AR16735076323512287233), or an advertiser page URL from the Transparency Center. - Choose a Country to see ads shown there, or leave it on Anywhere. Narrow it to text, image or video ads if you like.
- Click Start. The first run lists their current ads and saves them as your baseline.
- Turn Only new ads on and add a daily or weekly schedule with this input. From now on each run returns only new ads.
With Only new ads off, every run returns every ad, each still marked new or not. Through the API it is on unless you turn it off.
Examples
1. Get a message when a competitor launches new ads
- Open the Input tab, put your competitors in Advertisers (for example
adidas.comandpuma.com), set Country to where you sell, and turn Only new ads on. - Click Start. This first run saves what they show today.
- In Schedules, create a daily schedule for this Actor with the same input (how schedules work).
- On the Actor's Integrations tab, add Slack or email so each finished run sends you its new ads (Apify integrations).
From then on, a quiet day costs almost nothing and a launch day lands in your inbox.
2. Pull an advertiser's whole video library once
{"advertisers": ["https://adstransparency.google.com/advertiser/AR16735076323512287233?region=GB"],"region": "GB","format": "video","onlyNewAds": false,"maxAdsPerAdvertiser": 2000}
With Only new ads off, every run returns all ads, so you can repeat it without touching your monitoring baseline. Each video row has a previewUrl.
3. Call it from your own code
The API returns the ads in the same request:
curl -X POST "https://api.apify.com/v2/acts/babymum7~google-ads-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"advertisers": ["nike.com"], "region": "US"}'
That request waits up to 5 minutes, enough for about 500 ads with their text. For bigger runs use the Python client below, which waits as long as the run takes.
Or with Python (pip install "apify-client>=3"):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("babymum7/google-ads-monitor").call(run_input={"advertisers": ["nike.com"], "region": "US"})for ad in client.dataset(run.default_dataset_id).iterate_items():if ad["isNew"]:print(ad["firstShown"], ad["format"], ad["headline"], ad["adUrl"])
What it costs
| Run | Ads returned | Cost |
|---|---|---|
| Baseline for 1 advertiser, default limit | 200 | $0.30 |
| Daily check, 5 advertisers, 8 new ads | 8 | $0.012 |
| Daily check with nothing new | 0 | $0 for ads |
Ready-made tasks
Each of these opens with the input already filled in. Try one, then put in your own advertisers.
| Task | What it shows |
|---|---|
| Get alerts when competitors launch new Google ads | Only new ads on each scheduled run |
| See every Google ad a competitor is running | One advertiser's text, image and video ads |
| Export Google Ads Transparency Center data to CSV or Excel | Up to 500 ads in one download |
| Find competitors' YouTube and Google video ads | Video ads with preview links |
| Get Google Ads Transparency Center data through an API | Ads as JSON from one API call |
| Analyze SaaS competitors' Google ads | HubSpot, Salesforce, monday.com |
| Monitor UK retailers' Google ads | Tesco, Sainsbury's, Argos, John Lewis in the UK |
| Track German online shops' Google ads | Zalando, Otto, About You in Germany |
| Research travel sites' Google Search ads | Booking.com, Expedia, Kayak, Hotels.com text ads |
Input reference
{"advertisers": ["nike.com", "adidas.com", "AR14842347578342768641"],"region": "US","format": "all","onlyNewAds": true,"readAdText": true,"maxAdsPerAdvertiser": 200,"ownAdsOnly": false,"includeDetails": false}
| Field | What it does |
|---|---|
advertisers | Websites, advertiser IDs (AR...) or Transparency Center advertiser URLs |
region | A country code or name (US, UK, Germany), or anywhere |
format | all, text, image or video |
onlyNewAds | Return only ads not seen in earlier runs (the first run is the baseline) |
readAdText | Read the headline, description and display URL of text ads, and the words on image ads. About half a second per ad returned |
maxAdsPerAdvertiser | How many ads to check per advertiser and run |
ownAdsOnly | For a website, keep only ads from advertisers carrying its brand name and drop agencies, resellers and partners that link to it |
includeDetails | Add regions with dates, impression ranges and variations; one extra request per ad |
Output example
Each ad is one row in the dataset. Export it as JSON, CSV, Excel, or HTML, or read it through the API.
{"isNew": true,"advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","domain": "nike.com","creativeId": "CR00181255934947885057","format": "text","headline": "Zoom Vomero Running Shoes. Nike.com","description": "Shop The Official Nike Store For The Latest Nike Shoes, Apparel & Gear. Gear Up For Sport And Style With Nike Products Designed For Performance And Comfort. Live Support Available. Styles: Vaporfly NEXT%, Zoom Fly, Joyride Flyknit, Pegasus.","displayUrl": "www.nike.com/","adText": "Nike\nwww.nike.com/\nZoom Vomero Running Shoes.\nNike.com\nShop The Official Nike Store For The Latest Nike\n...","firstShown": "2022-11-30","lastShown": "2026-11-04","daysShown": 1387,"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/11964775834604724905","previewUrl": null,"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR00181255934947885057?region=US"}
| Field | Meaning |
|---|---|
isNew | true when the ad started running after the previous run (with three days' leeway) and no earlier run returned it, for this advertiser, region, and format |
advertiserName, advertiserId, domain | Who paid for the ad |
format | text, image, or video |
headline, description, displayUrl | The words of a text ad; null for video ads |
adText | Every line of text on the ad, including sitelinks and ratings; for image ads, the words on the banner |
firstShown, lastShown, daysShown | When Google first and last showed the ad, and for how many days |
imageUrl | Image of the ad (text ads are shown as images too) |
previewUrl | Preview script for video and rich ads |
adUrl | The ad's page in the Transparency Center |
regions, impressionsMin, impressionsMax, variations | With Regions, impressions and variations on: each country with first and last shown dates and an impression range where Google publishes one, the ad's overall impression range, and a link to every variation |
How "new" is decided
The Actor keeps the creative IDs it has returned in a named key-value store in your account (google-ads-monitor-state), one record per advertiser, region, and format. A run compares what Google shows now with that record. Change the region or format and the Actor treats it as a new watch list with its own baseline. Delete the store to start over.
An ad counts as new only if its first day shown is no more than three days before the previous run and no earlier run returned it. The date check matters: Google lists the ads of an advertiser with thousands running at once in a different order on every request, so an ad from 2021 can be missing from one run and turn up in the next without being new.
After the baseline, each run asks Google only for ads shown since the previous run (three days' leeway), up to Max ads per advertiser. For most advertisers that is a short list, read to the end. For the largest ones (Google counts about 10,000 nike.com ads shown in three days) the default of 200 is only a sample, and the run's status says so, for example checked 200 of about 10,000 ads shown since 2026-11-02. Raise Max ads per advertiser to check them all: in our test 2,000 ads took 17 seconds, and you pay only for the new ads it finds.
Pricing
$1.50 per 1,000 ads returned, and nothing else to pay for: no start fee and no charge for compute. Paid Apify plans get the same ads for less:
| Apify plan | Per 1,000 ads |
|---|---|
| Free | $1.50 |
| Starter (Bronze) | $1.20 |
| Scale (Silver) | $1.00 |
| Business (Gold) and up | $0.80 |
A scheduled run that finds nothing new costs nothing for ads. If one advertiser fails, the run says so in its status and in the SUMMARY record and carries on with the rest.
FAQ
How do I see my competitors' Google ads? Enter their website in Advertisers and run the scraper. You get every ad Google lists for them in the Ads Transparency Center, with dates, format and a link to each ad.
Do I need a Google Ads account or API key? No. The Ads Transparency Center is public, so all you need is an Apify account.
Is this data public? Yes. Google publishes it in the Ads Transparency Center for anyone to view, without logging in.
Can I see how much a competitor spends? Not for commercial ads. Google does not publish spend in the Transparency Center. In EU countries it does publish impression ranges: turn on Regions, impressions and variations to get them. Elsewhere, daysShown and how long an ad keeps running are the best clues to what is working.
Can I get the ad copy? Yes. Google publishes most text ads as pictures, and the Actor reads the headline, description and display URL from them. Ads are read in the language of the country you search, so German, French, Spanish, Italian, Portuguese and Dutch ads keep their accents (für, großen instead of fur, groRen); with Region set to anywhere, the advertiser's domain decides (zalando.de reads as German). Seller ratings and store addresses are left out of the description. Reading a picture can get a character wrong now and then, so imageUrl always links the original. Ads written in Thai, Cyrillic, Chinese and other non-Latin scripts come back with empty text fields rather than misread ones. Reading takes about half a second per ad returned, so a 200-ad first run takes about a minute and a half; scheduled runs only read the new ads. Turn off Read the ad text if you only need dates and links. Google does not publish the landing page itself, only the display URL.
Why do I see ads from other companies for a domain? Google lists every advertiser whose ads link to that website, including agencies, resellers and partners. Turn on Only the advertiser's own ads to keep just the ones carrying the brand's name.
Why did an old ad show up as new? If an advertiser restarts an ad that was beyond your Max ads per advertiser limit when the baseline was taken, it counts as new to you.
This Actor is independent and not affiliated with Google.