Google Ads Transparency Scraper with Ad Copy
Pricing
from $1.00 / 1,000 ad results
Google Ads Transparency Scraper with Ad Copy
Scrape Google Ads Transparency Center with the real ad copy: Search ad headlines & descriptions, landing pages with UTM tags, video files, YouTube IDs and Shopping products.
Pricing
from $1.00 / 1,000 ad results
Rating
0.0
(0)
Developer
Çınar Özkan
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
See what any brand's Google ads actually say, where they lead and how long they have run. Search by domain, brand name or advertiser ID - no login, no browser, no API key.
Try it in about a minute: keep the default input (nike.com) and press Start. You get 20 ads with headline, description, display URL and dates for about 8 cents.
What you get in every ad record
- Search ad copy - headline, description and display URL of Google Search text ads. Google stores these ads as pictures, so the copy is read out of the image.
- Landing pages and UTM tags of video ads, including the campaign name (
utm_campaign). - Video files - direct MP4 links, duration and the YouTube video ID.
- Shopping ads - product title, merchant and product image.
- The context - advertiser name and ID, ad format, first and last shown dates, days shown, every variation of the ad, per-country details and a link to the ad in the Transparency Center.
Results stream into the dataset while the Actor runs, so you can export partial runs as JSON, CSV or Excel at any time.
What can I do with it?
- Study competitor ad copy - build a swipe file of the headlines and descriptions a brand has run for months.
daysShownshows which ads stayed live the longest. - Monitor new ads - schedule a daily run and spot new creatives by
firstShown. - Reverse-engineer campaigns - landing pages and
utm_campaignnames of video ads show how a brand structures its campaigns. - Win pitches - show a prospect exactly which ads they run and for how long.
- Research creatives - collect videos, images and Shopping ads by brand, format, platform and country.
How it works
- Add one or more domains (
nike.com), brand names (HubSpot) or advertiser IDs (AR16735076323512287233). - Optionally narrow it down by country, platform (Search, YouTube, Shopping, Maps, Play), ad format and date range.
- Press Start. Download the dataset as JSON, CSV or Excel, or read it through the Apify API.
Input
| Field | What it does |
|---|---|
Domains, brand names or advertiser IDs (queries) | One per line: nike.com, HubSpot, AR16735076323512287233, or an advertiser URL from the Transparency Center. A brand name is matched to the best advertisers automatically. |
Country (region) | 2-letter code (US, GB, DE, TR ...) or ANYWHERE. |
Platform (platform) | Google Search, YouTube, Google Shopping, Google Maps or Google Play. |
Ad format (adFormat) | Text, image or video. |
Shown in the last N days (lastDays) or Start / End date | Ads that were shown during that period. Google keeps about 12 months of history. |
Max ads per advertiser / domain (maxAdsPerQuery) | Default 20 for a quick first run. Raise it for full exports. |
Include creative details (includeDetails) | Loads every variation of each ad: landing page and UTM tags, video files, YouTube IDs, Shopping product titles, per-country dates. |
Extract Search ad copy (extractAdText) | Reads headline and description out of Search text ads. |
Proxy (proxyConfiguration) | Apify Proxy is on by default. |
Example input:
{"queries": ["nike.com", "HubSpot"],"region": "US","lastDays": 30,"maxAdsPerQuery": 100,"includeDetails": true,"extractAdText": true}
Output
Search text ad:
{"advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","creativeId": "CR11238584882709921793","format": "TEXT","firstShown": "2023-11-16","lastShown": "2026-10-22","daysShown": 1072,"domain": "nike.com","headline": "Nike Official Site - The Latest Nike® Football Gear","description": "Designed and created to enable outstanding performance, Nike football gear. The latest innovations that allow you to bring out your best game. Gear up at Nike®. Live Support Available.","displayUrl": "www.nike.com/shop/football","adTextSource": "ocr","adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR11238584882709921793?region=US"}
Video ad:
{"advertiserId": "AR13611357312189988865","advertiserName": "HubSpot","creativeId": "CR12217674844505899009","format": "VIDEO","firstShown": "2026-10-09","lastShown": "2026-10-22","daysShown": 14,"landingUrl": "https://www.hubspot.com?utm_source=OTT-CTV_DV360-Multi&utm_medium=paid_brandstrategy&utm_campaign=BrandStrategy_VideoViews_...","utm": {"utm_source": "OTT-CTV_DV360-Multi","utm_medium": "paid_brandstrategy","utm_campaign": "BrandStrategy_VideoViews_EN_NAM_NAM_GBC_OTT_Multi_AnnoyinglyGood-Q4-2026_..."},"videoDuration": "00:00:30","videoFileUrls": ["https://gcdn.2mdn.net/videoplayback?id=9caba06735ba3043&itag=22&source=web_video_ads..."],"adUrl": "https://adstransparency.google.com/advertiser/AR13611357312189988865/creative/CR12217674844505899009?region=US"}
| Field | Description |
|---|---|
advertiserId, advertiserName, creativeId | Identify the advertiser and the ad. |
format | TEXT, IMAGE or VIDEO. |
firstShown, lastShown, daysShown | When Google first and last showed the ad. |
domain | Advertiser domain, when known. |
headline, description, displayUrl | Search text ad copy. adTextSource is ocr (read from the archived ad image) or preview (from Google's ad preview). adText.confidence (0-1) tells how sure the text reading is. |
landingUrl, utm | Where the ad leads and its utm_* tags (video ads). |
videoFileUrls, videoDuration | Direct MP4 links and length (video ads). The links are signed and expire - download them soon. |
youtubeVideoIds, youtubeUrls | YouTube video, when the ad is a YouTube video. |
productTitle, merchant | Shopping ads. |
imageUrl, imageUrls | Ad images. |
adUrl | The ad on the Transparency Center. |
variations, regionStats | Full detail objects (when Include creative details is on). |
Pricing
Pay per event - you only pay for what you turn on:
| Event | Price | Charged when |
|---|---|---|
| Ad result (dataset item) | $1.00 / 1,000 | an ad is saved to the dataset |
| Ad details | $1.00 / 1,000 | the creative details of an ad were loaded |
| Ad text | $2.00 / 1,000 | the headline and description of a Search text ad were read |
Examples: a plain list of 1,000 ads (details and ad text off) costs $1.00. 1,000 ads with details, where 500 are Search text ads: 1,000 x $0.001 + 1,000 x $0.001 + 500 x $0.002 = $3.00. The default run (20 ads, most of them Search text ads) costs about $0.08.
Apify platform usage is included in these prices - you pay only for the events above, and nothing for starting a run.
Set a maximum cost per run in the run options - the Actor stops when it is reached.
Use it from your code
# pip install "apify-client>=3"from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("kilometric_camp/google-ads-transparency-ad-copy").call(run_input={"queries": ["nike.com"], "maxAdsPerQuery": 50})for ad in client.dataset(run.default_dataset_id).iterate_items():print(ad["format"], "|", ad.get("headline"), "|", ad.get("landingUrl"))
The same works from JavaScript, the Apify CLI or any HTTP client - see the API tab.
Integrations
Send results to Google Sheets, Slack, Make, Zapier, n8n or your own webhook with Apify integrations, and run the Actor on a schedule.
Good to know
- 12 months of history. Google's date filter reaches back about a year. Older periods return nothing. The
firstShowndate of an ad can be older. - Ad text is read from an image. Google stores Search text ads as pictures, so the copy is read with OCR. It works best on English; accented letters and symbols (for example
é,¡,®) can be replaced or dropped, and non-Latin scripts are not supported. CheckadText.confidence. - No impressions, reach or spend. This Actor does not return those numbers.
- Speed. In my tests on the Apify platform, a plain list of 2,000 ads took about 1 minute, and 200 ads with creative details took about 75 seconds. Reading Search ad copy is the slow part: expect roughly 15-20 text ads per minute.
- Big exports. Large advertisers have thousands of ads. For a complete export, split the job by country, platform, format or date range.
- Rate limits. If Google rate-limits a run, the Actor slows down and rotates the proxy IP automatically. If you still see rate-limit warnings in the log on large runs, switch the proxy group to Residential in the Proxy input.
- Memory. Peak memory in my test was about 300 MB, but reading Search ad copy is CPU-heavy and Apify gives one CPU core per 4096 MB. Use 2048-4096 MB when extracting ad text; for plain lists, less is fine.
FAQ
How do I see my competitors' Google ads? Enter their domain or brand name. The Actor returns the ads Google lists for that advertiser in the Transparency Center, with the copy and landing pages where Google exposes them.
Can I get the landing page of Search text ads? No. For Search text ads Google shows only the display URL. Landing pages and UTM tags are available for video ads.
Can I export to CSV, Excel or Google Sheets? Yes. Export the dataset in any format from the Apify Console, or connect Google Sheets with an Apify integration.
Is this affiliated with Google? No. This Actor is independent. "Google" and "Google Ads" are trademarks of Google LLC. It reads the public pages of the Ads Transparency Center.
Is it legal to scrape the Ads Transparency Center? The Actor reads the public pages of Google's Ads Transparency Center without logging in. You are responsible for how you use the data and for following Google's terms and the laws that apply to you (for example GDPR if you process data about individuals). This is not legal advice.
Can I run it on a schedule or send results to other tools? Yes. Use Apify schedules, webhooks and integrations (Google Sheets, Slack, Make, Zapier, the API) like with any Actor.
Something is missing or wrong? Open an issue in the Issues tab with the input you used - bug reports and field requests are welcome.