Every company that advertises on Google has its ads listed publicly in the Google Ads Transparency Center, across Google Search, YouTube, Shopping, Maps and Play. That's a free view into your competitors' marketing, if you know how to read it.
The two most useful questions to ask it are:
- Which ads have they been running the longest? Advertisers kill ads that don't pay off, so an ad that has run for years is almost certainly a winner.
- What did they start running this month? New ads show what they're testing right now: new messaging, new offers, new videos.
Here's what that looks like for Canva in the US (real data, October 2026):
100 ads: {'TEXT': 70, 'VIDEO': 26, 'IMAGE': 4}
Longest-running ads:
1610 days TEXT since 2021-10-25 https://adstransparency.google.com/advertiser/AR06374349942554624001/creative/CR11268929032814592001?region=US
1524 days TEXT since 2021-10-25 ...
1347 days TEXT since 2023-01-28 ...
12 new ads in the last 30 days:
2026-09-17 VIDEO https://www.youtube.com/watch?v=Vevv7kn9CQE
2026-09-17 VIDEO https://www.youtube.com/watch?v=LEzx0y6x0c4
2026-09-21 VIDEO https://www.youtube.com/watch?v=yksrKe-tA5Q
So Canva has kept the same text ads running for 4+ years, and this month it's testing a batch of new YouTube videos. That's useful whether you compete with them or just want ideas for your own ads.
The free, manual way
- Open adstransparency.google.com.
- Type the competitor's name or website, and pick a region.
- Filter by platform, format (text, image, video) and date range, then click into each ad.
That's fine for a quick look. It gets painful when you want all the ads, the first and last shown dates for each, a spreadsheet, or a weekly check on five competitors. The site has no export button.
The automated way: a 25-line Python script
Disclosure: I built the tool used here. Google Ads Transparency Scraper is an Apify Actor that pulls the same public data as structured JSON. Each ad comes with its format, first and last shown dates, days running, image, YouTube video link, and text where Google exposes it. You can search by advertiser name, by website domain, or by advertiser ID.
# pip install apify-client (tested with 3.3.0)
from apify_client import ApifyClient
from collections import Counter
from datetime import datetime, timedelta, timezone
client = ApifyClient("YOUR_APIFY_TOKEN") # https://console.apify.com/settings/integrations
run = client.actor("t3data/google-ads-transparency").call(run_input={
"advertisers": ["canva.com"], # a domain covers every account advertising that site
"region": "US",
"maxAdsPerAdvertiser": 100,
})
ads = [a for a in client.dataset(run.default_dataset_id).iterate_items() if a["status"] == "ok"]
print(f"{len(ads)} ads:", dict(Counter(a["format"] for a in ads)))
# 1) Evergreen winners: ads still running after a long time are usually the ones that pay off.
print("\nLongest-running ads:")
for a in sorted(ads, key=lambda a: a["daysShown"] or 0, reverse=True)[:5]:
print(f' {a["daysShown"]:>5} days {a["format"]:<5} since {a["firstShown"][:10]} {a["adUrl"]}')
# 2) What they're testing right now: ads first seen in the last 30 days.
cutoff = datetime.now(timezone.utc) - timedelta(days=30)
fresh = [a for a in ads if datetime.fromisoformat(a["firstShown"].replace("Z", "+00:00")) >= cutoff]
print(f"\n{len(fresh)} new ads in the last 30 days:")
for a in fresh[:5]:
print(f' {a["firstShown"][:10]} {a["format"]:<5} {a.get("videoUrl") or a.get("headline") or a["adUrl"]}')
# 3) Their YouTube video ads, ready to watch.
videos = sorted({a["videoUrl"] for a in ads if a.get("videoUrl")})
print(f"\n{len(videos)} YouTube video ads, e.g. {videos[:3]}")
That printed the output at the top of this post.
Ideas for taking it further
-
Weekly competitor digest: schedule the run on Apify for 3–5 competitor domains, and send
freshto Slack or email. -
Video ad swipe file: collect
videoUrls across your niche, then use a transcript tool to pull each video's script and compare hooks. -
By country: set
regiontoGB,DEand so on to see how messaging changes per market. - Spreadsheet: every run can be downloaded as CSV or Excel from the Apify Console, with no code.
Good to know
-
Domain vs. name: searching
canva.comcatches every advertiser account that promotes that site, including resellers. Searching by name finds the brand's own accounts. - Ad text is only available for some ads (those Google shows as live previews). Image and video ads always come with their image or YouTube link.
- No performance data: Google doesn't publish spend, clicks or impressions. "Days running" is the best public proxy for what works.
- Cost: $2 per 1,000 ads, and searches that find nothing are free. It runs on Apify, which has a free plan with monthly credit.
Questions or a competitor that doesn't come through? Open an issue on the Actor page and I'll take a look.
Top comments (0)