Google publishes every ad it runs in the Ads Transparency Center: search, display and YouTube, for any advertiser. It's a goldmine for competitor research, but the site makes you click through one ad at a time, and many search ads are stored only as a picture of the ad, so you can't copy the text out.
Here's how to pull every ad an advertiser runs into a spreadsheet, with the actual headline, description, call to action, landing page and YouTube video, in a few minutes and with no code.
What's actually available
Each ad in the Transparency Center has:
- the advertiser's verified name and ID
- the format (text, image or video)
- first and last shown dates
- for video and many display ads, the ad's own data: headline, description, long headline, call to action, landing page URL and the YouTube video
- for many search ads, only a snapshot image of the ad
The last point is why many scrapers return "only metadata". The words of a search ad are in the picture, not in the data.
Getting the text out of search ads
The fix is OCR: read the text from the snapshot image. Search-ad snapshots are clean, high-contrast renders, so OCR works well on them. A snapshot of a NordVPN ad, for example, comes back as:
www.nordvpn.com/
NordVPN — the best VPN - Fast and secure connection
Get NordVPN — the best VPN for 2025. It's safe and tailored to your needs.
Split that into display URL, headline and description, and the search ad is as usable as the video ads.
Real example: HubSpot's current US ads
I ran hubspot.com (US) through the Google Ads Transparency Scraper on Apify. A few of the rows, from a run on 29 October 2026:
| Format | Headline | CTA | Landing page | First shown | Days active |
|---|---|---|---|---|---|
| video | Know your customers. Close more deals. | Sign up | hubspot.com/crm/e010a | 2026-06-17 | 135 |
| video | Real results from day one | Sign up | hubspot.com/crm/e010a | 2026-02-17 | 255 |
| text | Generate More Leads - Reach More Customers | – | – | 2025-06-18 | 499 |
The text-ad row comes from OCR. The video rows come straight from the ad's data, with the YouTube link for each video.
Some things you can read from this in a minute:
-
Every video ad in the sample sends traffic to the same landing page (
/crm/e010a) with the same "Sign up" CTA. HubSpot is testing messages, not landing pages. - Some search ads have run for years. One HubSpot text ad has been live since August 2022. Advertisers rarely keep paying for an ad that doesn't work, so long-running ads are a reasonable shortlist of what's working for a competitor.
-
The search for
hubspot.comalso returned ads from another advertiser (an exam-proctoring company), which shows up when a domain search matches more than one advertiser. That's useful when you want to see who else bids around a brand.
How to run it
- Open the Google Ads Transparency Scraper.
- Enter competitors as domains (
hubspot.com), names (Nike) or advertiser IDs (AR...). Domains give the most complete results. If a name matches no ads in your country, the scraper also tries the name's.comdomain. - Pick a country, and optionally a format (text, image, video) or a "shown after" date.
- Export to CSV, Excel or JSON, or send the results to Google Sheets.
Each row includes copySource (ad-data or ocr), so you always know where the text came from, plus a link back to the ad on the Transparency Center to check it yourself.
Caveats
- OCR is very good on these snapshots in English and the main European languages. Expect noise on ads in other scripts.
- Some ads, such as certain HTML5 display ads, have no copy in Google's archive. You still get the dates, format and links.
- The Transparency Center shows when an ad ran, not how much was spent on it or how it performed.
Disclosure: I built this Apify actor. The data above comes from a real run on the date shown.
Top comments (0)