Google Ads Transparency Scraper β Creatives & Reach Data
Pricing
$1.00 / 1,000 results
Google Ads Transparency Scraper β Creatives & Reach Data
[π° $1/1K flat] Scrape Google Ads Transparency Center by brand, domain or advertiser ID. Ad creatives, run dates, days active, per-country reach & advertiser legal entity included. All Google surfaces, 230+ countries, no login.
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
Pika Choo
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
29 minutes ago
Last modified
Categories
Share
Google Ads Transparency Scraper β Competitor Creatives, Reach & Advertisers
Google Ads Transparency Scraper: $1 per 1,000 results, everything included, no API key, no login. Turn the Google Ads Transparency Center into clean, structured JSON. Search by brand name, website domain, advertiser ID or Transparency Center URL and get every ad an advertiser runs across Google Search, YouTube, Display, Shopping and Maps, with the actual creatives, run dates, days active and the per-country impression ranges most Google ads scrapers never return. Covers 230+ countries, works with AI agents through MCP, and runs on a schedule or from the API.
Why this Google Ads scraper
- π° One flat price. $1/1K results with reach data, creatives and dates included. No actor-start fee, no tiers, no separate "detail" upcharge.
- π Reach data others skip. Per-country impression ranges, per-surface breakdown, total reach, creative variation counts and the advertiser's verified legal entity name.
- β±οΈ Days active per ad. Instantly separate an advertiser's long-running winners from fresh tests.
- πΌοΈ Real creatives, not just IDs. Banner image URLs for image ads, rendered screenshots for text ads, renderable previews and video links for video ads.
- π‘οΈ Does not die mid-run. Google rate-limits a single IP after roughly 25 requests. This Actor rotates residential IPs proactively and retries automatically.
Who uses this
- Performance marketers and PPC agencies monitoring competitor Google Ads, YouTube ads and Display creatives.
- Creative strategists building swipe files of ads that have survived for months (high
days_active). - Media planners and analysts who need per-country reach to see where a competitor concentrates budget.
- Sales and lead-generation teams screening prospect lists for "does this company run Google ads?".
- Brand protection and legal teams finding advertisers bidding on a brand or impersonating a domain, with their verified legal entity.
- AI and data teams feeding structured ad data into models, dashboards and market research.
What you can do with it
| Mode | How | Cost |
|---|---|---|
| Scrape all ads of an advertiser, reach data included | domain / name / AR⦠ID in queries | $1 per 1K ads |
| Screen domains: "do they run Google ads?" | fetchAds: false | $1 per 1K domains |
| Only video (or text / image) ads | formats: ["VIDEO"] | pay only for kept ads |
| One country's ads only | region: "DE" | same rate |
| Fast listing without reach data | fetchAdDetails: false | same rate, much faster |
Input
{"queries": ["nike", "booking.com", "AR02934798844673654785"],"advertisersPerQuery": 3,"maxAdsPerAdvertiser": 50,"fetchAds": true,"fetchAdDetails": true,"formats": [],"region": ""}
- queries: brand names, domains,
ARβ¦advertiser IDs or full Transparency Center URLs, mixed freely. The type is detected automatically. Domain queries are the most reliable because they resolve directly to the verified advertiser. - advertisersPerQuery: how many advertisers to keep per brand-name query (1 to 20). Domains and IDs always resolve to exactly one.
- maxAdsPerAdvertiser: up to 2,000 ads per advertiser per run. Ads are fetched newest-first in pages of 40.
- fetchAds: turn off to get advertiser records only (cheap domain screening).
- fetchAdDetails: adds the reach / region / variations / legal-entity layer per ad. Turn off for a faster run when you only need formats, dates and creative URLs.
- formats: keep only
TEXT,IMAGEand/orVIDEOads. - region: 2-letter ISO country code (
US,GB,DEβ¦). Empty means worldwide. - proxyConfiguration: Apify residential proxies are on by default and strongly recommended.
What you get
Every ad is one flat JSON row:
| Field | Example | Notes |
|---|---|---|
item_type | ad | ad, advertiser, hint or error |
advertiser_id / advertiser_name | AR0293β¦ / Booking.com | verified advertiser |
creative_id / ad_url | CR1058β¦ / permalink | link opens the live ad |
format | TEXT | IMAGE | VIDEO | |
first_shown / last_shown | 2021-11-04 / 2026-08-15 | |
days_active | 1747 | longevity signal |
image_url | https://tpc.googlesyndication.com/β¦ | banner, or rendered screenshot for text ads |
preview_url / video_url | renderable preview / direct video link | |
legal_name | Booking.com B.V. | with full details on |
variation_count | 2 | A/B variations, with full details on |
total_reach_low / total_reach_high | 15000 / 20000 | impression range, where disclosed |
region_stats | see below | with full details on |
has_detail | true | whether the full detail record was fetched |
source_query / region | booking.com / anywhere | which input produced the row |
scraped_at | 2026-08-15T14:02:11Z | ISO timestamp |
Advertiser rows carry advertiser_id, advertiser_name, advertiser_domain and declared_ad_count, which is Google's own total ad count for that advertiser.
Sample JSON output
{"item_type": "ad","advertiser_id": "AR02934798844673654785","advertiser_name": "Booking.com","creative_id": "CR10586047617038745601","ad_url": "https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR10586047617038745601","format": "IMAGE","first_shown": "2021-11-04","last_shown": "2026-08-15","days_active": 1747,"image_url": "https://tpc.googlesyndication.com/archive/simgad/β¦","video_url": null,"preview_url": null,"legal_name": "Booking.com B.V.","variation_count": 2,"total_reach_low": 15000,"total_reach_high": 20000,"region_stats": [{"region": "DE","region_name": "Germany","reach_low": 1000,"reach_high": 2000,"first_shown": "2023-03-04","last_shown": "2026-08-15","surfaces": [{"surface_code": 3, "reach_low": 1000, "reach_high": 2000}]}],"has_detail": true,"source_query": "booking.com","region": "anywhere","scraped_at": "2026-08-15T14:02:11Z"}
region_stats holds one entry per country the ad ran in. Export the whole dataset as JSON, CSV, Excel, XML or RSS from the Apify Console or API.
Pricing: how much does it cost to scrape 1,000 Google ads?
One event, one price: $0.001 per result ($1 per 1,000). A result is one row in your dataset, either an ad (with creatives, dates, days active and reach data) or an advertiser record. Hints and errors are free, ads filtered out by formats are never charged, and there is no actor-start fee.
Worked examples
| Job | Rows | Cost |
|---|---|---|
| One advertiser, 1,000 ads with full reach data | 1 advertiser + 1,000 ads = 1,001 | $1.00 |
| One advertiser, 100 ads | 101 | $0.10 |
Screen 500 domains for ad activity (fetchAds: false) | 500 | $0.50 |
| 10 competitors, 200 ads each, video only | 10 + up to 2,000 kept ads | up to $2.01 |
Apify platform usage (compute and residential proxy traffic) is billed separately by Apify on top of the per-result price, as with any Actor. Runs are light, so this is typically a small fraction of the result cost.
Use cases
- Competitor ad monitoring: every ad a competitor runs, how long each has been live (
days_active), and in which countries it actually gets impressions. Schedule daily runs and diff the results. - Creative research and swipe files: real banners, text-ad renders and video previews from any industry.
- Media planning and spend intelligence: per-country impression ranges reveal where competitors concentrate budget and which creatives they scale.
- Lead generation: screen prospect lists with
fetchAds: false. One cheap advertiser record tells you who invests in Google ads before you pitch. - Brand protection: find advertisers bidding on your brand or impersonating your domain, with their verified legal entity.
- AI and research datasets: structured Google ads data for models, dashboards and market research.
Use with AI agents and MCP
This Actor is available as a tool for Claude, Cursor, ChatGPT and any other MCP-capable agent through the Apify MCP server. Point your client at:
https://mcp.apify.com/?tools=fetch-actor-details,openclawai/google-ads-transparency-scraper
An agent can then ask "what Google ads is booking.com running in Germany right now?" and receive the structured rows directly. For a step-by-step setup guide and prompt examples see the Datapika guide for this Actor.
Integrations
Run it on a schedule, trigger it via the Apify API from any language, or use the official Python and JavaScript clients. Export to CSV, Excel or JSON, or pipe results to Google Sheets, Make, Zapier, n8n, LangChain, LlamaIndex and MCP like any other Actor. Webhooks let you trigger a downstream job the moment a run finishes.
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("openclawai/google-ads-transparency-scraper").call(run_input={"queries": ["booking.com"],"maxAdsPerAdvertiser": 100,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["advertiser_name"], row["format"], row["days_active"], row["ad_url"])
FAQ
Does Google have an official Ads Transparency Center API?
No. Google publishes the Ads Transparency Center as a website only, with no public API, no bulk export and no way to pull reach data programmatically. This Actor gives you that API: send a brand, domain or advertiser ID and get structured JSON back, with no Google account, cookies or API key.
How much does it cost to scrape 1,000 Google ads?
$1.00 plus a small amount of Apify platform usage. Every result row costs $0.001, whether it is a full ad with reach data or a bare advertiser record. See the pricing table above for more worked examples.
Where does the data come from?
The public Google Ads Transparency Center, which lists ads from verified advertisers across Search, YouTube, Display, Shopping and Maps. No login, cookies or API keys are required.
Which queries work best?
Domains (nike.com). Brand-name queries use Google's suggestion search, which can surface smaller same-name advertisers, so keep advertisersPerQuery low to stay focused. Advertiser IDs and full Transparency Center URLs resolve to exactly one advertiser.
Why do reach fields show null for some ads?
Google only discloses impression ranges where regulation requires it, mainly for ads shown in the EU. Ads outside those regions still return format, dates and creatives.
Why do some video ads have a preview URL but no video URL?
Google serves some video creatives only as renderable previews. A direct video link is included whenever it is exposed.
How many ads can I get, and how fast is it?
maxAdsPerAdvertiser goes up to 2,000 per advertiser per run, fetched newest-first in pages of 40. Segment bigger inventories with the region filter. Turning fetchAdDetails off skips the per-ad detail call and is much faster when you only need formats, dates and creative URLs.
Can I export to CSV or Excel?
Yes. Every run produces an Apify dataset that you can download as JSON, CSV, Excel, XML or RSS, or read through the API and clients above.
How does this compare to the Google Ads Transparency Center website?
The website shows one advertiser at a time with no export. This Actor processes lists of brands, domains and IDs in one run, adds days_active, flattens per-country reach and surface data into rows, and delivers real image, preview and video URLs ready for spreadsheets, dashboards or AI agents.
Is it legal to scrape the Google Ads Transparency Center?
The Actor only accesses data Google publishes for transparency purposes, available to anyone without an account. It collects ad creatives and advertiser business information, not personal data. You are responsible for how you use the output, so review your own compliance requirements and the terms that apply to your use case. If you need help, contact us through the Actor's Issues tab.