Google Ads Transparency Center Ads & Creatives Scraper avatar

Google Ads Transparency Center Ads & Creatives Scraper

Pricing

from $10.20 / 1,000 results

Go to Apify Store
Google Ads Transparency Center Ads & Creatives Scraper

Google Ads Transparency Center Ads & Creatives Scraper

Scrape ads from the Google Ads Transparency Center by advertiser name or domain: advertiser id, verified region, creative id, ad format, preview and thumbnail URL, first and last shown dates and regions. Export to JSON, CSV or Excel.

Pricing

from $10.20 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Google Ads Transparency Center Ads & Creatives Scraper

Google Ads Transparency Center Ads & Creatives Scraper

Here is one real result, with every field the actor returns:

{
"thumbnailUrl": null,
"advertiserName": "Nike Retail BV",
"advertiserLegalName": "Nike Retail BV",
"advertiserId": "AR18378488041124659201",
"advertiserVerifiedRegion": null,
"creativeId": "CR04617388669844586497",
"adFormat": "text",
"topic": "Apparel & Accessories",
"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&creativeId=453050332260&adGroupId=108305725167 [trimmed for display; full URL returned]",
"adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR04617388669844586497?region=anywhere",
"firstShown": "2021-10-25T07:00:00.000Z",
"lastShown": "2026-08-10T14:07:32.000Z",
"impressionsMin": 1000000,
"regionsShown": ["AT"],
"regionsShownCount": 1,
"regionDetails": [
{
"region": "AT",
"firstShown": "2023-03-01",
"lastShown": "2026-08-10",
"impressionsMin": 1000000
}
],
"adDomain": "nike.com",
"query": "nike.com",
"source": "Google Ads Transparency Center",
"observedAt": "2026-08-10T14:31:50.745Z",
"error": null
}

The most complete Google Ads Transparency Center scraper available. It returns every field the transparency center exposes for an ad creative, including advertiser identity, ad format, topic, preview and creative URLs, first/last shown dates, minimum impressions and per-region run history, and gives you advertiser and region filters to target exactly the ads you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor resolves each advertiser name or domain you pass to its Google Ads Transparency Center advertiser ID, then pages through that advertiser's ad creatives and writes one normalized record per creative to the run's dataset. Each record carries the advertiser identity, creative ID, ad format, topic, preview and creative URLs, the first and last shown dates, a minimum impressions estimate, and a per-region breakdown of where and when the ad ran. An optional regions filter keeps only ads that ran in the countries you specify.

Data covers ads published in the Google Ads Transparency Center. Fields the source does not populate are returned as null; the actor never invents a value.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 ad creatives for the advertiser behind nike.com.

{
"advertiserQueries": ["nike.com"],
"maxAds": 10
}

Pass an advertiser name (for example Nike) or a domain (for example nike.com) in advertiserQueries. Add regions to keep only ads shown in specific countries.

Input reference

FieldTypeRequiredDefaultDescription
advertiserQueriesstring[]yes["nike.com"]One or more advertiser names (for example Nike) or website domains (for example nike.com). Each is resolved to its advertiser and paged.
maxAdsintegerno10Maximum number of ads (creatives) to collect across the whole run.
regionsstring[]no(empty)Two-letter ISO country codes (for example US, GB, DE) to keep only ads that ran in those regions.

Filters combine with logical AND across the run.

Output reference

One dataset item per ad creative. Types: string, integer, string[], object[], or null when the source value is absent.

FieldTypeDescription
thumbnailUrlstringCreative thumbnail image URL, or null for non-image formats.
advertiserNamestringAdvertiser display name.
advertiserLegalNamestringAdvertiser verified legal name, or null.
advertiserIdstringGoogle Ads Transparency Center advertiser ID (AR...).
advertiserVerifiedRegionstringRegion where the advertiser is verified, or null.
creativeIdstringCreative ID (CR...), unique per ad.
adFormatstringAd format: text, image, video.
topicstringAd topic/category, for example Apparel & Accessories, or null.
previewUrlstringURL that renders the ad creative preview.
adUrlstringCanonical transparency center URL for the creative.
firstShownstringISO 8601 date the ad was first shown anywhere.
lastShownstringISO 8601 date the ad was last shown anywhere.
impressionsMinintegerMinimum impressions estimate across all regions, or null.
regionsShownstring[]Country codes where the ad ran.
regionsShownCountintegerNumber of regions the ad ran in.
regionDetailsobject[]Per-region history. Each has region, firstShown, lastShown, impressionsMin.
adDomainstringAdvertiser domain the query resolved to, or null.
querystringThe advertiser query that produced this record.
sourcestringAlways Google Ads Transparency Center.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"advertiserQueries": ["nike.com"], "maxAds": 10}):

{
"thumbnailUrl": null,
"advertiserName": "Nike Retail BV",
"advertiserLegalName": "Nike Retail BV",
"advertiserId": "AR18378488041124659201",
"creativeId": "CR04617388669844586497",
"adFormat": "text",
"topic": "Apparel & Accessories",
"adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR04617388669844586497?region=anywhere",
"firstShown": "2021-10-25T07:00:00.000Z",
"lastShown": "2026-08-10T14:07:32.000Z",
"impressionsMin": 1000000,
"regionsShown": ["AT"],
"regionsShownCount": 1,
"regionDetails": [
{ "region": "AT", "firstShown": "2023-03-01", "lastShown": "2026-08-10", "impressionsMin": 1000000 }
],
"adDomain": "nike.com",
"query": "nike.com",
"source": "Google Ads Transparency Center",
"observedAt": "2026-08-10T14:31:50.745Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-ads-transparency-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"advertiserQueries":["nike.com"],"maxAds":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-ads-transparency-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"advertiserQueries":["Nike","adidas.com"],"maxAds":100,"regions":["US","GB"]}'

Apify CLI:

apify call scrapers_lat/google-ads-transparency-scraper \
--input '{"advertiserQueries":["nike.com"],"maxAds":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per ad creative returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 ads per run. Upgrade for higher maxAds.
  • Residential proxy. The actor automatically escalates to an Apify residential proxy when the source rate or geo blocks a direct request, so runs stay reliable without extra configuration.

FAQ and troubleshooting

A run returned 0 records. Why? The advertiser name or domain did not resolve to a transparency center advertiser, or the advertiser has no ads matching your regions filter. Try the exact domain. Zero-result runs are not charged.

Should I use a name or a domain? Either works. A domain (for example nike.com) resolves most reliably; a plain name is matched against advertiser names.

What does impressionsMin mean? Google publishes impressions as a minimum threshold band, not an exact count. The field reports that minimum estimate; per-region minimums are in regionDetails.

How do I see where an ad ran? regionsShown lists the country codes, and regionDetails gives per-region first/last shown dates and minimum impressions.

Why is thumbnailUrl null? The creative is a text ad, which has no thumbnail. Image and video creatives populate the field.

Is this an official Google tool? No. This actor is independent and has no affiliation with Google. It reads only data that is publicly available in the Google Ads Transparency Center. Use it in accordance with Google's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Google. Accesses only publicly available Google Ads Transparency Center data. Use in accordance with Google's terms of service.