Google Ads Transparency Scraper: Ads, Text, Video IDs & Reach
Pricing
from $1.50 / 1,000 ads
Google Ads Transparency Scraper: Ads, Text, Video IDs & Reach
Scrape Google Ads Transparency Center without login: every ad by brand, domain or advertiser ID, with ad text, YouTube video IDs, EU reach and audience data, multi-country filters, and new-ad monitoring. Pay only for delivered ads.
Pricing
from $1.50 / 1,000 ads
Rating
0.0
(0)
Developer
CleanData Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Google Ads Transparency Scraper – Ads, Ad Text, YouTube Video IDs & EU Reach
What does Google Ads Transparency Scraper do?
This Actor is a Google Ads Transparency Center scraper and API. It lets you see and export competitor ads on Google – the ads an advertiser runs on Search, YouTube, Shopping, Maps and Play – as structured data, for ad research, competitor monitoring and creative inspiration.
Export the ads any company runs on Google (Search, YouTube, Shopping, Maps and Play) from the public Google Ads Transparency Center. Search by brand name, website, advertiser ID or pasted URL. Filter by one or several countries, platform, format and dates. Optionally add ad text, YouTube video IDs, EU reach ("times shown") and audience data. No login, no cookies, no Google account.
You only pay for ads delivered to your dataset. Targets with no ads, blocked requests and errors are reported but never charged.
What you get
- Every ad creative with advertiser, domain, format, first/last shown, days shown, image URL or Google preview link, and Google's internal creative / customer / ad-group IDs.
- Advertiser identity on every row (free): country, legal name, verified status, EU-only flag.
- Ad text and YouTube video ID (add-on): the visible text of rendered ads (Shopping product titles, local ads, text ads with a rendered preview), the YouTube video ID and link of video ads, and product images.
- Full details (add-on): every A/B variation, every country with first/last shown dates, times-shown ranges per country and per platform (EU ads), audience selection (demographics, locations, contextual signals, topics of interest, customer lists), and the advertiser-declared topic (e.g. "Electronics").
- Advertiser mode: one row per advertiser account with approximate ad counts. Use it to check which companies advertise, or who runs the ads for a website.
- Monitor mode: return only ads not seen in previous runs. Schedule it daily to get alerts when a competitor launches new ads.
How to use Google Ads Transparency Scraper
- Open the Actor in Apify Console (click Try for free on this page) and sign in or create a free Apify account.
- Tell it whose ads to get: Brand names or websites, Domains, Advertiser IDs, or paste Ads Transparency Center URLs. Choose Result type
adsoradvertisers. - Filter with Regions (countries), Platforms, Ad format and the dates Shown on or after / Shown on or before, and set Max ads per target.
- Optional add-ons: Add ad text, YouTube video ID and product data and Add full ad details (EU reach, audience, all countries, variations, topic). For alerts, turn on Monitor mode: only new ads.
- Click Start. When the run finishes, open the Output tab and download the results as JSON, CSV, Excel or HTML.
- Create a Schedule (e.g. daily, with Monitor mode) to track competitors, or call the Actor via the Apify API.
How it compares
| This Actor | Typical alternatives | |
|---|---|---|
| Price per ad | $0.0015 | $0.0015 – $0.002 |
| Full details add-on | +$0.0015 | +$0.003 |
| Ad text add-on | +$0.001, charged only when text is found | not available, or +$0.002 |
| YouTube video ID of video ads | yes | usually only a preview link |
| Several countries in one search | yes | usually one region per run |
| Errors / no-result targets charged | never | varies |
Input example
{"queries": ["HelloFresh"],"domains": ["nike.com"],"regions": ["US", "GB"],"platforms": ["YOUTUBE"],"adFormat": "VIDEO","startDate": "2026-06-01","maxAdsPerTarget": 200,"includeAdText": true,"includeDetails": false}
queries: brand names (matched to advertiser accounts, exact name first, then by ad count) or websites.domains: every ad pointing to the website, from any advertiser account (including resellers and agencies).advertiserIds: IDs starting withARfrom an advertiser page URL.startUrls: advertiser, creative or domain-search URLs from adstransparency.google.com. Their filters are applied.resultType:ads(default) oradvertisers.
Output example (ad with add-ons)
{"type": "ad","advertiserName": "SC DANTE INTERNATIONAL SA","advertiserId": "AR09040091694841724929","creativeId": "CR15732726098741428225","domain": "emag.ro","format": "IMAGE","firstShown": "2021-10-25T07:00:00Z","lastShown": "2026-10-27T19:06:16Z","shownForDays": 1829,"adText": "Kit de îmbunătățire a luminii CORSAIR VENGEANCE 2x RGB, alb, set | eMAG","youtubeVideoId": null,"topic": "Electronics","impressionsMin": 20000,"impressionsMax": 25000,"platformImpressions": [{ "platform": "SEARCH", "impressionsMin": 10000, "impressionsMax": 15000 }],"audienceSelection": { "demographicInfo": "included", "geographicLocations": "included", "contextualSignals": "included and excluded", "topicsOfInterest": null, "customerLists": "included" },"advertiserCountry": "RO","advertiserVerified": true,"adUrl": "https://adstransparency.google.com/advertiser/AR09040091694841724929/creative/CR15732726098741428225?region=RO"}
Other row types: advertiser (in advertisers mode), noResults (free) and error (free).
How much does it cost?
The Actor uses pay-per-event pricing, so you pay only for what is delivered – no separate compute or proxy costs:
- Ad: $0.0015 per ad creative delivered.
- Ad details (only with includeDetails): +$0.0015 per ad.
- Ad text (only with includeAdText): +$0.001 per ad where text or a YouTube video ID was found.
- Advertiser (advertisers mode): $0.002 per advertiser row.
- The only other charge is Apify's standard Actor start event ($0.00005 per run).
- Set a maximum cost per run and the Actor stops cleanly when it is reached.
- Targets with no ads, blocked requests and errors are free.
Example: 1,000 ads cost $1.50 without add-ons. Apify's free plan includes $5 of platform credit every month, which is enough to try the Actor on real data before you pay anything.
Good to know
- Reach, platform and audience data exist only for ads shown in the EU (published under the Digital Services Act). For other ads these fields are
null. - Google's "times shown" figures are ranges that Google refreshes periodically.
impressionsMax: nullmeans Google's open top bucket (e.g. "over 10M"). For the lowest bucket,impressionsMin: nullwithimpressionsMax: 1000means "under 1,000". - Date filter: Google only applies date filters to roughly the last 12 months. Older windows return nothing (the Actor tells you). For older ads, leave the dates empty and use
firstShown/lastShown. - Platform filters apply to ads shown since September 2023.
- Ad text comes from Google's own ad preview. Ads that Google archives as plain images keep their words inside the image, so they have no extractable text. They are not charged for the text add-on.
- Monitor mode remembers creative IDs in a named key-value store (
monitorStoreName). With a lowmaxAdsPerTarget, the next run continues with ads it has not returned before. For true "new ad" alerts, seed the first run with a high limit. - Speed: the Actor throttles itself (default 50 requests/minute) and retries rate limits with backoff and a fresh session. A list page returns 40 ads per request. Details and text need one extra request per ad (about 1–1.5 s per ad).
Use with AI agents (MCP)
Google Ads Transparency Scraper works as a ready-made tool for Claude, ChatGPT, Cursor, VS Code and any other MCP client through the official Apify MCP server. The agent gets one tool, cleandata-labs--google-ads-transparency-explorer, with the input fields described on this page, and you pay the normal pay-per-event price from your Apify account (a free account works; it includes $5 of monthly credit).
MCP server URL with only this Actor:
https://mcp.apify.com?tools=cleandata-labs/google-ads-transparency-explorer
On first connection your client opens the Apify sign-in (OAuth). To use an API token instead, send the header Authorization: Bearer <YOUR_APIFY_TOKEN>.
Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector. Name: Google Ads Transparency, Remote MCP server URL: the URL above.
Claude Desktop with a local config file (claude_desktop_config.json, needs Node.js 18+):
{"mcpServers": {"google-ads-transparency": {"command": "npx","args": ["-y", "@apify/actors-mcp-server", "--tools", "cleandata-labs/google-ads-transparency-explorer"],"env": { "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>" }}}}
Cursor (~/.cursor/mcp.json, or .cursor/mcp.json in a project):
{"mcpServers": {"google-ads-transparency": {"url": "https://mcp.apify.com?tools=cleandata-labs/google-ads-transparency-explorer"}}}
Claude Code:
$claude mcp add --transport http google-ads-transparency "https://mcp.apify.com?tools=cleandata-labs/google-ads-transparency-explorer"
VS Code (.vscode/mcp.json):
{"servers": {"google-ads-transparency": { "type": "http", "url": "https://mcp.apify.com?tools=cleandata-labs/google-ads-transparency-explorer" }}}
Already connected to https://mcp.apify.com with the default tools? Just ask your agent to use cleandata-labs/google-ads-transparency-explorer; it can run it through call-actor. To load several Actors in one connection, separate them with commas, e.g. https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer,cleandata-labs/url-to-markdown.
Tips for agents
- Smallest useful input:
{"domains": ["nike.com"], "queries": [], "regions": ["US"], "maxAdsPerTarget": 10}(10 ads that point to nike.com, shown in the US). - 10 ads take about 5 seconds; with
includeAdTextorincludeDetailsallow about 1 second per ad, so results are usually ready within the MCP call's default 30-second wait. The call returns a dataset ID; the agent reads the rows withget-dataset-items. - Cost: $0.0015 per ad (10 ads = $0.015). Ad text +$0.001 only when text is found, full details +$0.0015 per ad, advertiser rows $0.002. Targets with no ads and errors are free.
- Pass
queries: []when you search bydomains,advertiserIdsorstartUrls; otherwise the demo default["Nike"]is also run. - Keep
maxAdsPerTargetat 10-20 for a quick look (the default is 100 per target, and a brand name can match up to 3 advertisers). - Use
resultType: "advertisers"to answer "who advertises for this brand / website?" with one row per advertiser account. - Reach and audience data exist only for ads shown in the EU.
Example prompts
- "Show me 10 recent YouTube video ads that hellofresh.com ran in the US, with their YouTube links and first/last shown dates."
- "Which Google advertiser accounts run ads for booking.com in the UK? Give their legal names, countries and approximate ad counts."
- "Has Nike started any new Google ads in Germany since 1 October 2026? Include the ad text where available."
Integrations
Google Ads Transparency Scraper works with everything that connects to Apify:
- Make, Zapier and n8n – start a run and process the results in your no-code workflows.
- Google Sheets – export the dataset to a spreadsheet, or keep a sheet updated with a scheduled run.
- Webhooks – get a notification (Slack, email, your own endpoint) when a run finishes or fails.
- Apify API and clients – start runs and download results from your code with the REST API, the Python client (
apify-client) or the JavaScript client (apify-client). - AI agents – use it as a tool through the Apify MCP server or the LangChain / LlamaIndex integrations.
Python example:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("cleandata-labs/google-ads-transparency-explorer").call(run_input={"domains": ["nike.com"], "regions": ["US"], "maxAdsPerTarget": 100})for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
Limitations & legal
- This Actor is not affiliated with or endorsed by Google. It reads only the public information that adstransparency.google.com shows to any visitor without signing in. The site publishes this data for public transparency and serves no robots.txt restrictions. The Actor does not bypass logins, captchas or other protections. If Google rate-limits it persistently, the affected target is reported as blocked and not charged.
- Advertiser names are those of advertiser accounts (companies, or occasionally sole traders) as published by Google. Use the data in line with applicable law and Google's terms.
FAQ
A brand name returns the wrong company? Use domains or advertiserIds for exact targeting, or raise maxAdvertisersPerQuery. The log shows which accounts each query matched.
I got rate-limited. Lower maxRequestsPerMinute, or enable Apify Proxy so sessions rotate.
Is it legal to scrape the Google Ads Transparency Center? The Actor only reads information that Google publishes for public transparency and shows to any visitor without signing in, and it does not bypass logins or captchas. Advertiser names can occasionally belong to individuals (sole traders), so we can't guarantee the data contains no personal data. You are responsible for using it in line with Google's terms and applicable law (e.g. GDPR); ask a lawyer if you are unsure.
Can I use it with integrations, the API or LLM tools? Yes. Connect it to Make, Zapier, n8n, Google Sheets or webhooks, call it from Python or JavaScript with the Apify API, or use it as a tool for AI agents via the Apify MCP server (see Integrations above).
How do I monitor a competitor's new ads? Turn on Monitor mode: only new ads, run it once with a high Max ads per target, then schedule it daily. Each run returns only ads not seen before; add a webhook or the Slack / email integration to get notified.
Why do some ads have no reach or audience data? Google publishes "times shown" and audience data only for ads shown in the EU. For other ads these fields are null.