How to track competitor Google ads (and get alerted to new ones)
Google publishes every ad an advertiser runs in its Ads Transparency Center: search, display and YouTube, with the date each ad was first and last shown. That's enough to answer most competitor questions: what are they pushing right now, which landing pages get paid traffic, how many creatives are live, and when did a new campaign start.
The site is fine for looking up one brand once. It's slow for anything repeatable: no export, no history, and you can't diff this week against last week. This guide shows how to get the data into a spreadsheet and set up a weekly check that only returns new ads.
What the Transparency Center actually has
- Every verified advertiser, with an ID like
AR13289988016354361345. One brand often has several: our Canva test returned ads from both "CANVA US, INC." and "Canva, Pty Ltd". - Each creative's format (text, image, video), first shown and last shown date, and the regions it ran in.
- For many ads, the actual copy: headline, description, call to action, and the landing page URL with its UTM tags.
- Impression ranges per country, but only for ads shown in the EU (that's a DSA requirement, Google doesn't publish them elsewhere).
What it doesn't have: spend, clicks, keywords, or targeting. Anyone selling you "competitor ad spend" from this source is estimating.
Step 1: pull a competitor's ads into a table
We use the Google Ads Transparency Scraper + New Ads Monitor on Apify. You give it a domain, a brand name, an advertiser ID or a Transparency Center URL. It costs $1.20 per 1,000 ads, plus $1 per 1,000 if you want the ad copy and landing pages.
{
"queries": ["Canva", "gymshark.com", "hellofresh.com", "Notion Labs", "AR05501100765344694273"],
"region": "US",
"maxAdsPerQuery": 200,
"includeAdDetails": true
}
On 31 October 2026 that pulled 779 ads in under three minutes. The brand name "Canva" resolved to canva.com on its own. Google's own totals give a sense of scale: canva.com has 10,000 to 20,000 ads in the archive, gymshark.com 2,000 to 3,000, hellofresh.com 800 to 900. Pulling 200 per brand gets you the most recent ones, which is usually what you want.
A row with details turned on looks like this (trimmed):
{
"advertiserName": "CANVA US, INC.",
"format": "IMAGE",
"firstShown": "2026-10-12T23:07:56.000Z",
"lastShown": "2026-10-31T19:19:06.000Z",
"daysShown": 20,
"headline": "Canva Magic Layers",
"body": "Flat doesn’t mean fixed. Magic Layers gives you full creative control over flat ...",
"landingPage": "http://www.canva.com/magic-layers/?utm_medium=&utm_source=&utm_campaign=us_en_al...",
"adUrl": "https://adstransparency.google.com/advertiser/AR13289988016354361345/creative/CR08282751427114172417?region=US"
}
Export to CSV or Google Sheets from the dataset tab.
Step 2: read it like a marketer
A few things worth sorting by:
- firstShown, newest first. Anything that started in the last 7 days is a current push. In our run, 24 of Canva's 200 US ads had started in the previous week, against 11 for Gymshark and 3 for HelloFresh.
- Format mix. Gymshark's 200 were 103 video, 51 image, 46 text. HelloFresh was the reverse: 146 text, 5 video. That tells you where each one fights: YouTube or search.
- Landing pages. Group by
landingPagewithout the query string. Canva's image ads in October pointed at two pages: Magic Layers and the visual suite. That's the product they're paying to push. - daysShown. Ads that have run for months without being replaced usually perform. Short-lived ones were tests.
Be honest about coverage: the copy and landing page came back for 94 of 779 ads (12%). Google renders the rest as images or video without exposing text. Video ads almost always have a YouTube ID (232 of 238 in our run), so you can watch them.
Step 3: get only new ads every week
Turn on Only new ads since last run and schedule the actor in Apify (Schedules, weekly). The first run stores every ad it saw. Later runs return only creatives that weren't there before. When we re-ran the same five brands eight minutes after the first run, it checked 779 ads in 10 seconds and returned one new Canva ad.
Hook the run to Slack or email through Apify's integrations, or pull the dataset into a sheet with n8n or Make. Use a separate monitor name per client so their histories don't mix.
Limits
- Only ads from verified advertisers appear. Small advertisers who haven't been verified may be missing.
- Google rate-limits heavy use. The actor rotates proxy sessions and doesn't charge for ad details it failed to fetch, but very large pulls take longer.
- Name search can match the wrong company when brands share a word. Using the domain or advertiser ID avoids that.