Google Ads Transparency Leads Scraper [Download assets] avatar

Google Ads Transparency Leads Scraper [Download assets]

Pricing

from $2.00 / 1,000 ads

Go to Apify Store
Google Ads Transparency Leads Scraper [Download assets]

Google Ads Transparency Leads Scraper [Download assets]

Google Ads Transparency Center scraper: every ad an advertiser ran, by region, format and date, with variations, landing domains and previews. Ads $2/1,000. Optional asset download saves images, videos and previews to your key-value store at $0.003 per file, with a size cap.

Pricing

from $2.00 / 1,000 ads

Rating

5.0

(6)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

19

Bookmarked

446

Total users

139

Monthly active users

3 days ago

Last modified

Share

Google Ads Transparency Center Scraper

Every ad an advertiser runs on Google, by domain or advertiser ID, with the ad copy, dates, regions and variations on one row.

Give it nike.com or an AR… advertiser ID. You get one dataset row per ad: format, first and last shown dates, headline, description, display URL, landing domain, the regions it served in with impression ranges, and every creative variation with its image, video or YouTube link.

How the Google Ads Transparency Scraper works


Why Use This Scraper?

  • The copy is on the row. headline, description, callToAction and displayUrl are top-level columns, so a CSV export is readable without opening variations[].
  • Format matches Google. format is the label the Transparency Center itself uses (TEXT, IMAGE, VIDEO), including for text ads Google archives as images.
  • Dates you can sort on. firstShown, lastShown and numServedDays on every row, plus first/last dates per region.
  • Several advertisers per run. domains and advertiserIds take lists, so one run can cover a whole competitor set.
  • Scheduled watching. onlyNewAds returns only ads you have not received before.
  • Optional asset download. Image and video files can be copied into your own key-value store, so they outlive Google's expiring links.

Overview

The Google Ads Transparency Center lists the ads verified advertisers run on Search, YouTube, Display, Shopping, Maps and Play. This actor reads the same public data the site shows and writes it as structured rows.

It is built for competitor research, brand monitoring, agency audits and anyone who needs ad history in a spreadsheet or database rather than in a browser tab.


Supported Inputs

Advertiser domain or ID

InputExampleWhat you get
Domainnike.comAds Google associates with that domain
Advertiser IDAR16735076323512287233Every ad from that advertiser account
Batchdomains: ["nike.com", "adidas.com"], advertiserIds: [...]All of the above in one run

Transparency Center URLs (startUrls)

Paste URLs straight from the site when you already have them:

https://adstransparency.google.com/?region=US&domain=nike.com
https://adstransparency.google.com/?region=US&domain=temu.com&format=IMAGE
https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US
https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR00378902083572596737?region=US

Unsupported inputs

  • Brand names. The Transparency Center has no name search. A single word such as nike is tried as nike.com and every row is marked domainWasGuessed: true; a multi-word name such as Nike Inc is rejected with an explanation in the log.
  • Ad performance data. Google does not publish spend, clicks or conversions for commercial ads, so neither does this actor.

Use Cases

WhoWhat they do with it
Performance marketersSee which headlines and offers competitors keep running, and for how long
AgenciesAudit a prospect's live ads before a pitch
Brand and legal teamsFind ads that use a brand name or domain
Researchers and journalistsBuild an archive of an advertiser's ads across regions
Product teamsFeed ad history into a dashboard, BI tool or LLM pipeline

How It Works

  1. Each domain or advertiser ID becomes a Transparency Center search with your region, format, platform and date filters.
  2. The search results give the list of creatives, with Google's format label and first/last shown dates.
  3. For each creative the actor loads its detail record: variations, regions, impression ranges and targeting.
  4. Each variation's preview is read for the ad copy, display URL, images and video links.
  5. One row per creative is written to the dataset, up to maxItems.

Input Configuration

{
"searchQuery": "nike.com",
"region": "US",
"format": "ALL",
"maxItems": 100
}
FieldTypeDefaultWhat it does
searchQuerystring—One advertiser domain (nike.com) or advertiser ID (AR…)
domainsarray—More advertiser domains in the same run
advertiserIdsarray—More AR… advertiser IDs in the same run
regionstringanywhereCountry the ads were shown in, e.g. US, DE
formatstringALLALL, TEXT, IMAGE or VIDEO
platformstringALLALL, SEARCH, YOUTUBE, MAPS, PLAY or SHOPPING
dateFrom / dateTostring—Only ads shown within these dates
startUrlsarray—Transparency Center URLs; when set they replace the fields above
onlyNewAdsbooleanfalseSkip ads already delivered to your account on earlier runs
monitorStateNamestring—Keeps separate "seen" lists for separate watches
advertiserCheckbooleanfalseFor an AR… query, check the advertiser exists before scraping
maxItemsinteger100Hard cap on ads written in this run
downloadAssetsbooleanfalseCopy each variation's image and video files into your key-value store
downloadPreviewsbooleanfalseCopy each row's preview image into your key-value store
maxAssetSizeKbinteger10240Skip files larger than this when downloading
minDelay / maxDelayinteger5 / 10Seconds between Transparency Center requests
minConcurrency / maxConcurrencyinteger1 / 10Requests processed in parallel
maxRequestRetriesinteger100Retries per failed request
proxyobject—Leave empty; the actor brings its own proxy. Your own proxy URLs are used if you set them

Common scenarios

One competitor, US text ads only

{ "searchQuery": "nike.com", "region": "US", "format": "TEXT", "maxItems": 200 }

A competitor set in one run

{ "domains": ["nike.com", "adidas.com", "puma.com"], "region": "GB", "maxItems": 300 }

Weekly watch for new ads only

{ "searchQuery": "temu.com", "region": "US", "onlyNewAds": true, "monitorStateName": "temu-us", "maxItems": 500 }

Keep copies of the creatives

{ "searchQuery": "AR16735076323512287233", "downloadAssets": true, "maxItems": 50 }

On the free Apify plan a run is capped at 60 ads and the first start URL.


Output Overview

One row per ad creative. Main groups of fields:

  • Identity: advertiserId, creativeId, adUrl, advertiserName, advertiserLegalName, advertiserCountry
  • Classification and dates: format, firstShown, lastShown, numServedDays
  • Ad copy: headline, longHeadline, description, callToAction, displayUrl
  • Destination: landingDomain, landingDomainSource, landingUrls
  • Media: previewUrl, and per variation image, videoUrl, youtubeUrl, thumbnailUrl, logoUrl
  • Reach: creativeRegions, regionStats[] with impression ranges and per-surface stats, targeting
  • Detail: variations[], extractionStatus

Output Samples

A text ad from a live run (trimmed: variations and regionStats shortened to one entry):

{
"advertiserId": "AR16735076323512287233",
"creativeId": "CR12049141212574121985",
"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR12049141212574121985?region=US",
"format": "TEXT",
"firstShown": "2023-11-17T00:02:31.000Z",
"advertiserName": "Nike, Inc.",
"advertiserCountry": "US",
"advertiserLegalName": "Nike, Inc.",
"lastShown": "2026-10-09T09:26:21.000Z",
"previewUrl": "https://tpc.googlesyndication.com/archive/simgad/17814954233202857196",
"headline": "Nike® Official Site",
"longHeadline": null,
"description": "Built on defiance, tradition, and a legacy larger than game. Shop Jordan.",
"displayUrl": "nike.com",
"callToAction": null,
"landingDomain": "nike.com",
"landingDomainSource": "display_url",
"landingUrls": [],
"extractionStatus": { "variationsTotal": 3, "variationsResolved": 0, "variationsAssetOnly": 3, "variationsFailed": 0, "assetsFailed": 0 },
"numServedDays": 1058,
"targeting": null,
"creativeRegions": ["United States"],
"regionStats": [
{ "regionCode": "US", "regionName": "United States", "firstShown": null, "lastShown": "2026-09-01", "impressions": null, "surfaceServingStats": null }
],
"variations": [
{
"headline": "Nike® Official Site",
"description": "Built on defiance, tradition, and a legacy larger than game. Shop Jordan.",
"visibleUrl": "nike.com",
"advertiserName": "Nike",
"destinationUrl": null,
"image": null,
"format": "TEXT",
"destinationStatus": "asset_only"
}
]
}

Image and video ads have the same shape. Video variations add videoUrl, youtubeVideoId, youtubeUrl and thumbnailUrl; display ads that expose a click-through URL fill landingUrls and set landingDomainSource to landing_url.


Key Output Fields

FieldDescription
formatTEXT, IMAGE or VIDEO, as Google classifies the ad. Variations carry the same label unless they hold a video
firstShown / lastShownWhen the ad was first and last shown (ISO 8601)
numServedDaysDays between firstShown and lastShown
headline / longHeadlineAd headline as rendered
descriptionAd body copy. Never the display URL; that goes to displayUrl
displayUrlThe URL shown in the ad, e.g. nike.com
callToActionButton label such as "Learn more", where the ad has one
previewUrlGoogle's archived preview image of the ad

Destination

FieldDescription
landingUrlsClick-through URLs found in the ad previews
landingDomainDomain the ad sends people to
landingDomainSourcelanding_url when taken from a click-through URL, display_url when taken from the display URL (Google requires the two domains to match)

Reach

FieldDescription
creativeRegionsCountries the ad served in
regionStats[]Per country: first/last shown, impression range (lowerBound/upperBound), per-surface stats (Google Search, YouTube, Shopping, Maps, Play)
targetingWhich targeting categories (demographics, geography, contextual) the advertiser used, where Google discloses it

Variations

Each entry in variations[] is one rendering of the ad: headline, description, visibleUrl, callToAction, advertiserName, image, logoUrl, videoUrl, youtubeVideoId, youtubeUrl, thumbnailUrl, destinationUrl, format, destinationStatus, and googleTemplateData with the raw template payload when Google provides one.

With downloadAssets on, image and videoUrl point to your key-value store and the Google URLs move to originalImage and originalVideoUrl. With downloadPreviews on, the same happens for previewUrl / originalPreviewUrl.


FAQ

Can I search by brand name?

No. The Transparency Center only searches by advertiser domain or advertiser ID. A single word is tried as <word>.com and the rows say so (domainWasGuessed, queriedDomain); a multi-word name is rejected.

Why do text ads have an image in previewUrl?

Google archives text ads as rendered images. The ad is still a text ad, so format stays TEXT, and the copy is in headline, description and displayUrl.

Why is headline sometimes <dynamically generated based on landing page content>?

That is a Dynamic Search Ad. Google writes the headline from the landing page at serving time and shows that placeholder in the Transparency Center.

Why is landingDomain empty on some rows?

Some ads come back from Google only as archived images, with no text or click-through URL to read. Those rows keep landingDomain null rather than guess.

Are impressions always available?

No. Google publishes impression ranges mainly for ads shown in the EU and for political ads. Elsewhere impressions is null.

How do I only get ads I have not seen before?

Set onlyNewAds: true. The first run returns everything and records it; later runs return only new creatives. Use monitorStateName to keep separate watches apart.

What does asset download do?

downloadAssets and downloadPreviews copy the image and video files into your run's key-value store and point the row at those copies. They are off by default. Storage counts against your Apify account.

Can it read private or logged-in data?

No. It reads only the public Transparency Center.

How fast is it?

Requests are spaced by minDelay/maxDelay seconds to stay within the site's limits. Expect a few hundred ads in several minutes; set maxItems to what you need.


Support

Found a bug or need a field? Open an issue on this actor's Issues tab or email muhamed.didovic@gmail.com.

Additional Services

Need a custom export, scheduled monitoring or another site scraped? Email muhamed.didovic@gmail.com.

Explore More Scrapers

More scrapers at apify.com/memo23.


🤖 For AI Agents & LLM Apps

Compact reference for agents calling this actor through the Apify MCP server or the Apify API (memo23/google-ad-transparency-scraper-cheerio or memo23/google-ads-transparency-scraper-ppe; same code).

Purpose: ads from Google's Ads Transparency Center for an advertiser domain or AR… ID, one row per creative with copy, dates, regions and variations.

Minimal input:

{ "searchQuery": "nike.com", "region": "US", "maxItems": 10 }

Output: one row per ad: advertiserId, creativeId, adUrl, advertiserName, advertiserLegalName, advertiserCountry, format (TEXT/IMAGE/VIDEO), firstShown, lastShown, numServedDays, previewUrl, headline, longHeadline, description, displayUrl, callToAction, landingDomain, landingDomainSource, landingUrls, creativeRegions, regionStats [{regionCode, regionName, firstShown, lastShown, impressions {lowerBound, upperBound}, surfaceServingStats}], targeting, variations [{headline, description, visibleUrl, image, videoUrl, youtubeUrl, destinationUrl, format}], extractionStatus.

Behaviors an agent should know:

  • searchQuery takes a domain or AR… ID only; there is no name search. domains / advertiserIds add more in one run.
  • startUrls, when set, replaces the query, region, format, platform and date fields.
  • Always set maxItems (default 100); a large advertiser has thousands of ads. Free-plan runs are capped at 60.
  • onlyNewAds + monitorStateName return only creatives not delivered before to this account.
  • Billing is per ad written. downloadAssets / downloadPreviews are optional; the listing's pricing page shows whether file downloads are billed.
  • landingDomain comes from a click-through URL when one exists, otherwise from the display URL (landingDomainSource says which).

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned, including Google and the Google Ads Transparency Center, are the property of their respective owners.

The scraper accesses only the publicly available Google Ads Transparency Center — no authenticated endpoints, paid features, or content behind a Google login wall. Users are responsible for ensuring their use complies with Google's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.


SEO Keywords

google ads transparency scraper, scrape google ads transparency center, ads transparency center API, google ads scraper, Apify google ads scraper, competitor ads scraper, advertiser ads export, ad creative scraper, text ad scraper, image ad scraper, video ad scraper, youtube ads data, competitor ad intelligence, ad copy research, brand monitoring ads, ad archive data, advertiser domain lookup, marketing intelligence data, PPC competitor research, google ads library