Google Ads Transparency Scraper — Advertiser Ad Library Export avatar

Google Ads Transparency Scraper — Advertiser Ad Library Export

Pricing

from $3.00 / 1,000 ad creative scrapeds

Go to Apify Store
Google Ads Transparency Scraper — Advertiser Ad Library Export

Google Ads Transparency Scraper — Advertiser Ad Library Export

Scrape ad creatives from the Google Ads Transparency Center by advertiser domain or advertiser ID — creative, format, regions, first/last shown, landing URL — export to JSON or CSV. A Google Ads Transparency API alternative and data exporter. You pay only for ads that land. Google ads spy tool.

Pricing

from $3.00 / 1,000 ad creative scrapeds

Rating

5.0

(1)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

121

Total users

23

Monthly active users

4 days ago

Last modified

Share

The Google Ads Transparency Center Scraper exports every ad a brand or competitor runs on Google Search, YouTube, Display, Shopping, Maps and Play. Give it a domain such as nike.com or an advertiser ID, and it returns one row per ad creative: advertiser, creative ID, format, landing domain, first and last shown dates, impressions and preview URLs. Download the dataset as JSON, CSV or Excel, or call it as an API. Google publishes no official API for the Transparency Center; this Actor is the data export it does not offer.

$0.20 per run plus $0.003 per ad ($3.20 per 1,000 ads). A run that Google never answers is not charged.

Full tutorial (2 min) · 50-second demo (Short)

What data can you extract from Google Ads Transparency Center?

One row per ad creative, with these fields:

FieldTypeWhat it holds
advertiser_idstringGoogle's stable advertiser identifier (AR…)
advertiser_namestringPublic brand name of the advertiser
creative_idstringStable per-ad identifier (CR…)
creative_urlstringLink to the ad in the Transparency Center
landing_domainstringDomain the ad clicks through to
format_typeinteger1 text, 2 image, 3 video (inferred)
first_shown_tsintegerFirst observed impression, Unix seconds
last_shown_tsintegerLast observed impression, Unix seconds
impressionsintegerImpression count Google reports
preview_image_urlstring or nullThumbnail of an image ad
preview_content_js_urlstring or nullPreview bundle of a video or rich ad
regionstringThe region label you passed (display only)
scraped_atstringISO 8601 UTC timestamp

Turn on domain screening mode and you get one row per input domain instead: does it run Google Ads, roughly how many, since when.

  • Search by domain or advertiser ID. Paste brand domains, advertiser IDs or both. Dozens of targets fit in one run.
  • Deduplicated batches. An ad that appears under two of your targets is written and billed once.
  • Competitor ad history. First and last shown dates tell you which creatives a competitor has kept running for months and which it dropped after a week.
  • Bulk domain screening. Check a prospect list or a brand portfolio for Google Ads activity in one run, billed per domain rather than per ad.
  • Clean, typed rows. Every field is validated before it reaches the dataset, and the output is tested against real image, video and minimal creatives before each release.
  • Automatic retries and optional proxy support. Temporary refusals from Google are retried; Apify Proxy is on by default and you can supply your own.
  • Works with your tools. Export to JSON, CSV, Excel or JSONL, call it through the Apify API, schedule it, or use it from Claude, ChatGPT or Cursor through Apify's MCP server.

What can you use Google Ads Transparency data for?

  • Competitor ad monitoring. Pull a competitor's ads every week and diff the creative set to see what launched and what was paused.
  • Agency reporting. Show a client exactly which ads its rivals run before the quarterly review, with impressions and dates.
  • Trademark and brand protection. Find advertisers whose landing domain does not match their name, or who run ads against your brand.
  • Affiliate compliance. Spot affiliates advertising where your terms forbid it.
  • Market research. Measure how crowded a vertical is and which formats dominate it.
  • Lead qualification. Screen a list of domains for Google Ads activity before you pitch them.
  • AI and RAG pipelines. Feed creative metadata and image URLs into a vector store for image-grounded competitive analysis.

How to scrape Google Ads Transparency Center

  1. Click Try for free on this page.
  2. Paste one or more brand domains (nike.com, adidas.com), one per line.
  3. Optionally add advertiser IDs (AR…, found in the Transparency Center URL of an advertiser).
  4. Optionally set a date window. The default is the last 365 days.
  5. Optionally turn on domain screening mode for one summary row per domain.
  6. Click Start. When the run finishes, download the dataset from the Storage tab or fetch it through the API.

Apify's free plan includes $5 of monthly platform credit, which covers one run of about 1,600 ads at the prices below.

How much does it cost to scrape Google Ads Transparency Center?

Pay-per-event pricing with two events:

EventPriceWhen it is charged
Run start$0.20Once per run, the first time Google answers the search
Ad creative$0.003Per ad written to the dataset
PullCost
100 ads$0.50
1,000 ads$3.20
10,000 ads$30.20
100,000 ads (monthly competitor sweep)$300.20

The run start fee is owed once Google answers, whether it returns 500 ads or none. If Google never answers (a blocked exit IP, a rate limit, an outage), the run ends as a failure and costs $0.00.

In domain screening mode the ad event is charged once per screened domain or advertiser, not per ad. Screening 50 domains costs $0.20 plus 50 × $0.003, about $0.35, however many ads each domain runs.

FieldTypeRequiredDefaultNotes
searchDomainsarray of stringsone of["nike.com"]Brand landing domains
advertiserIdsarray of stringsone of[]Google advertiser IDs (AR…)
regionstringnoanywhereLabel only. Google does not filter results by region (see Limitations)
dateFromYYYY-MM-DDno365 days agoStart of the ad activity window
dateToYYYY-MM-DDnotoday (UTC)End of the window
maxResultsintegerno1000Total rows across all targets. 0 means unlimited
maxPagesintegerno25Result pages per target, about 40 ads each
proxyConfigurationproxy confignoApify Proxy onYour own proxies work too
screeningModebooleannofalsetrue gives one row per domain instead of one per ad

At least one of searchDomains or advertiserIds must contain an entry.

{
"searchDomains": ["nike.com", "adidas.com"],
"advertiserIds": ["AR03012025048987521025"],
"dateFrom": "2025-11-15",
"dateTo": "2026-05-15",
"maxResults": 5000,
"maxPages": 25,
"proxyConfiguration": { "useApifyProxy": true }
}

One ad creative per row:

{
"advertiser_id": "AR18378488041124659201",
"advertiser_name": "Nike Retail BV",
"creative_id": "CR15771942603307614209",
"creative_url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR15771942603307614209?region=anywhere",
"landing_domain": "nike.com",
"format_type": 1,
"first_shown_ts": 1761145807,
"last_shown_ts": 1778871417,
"impressions": 205,
"preview_image_url": "https://tpc.googlesyndication.com/archive/simgad/12774179880874022668",
"preview_content_js_url": null,
"region": "anywhere",
"scraped_at": "2026-05-15T19:17:59+00:00"
}

With screeningMode: true, one row per input domain. A domain with no ads is a normal successful row, not an error:

{
"domain": "nike.com",
"has_ads_detected": true,
"ad_count": 40,
"first_seen_ts": 1761145807,
"last_seen_ts": 1778871417,
"sample_creative_url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR15771942603307614209?region=anywhere"
}

Export as JSON, CSV, Excel or JSONL from the Storage tab, or fetch items with GET /v2/datasets/{datasetId}/items. Sort by impressions to find the ads a competitor spends the most on.

Limitations

  • Region is a label, not a filter. Google returns the same ads whatever region you pass. The field exists so you can tag exports by intended market.
  • No browse-by-country mode. You must supply a domain or an advertiser ID. There is no "all ads in Germany" query on Google's side.
  • Video and rich ads give a preview bundle URL, not a video file. Rendering the actual frame needs a browser downstream.
  • About 12 months of history. Google keeps roughly a year of ads; older date windows are clipped to that.
  • Large advertisers stop at about 1,000 ads per query. Google stops answering past that point. The default maxPages of 25 is deliberately conservative; raise it for fuller pulls knowing the ceiling exists.
  • Screening mode counts are a floor. ad_count counts the ads actually pulled within maxPages and maxResults, so a domain may run more.

FAQ

How do I see all the ads a competitor runs on Google?

Enter the competitor's domain, run the Actor and open the dataset. Each row is one ad with its format, landing domain, impressions and the dates it was first and last shown. For a changing picture, schedule a weekly run and compare creative IDs between runs.

Is there a Google Ads Transparency Center API?

Google does not publish one. This Actor is the closest thing: start it through the Apify API with POST /v2/acts/DevilScrapes~google-ads-transparency/run-sync-get-dataset-items and the ads come back in the response, or run it from an Apify schedule, webhook, Make, Zapier or n8n.

The Transparency Center is a public registry that Google operates under EU and US advertising rules. The Actor reads only what the public site shows, at a polite pace, without logging in, and collects advertiser-level metadata rather than personal data. Check the rules that apply to your own use of the data.

Is this a Google Ads Library scraper?

Yes. "Google Ads Library" is what many people call the Google Ads Transparency Center, by analogy with Meta's Ad Library. Same registry, same data.

Can I filter ads by country?

No. Google's results are the same for every region, so the region field only labels your export. If Google adds a working region filter, this Actor will expose it.

Why do some rows have no preview image?

Video, animated and rich ads are rendered by Google from a script bundle, so they carry preview_content_js_url instead of preview_image_url. Static image ads have a direct thumbnail.

Why do I get fewer ads than Google's total?

Google stops serving results at about 1,000 ads per query. Raising maxPages helps up to that ceiling; splitting a large advertiser by date window helps further.

Can I check many domains for Google Ads activity at once?

Yes. Turn on screeningMode and give it the list. You get one row per domain with has_ads_detected, an ad_count, first and last seen dates and a sample ad, billed once per domain.

Can I use it from Claude, ChatGPT or Cursor?

Yes. Apify's MCP server exposes every public Actor to AI assistants, so you can ask your assistant to pull a competitor's Google ads and summarise them. The run is billed to your Apify account at the prices above.

How do I export to Google Sheets or a database?

Download CSV from the Storage tab for a one-off, or register a webhook on ACTOR.RUN.SUCCEEDED and let Make, Zapier or n8n append each run's dataset to a sheet or a table.

More Devil Scrapes Actors

Your feedback

Spotted a missing field or want a new feature? Open an issue on the Apify Store listing. We read every one.

Built by Devil Scrapes. We do the dirty work so your dataset stays clean.