Google Ads Transparency Scraper — Advertiser Ad Library Export
Pricing
from $3.00 / 1,000 ad creative scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
121
Total users
23
Monthly active users
4 days ago
Last modified
Categories
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:
| Field | Type | What it holds |
|---|---|---|
advertiser_id | string | Google's stable advertiser identifier (AR…) |
advertiser_name | string | Public brand name of the advertiser |
creative_id | string | Stable per-ad identifier (CR…) |
creative_url | string | Link to the ad in the Transparency Center |
landing_domain | string | Domain the ad clicks through to |
format_type | integer | 1 text, 2 image, 3 video (inferred) |
first_shown_ts | integer | First observed impression, Unix seconds |
last_shown_ts | integer | Last observed impression, Unix seconds |
impressions | integer | Impression count Google reports |
preview_image_url | string or null | Thumbnail of an image ad |
preview_content_js_url | string or null | Preview bundle of a video or rich ad |
region | string | The region label you passed (display only) |
scraped_at | string | ISO 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.
Google Ads Transparency Center scraper features
- 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
- Click Try for free on this page.
- Paste one or more brand domains (
nike.com,adidas.com), one per line. - Optionally add advertiser IDs (
AR…, found in the Transparency Center URL of an advertiser). - Optionally set a date window. The default is the last 365 days.
- Optionally turn on domain screening mode for one summary row per domain.
- 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:
| Event | Price | When it is charged |
|---|---|---|
| Run start | $0.20 | Once per run, the first time Google answers the search |
| Ad creative | $0.003 | Per ad written to the dataset |
| Pull | Cost |
|---|---|
| 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.
Google Ads Transparency Center scraper input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchDomains | array of strings | one of | ["nike.com"] | Brand landing domains |
advertiserIds | array of strings | one of | [] | Google advertiser IDs (AR…) |
region | string | no | anywhere | Label only. Google does not filter results by region (see Limitations) |
dateFrom | YYYY-MM-DD | no | 365 days ago | Start of the ad activity window |
dateTo | YYYY-MM-DD | no | today (UTC) | End of the window |
maxResults | integer | no | 1000 | Total rows across all targets. 0 means unlimited |
maxPages | integer | no | 25 | Result pages per target, about 40 ads each |
proxyConfiguration | proxy config | no | Apify Proxy on | Your own proxies work too |
screeningMode | boolean | no | false | true 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 }}
Google Ads Transparency Center data output
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
maxPagesof 25 is deliberately conservative; raise it for fuller pulls knowing the ceiling exists. - Screening mode counts are a floor.
ad_countcounts the ads actually pulled withinmaxPagesandmaxResults, 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.
Is it legal to scrape the Google Ads Transparency Center?
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
- Meta Ad Library Scraper: Facebook and Instagram ads by advertiser or keyword.
- TikTok Ad Library Scraper: TikTok's commercial content library.
- Pinterest Ad Library Scraper: Pinterest ads by advertiser.
- Bing Ad Library Scraper: Microsoft Advertising's ad library.
- Apple Ad Repository Scraper: App Store Search Ads.
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.