Google Ads Transparency Scraper
Pricing
Pay per event
Google Ads Transparency Scraper
Scrape Google Ads Transparency Center by brand, domain or advertiser ID. Get ad creatives with advertiser, format, shown dates, headline and previews. No login or API key. Pay per result: $0.001 per ad plus $0.005 per run start.
Pricing
Pay per event
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Look up any brand, domain or advertiser in Google's public Ads Transparency Center and get its ad creatives as clean rows. No login, no API key.
What data can you extract?
For each ad creative:
- Advertiser name and ID, with a link to the advertiser page
- Ad format: TEXT, IMAGE or VIDEO
- First and last shown date
- Image URL (text ads are rendered as an image) and the creative preview URL
- Destination domain (domain searches)
- The name, domain or advertiser ID that found the ad, plus the region filter used
- Direct link to the creative in the Transparency Center
By default (includeAdDetails on) you also get the headline, description and display URL, the image and video links, the number of variations and the countries the ad was shown in. This needs extra lookups per ad and takes about 2-3 seconds per ad; switch it off for faster runs with list fields only. Not every ad shows text: many classic text ads are only published as an image, in which case headline stays empty and image_urls has the picture. Sitelinks and ratings shown in the Transparency Center are part of that image and cannot be read as text.
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client, including Claude Desktop, Claude.ai, Cursor, VS Code, LangChain and LlamaIndex.
{"mcpServers": {"apify": {"command": "npx","args": ["-y","mcp-remote","https://mcp.apify.com?tools=santamaria-automations/google-ads-scraper","--header","Authorization: Bearer <APIFY_TOKEN>"]}}}
Example prompt: "Use google-ads-scraper to get the latest 50 US ads from Nike and show advertiser, format and last shown date as a table."
Example input
{"searchTerms": ["nike"],"region": "US","maxAds": 50}
With ad details:
{"searchTerms": ["nike"],"region": "US","maxAds": 50,"includeAdDetails": true}
An empty input {} also works and runs the defaults (nike, 50 ads, all regions).
How searches work
- Brand or advertiser names (
searchTerms): the name is looked up in the Transparency Center's advertiser search. The closest name match wins (legal suffixes like Inc or GmbH are ignored), and among equal matches the advertiser with the most ads.maxAdvertisersPerTerm(default 1) controls how many matches are scraped. Free-text keyword search for ad content is not supported by Google's endpoint, only advertiser names. - Domains (
domains, or a name liketesla.com): ads whose destination domain matches, from any advertiser. Domains are searched directly because the advertiser lookup does not resolve them. - Advertiser IDs (
advertiserIds): all ads of one advertiser, for exampleAR17828074650563772417.
A creative found by several searches is returned once.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | array | ["nike"] | Brand or advertiser names. Used only when domains and advertiserIds are empty too |
domains | array | none | Domains such as nike.com |
advertiserIds | array | none | Advertiser IDs (AR plus 20 digits) |
region | string | empty | Two-letter country code to only get ads shown there (US, GB, DE, FR, CH, ...) |
maxAdvertisersPerTerm | integer | 1 | Advertisers to scrape per name (1-10) |
maxAds | integer | 50 | Total ads across all searches (1-100,000) |
maxAdsPerQuery | integer | 0 | Optional cap per name, domain or advertiser (0 = only the total cap) |
includeAdDetails | boolean | true | Load the ad content (headline, description, display URL, images, video, variations, countries). Slower: about 2-3 seconds per ad |
What you get
One row per ad creative:
| Field | Type | Description |
|---|---|---|
creative_id | string | Unique creative ID |
advertiser_id | string | Advertiser ID (matched advertiser for name searches) |
advertiser_name | string | Advertiser display name |
advertiser_url | string | Advertiser page in the Transparency Center |
ad_format | string | TEXT, IMAGE or VIDEO |
first_shown_date | string | First date the ad was shown (YYYY-MM-DD) |
last_shown_date | string | Last date the ad was shown (YYYY-MM-DD) |
image_url | string | Ad image URL (text ads render as an image) |
preview_url | string | Google preview script URL of the creative (image and video ads) |
domain | string | Destination domain (domain searches only) |
search_term | string | Name, domain or advertiser ID that found this ad |
search_type | string | keyword, domain or advertiser_id |
region | string | Region filter applied, empty for all regions |
source_url | string | Direct link to the creative |
scraped_at | string | ISO 8601 scrape time |
headline | string | Ad headline (with ad details) |
description | string | Ad description text (with ad details) |
display_url | string | Display URL shown with the ad (with ad details) |
destination_url | string | Landing page, when the ad exposes it (with ad details) |
sitelinks | array | Extra links shown under a text ad, as {title, url}. Empty if none could be read (with ad details) |
variations_count | integer | Number of variations of this creative (with ad details) |
image_urls | array | Image URLs of the ad variations (with ad details) |
video_url | string | Video link for video ads (with ad details) |
regions_shown | array | Countries the ad was shown in, as two-letter codes (with ad details) |
detail_status | string | not_requested, ok, partial (ad text could not be loaded) or failed (list fields only) |
The ad detail fields are always present. With includeAdDetails switched off they are empty and detail_status is not_requested. If the ad content cannot be loaded for an ad, the row is still returned with detail_status set to failed (list fields only) or partial (ad text missing, other details present). Each ad is billed once either way.
Output example (with ad details)
{"creative_id": "CR00033613616649338881","advertiser_id": "AR16735076323512287233","advertiser_name": "Nike, Inc.","advertiser_url": "https://adstransparency.google.com/advertiser/AR16735076323512287233","ad_format": "TEXT","first_shown_date": "2023-11-17","last_shown_date": "2026-10-21","image_url": "https://tpc.googlesyndication.com/archive/simgad/6766108139373326992","preview_url": "","headline": "Nike® Official Site","description": "Shop the official Nike® store for the latest shoes, apparel & gear.","display_url": "nike.com","destination_url": "","sitelinks": [],"variations_count": 5,"image_urls": ["https://tpc.googlesyndication.com/archive/simgad/6766108139373326992"],"video_url": "","regions_shown": ["US"],"detail_status": "ok","domain": "","search_term": "nike","search_type": "keyword","region": "US","source_url": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR00033613616649338881","scraped_at": "2026-10-21T10:30:00Z"}
Pricing
Pay per event:
| Event | When | Price |
|---|---|---|
actor-start | Once per run, only if at least one ad was saved | $0.005 |
google-ads-result | Per ad saved to the dataset | $0.001 |
$0.001 per ad means $1.00 per 1,000 ads. Runs that find nothing cost nothing.
Data protection
This actor returns only data that is publicly visible on the source pages. Results can include personal data, such as names, phone numbers, email addresses and addresses of private persons, sole traders or contact persons. Where the source labels an entry type, it is included so you can filter the results yourself.
You are responsible for using the data lawfully, including the GDPR/DSGVO, national data-protection laws and unfair-competition rules (e.g. UWG) for marketing and outreach.
Related actors
- Facebook Ad Library Scraper - the same competitor research for Meta ads.
- Google Search Scraper - organic and paid results for your keywords.
- SimilarWeb Scraper - traffic and channel data for the advertisers you find.
- Website Contact Extractor - contact details from advertiser websites.
Notes
- The Ads Transparency Center is a public database that Google publishes by law, no login required.
- If a search finds no ads, the run ends with a clear status message and a failed exit, so you are not billed.
- Google limits heavy use. Blocked requests are retried automatically; if a run still reports being blocked, try again later.