Option 1: browse it by hand
- Open the Ads Transparency Center and search for a brand name or a domain, e.g.
allbirds.com. - Set Format to Text to see search ads, and pick a region and date range.
- Open an ad to see when it was first and last shown and in which countries.
That works for a quick look. It gets slow fast, though. Each ad is an image, so you retype the copy to compare it, and you can't sort or filter what you've collected.
Why search ads come back as images
For most search ads, Google only archives a rendered picture of the ad: display name and URL, a blue headline, a grey description and sometimes sitelinks. Display and YouTube ads sometimes come with structured data, but search ads usually don't. To get the copy as data you have to read it off the image, which is what OCR (optical character recognition) does.
Option 2: pull the ads as data automatically
Our Google Ads Transparency Scraper on Apify takes a brand, domain or advertiser ID and returns every matching ad as a row. For search ads it reads the archived image with OCR. It uses the layout Google always renders, with blue for the headline and grey for the description, and records how confident the OCR was.
From Python, with Apify's official client (pip install apify-client):
from apify_client import ApifyClient # pip install apify-client (3.x)
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("rimulabs/google-ads-transparency-scraper").call(run_input={
"searchTerms": ["allbirds.com"], # a domain, brand name or advertiser ID
"adFormat": "text", # search ads only
"maxAdsPerTarget": 50,
})
for ad in client.dataset(run.default_dataset_id).iterate_items():
print(ad["daysShown"], "|", ad.get("headline"), "|", ad.get("visibleUrl"))
You can also run it from the Apify Console without code and export CSV, JSON or Excel. One real result, shortened:
{
"advertiserName": "Allbirds Inc",
"format": "text",
"headline": "Shoes for Every Adventure - New Shoes Built to Explore - Allbirds",
"description": "Lightweight. Heavy duty. The new Explore Collection is made for every adventure. Wander on in the extra durable, all-day wearable, wildly stylish Explore Collection. Lightweight & Breathable.",
"visibleUrl": "www.allbirds.com/",
"textSource": "ocr",
"ocrConfidence": 95,
"firstShown": "2025-10-02T21:00:05.884Z",
"lastShown": "2026-10-17T06:32:39.875Z",
"daysShown": 355,
"regionsShown": [{ "country": "US", "lastShown": "2026-10-16" }]
}
That ad had been running for almost a year. Ads that keep running that long are usually ones the advertiser is happy with, which makes them the most useful to study.
What to do with the data
- Build a swipe file. Sort by
daysShownto find each competitor's longest-running copy. - Map their angles. Group headlines by theme, such as price, proof ("award-winning"), speed or free trials, and see where you are missing.
- Follow display paths. Paths like
/walking-shoesor/business-bank/apply-nowshow which pages get paid traffic. - Watch for changes. Turn on monitor mode and schedule a weekly run. Each run then returns only ads you haven't seen before.
Limits worth knowing
- OCR is very accurate on English and other Latin-script ads. Accents can be lost, and ads in scripts like Japanese come back without text rather than with garbled text.
- If Google's rendering cuts a headline off, the text stays cut off.
- Google doesn't publish spend or impressions for commercial ads, so no tool can give you those.
Cost: $1.50 per 1,000 ads, plus $2.00 per 1,000 for ad copy and details (OCR included). 100 search ads with copy cost about $0.35.
Rimu Labs builds and maintains the Actor mentioned in this guide. The guide was written with help from our AI assistant and checked against real runs in October 2026. Questions or corrections: support@rimulabs.com.