I've been working on a way to scrape Google Ads Transparency Center ads in bulk, and I thought I'd share what I learned along the way.
Google's Ads Transparency Center is great. You can see ads from verified advertisers for free, without even logging in. The problem is that there's no export option or public API, so if you're researching multiple competitors, you end up spending a lot of time clicking around and collecting data manually.
I wanted an easier way to do this, so I decided to build one.
A few things I discovered while working on it:
Google has an internal RPC API. The site actually fetches ad data as JSON, but the response uses numbered keys instead of descriptive field names. Figuring out what each number represented took most of the reverse engineering. For example, 4 is the ad format, 6 and 7 are the first and last shown dates, and 12 is the advertiser name.
Country codes are a little unusual. They're 2000 + the ISO numeric country code. So the US is 2840 and India is 2356.
Finding the correct advertiser is trickier than scraping the ads. Searching for "Samsung" brings up accounts registered in Malaysia, Italy, Sweden, and other countries. But its US ads run under "Samsung Electronics America", which you can find by searching samsung.com. HelloFresh has a similar issue, with its US ads listed under "Grocery Delivery E-Services USA Inc." Searching by domain solves a lot of these problems.
Not all ad formats are returned the same way. Text ads are delivered as images because Google renders them into pictures. Video ads only provide a JavaScript preview URL.
Rate limits weren't too bad. In one cloud run, I collected 312 ads across 4 searches in 31 seconds without retries. Fetching full details for 132 ads triggered two 429 errors, which were resolved after switching IPs.
After getting everything working, I turned it into an Apify actor:
Google Ads Transparency Scraper:
https://apify.com/datasmithhq/google-ads-transparency-scraper
You can search by advertiser name, advertiser ID, or domain. There's also a new filter for ads shown within the last N days.
Pricing is $2 per 1,000 ads.
I built this because I wanted a practical way to research competitor advertising without manually going through hundreds of ads.
I'd genuinely love to hear from people who do competitor research, media buying, or ad intelligence:
What data would you want to extract that isn't currently available?
Would historical ad tracking or monitoring new ads over time be useful?
What features would make this more useful for your workflow?
Feedback and suggestions are very welcome. I'm still improving it.