Google Ads Transparency Monitor avatar

Google Ads Transparency Monitor

Pricing

from $1.70 / 1,000 ad founds

Go to Apify Store
Google Ads Transparency Monitor

Google Ads Transparency Monitor

See every Google ad a company runs. Enter a domain or advertiser name and get one row per ad from the Ads Transparency Center: format, first and last shown dates, creative link, and permalink, plus a company summary row with the total ad count band. Batch domains, export to CSV or Clay.

Pricing

from $1.70 / 1,000 ad founds

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

See every Google ad a company runs. Enter a company domain or an advertiser name and get one row per ad from Google's Ads Transparency Center, with the format, first and last shown dates, a creative link, and the ad's permalink. Each input also gets one company summary row that answers the question most teams actually ask: does this company run Google ads, how many, and in which formats.

Rows are flat and snake_case, so they load straight into a spreadsheet, a CRM, or a Clay table.

✨ Features

  • Company keyed. A domain such as stripe.com in, the ads Google lists for that domain out. No advertiser ID lookup needed.
  • Advertiser names too. Enter a name such as HubSpot, Inc. and the actor finds the matching verified advertisers, up to 5, and says on every row whether the match was exact or the closest suggestion.
  • A company summary row. Ads returned, Google's own ad count band (for example 8,000 to 9,000), formats seen, and the first and last dates seen.
  • Filters that run on Google's side. Region by country code, and format (text, image, or video).
  • Last shown window. Keep only ads shown in the last N days, 90 by default.
  • Safe when Google changes its page. The actor checks the shape of every response. If Google changes it, you get a free source_changed row instead of empty rows that look real.
  • Reads robots.txt on every run and stops with a free blocked row if Google ever disallows the pages it reads.
  • Batch input. Up to 500 domains or advertiser names per run.

📥 Input

FieldTypeDescription
company_domainstringA company domain, for example stripe.com
advertiser_namestringAn advertiser name, for example Stripe, Inc.
domainslistSeveral domains, one per line
advertiser_nameslistSeveral advertiser names, one per line
regionstringanywhere (default) or a two letter country code
formatslisttext, image, video; empty means all
max_adsstringAd rows per input, 1 to 1,000, default 50
since_daysstringOnly ads last shown in this many days, default 90; 0 for all
include_summarystringtrue (default) or false
max_charge_usdstringOptional cost cap for the run
skipCachestringtrue to skip the 24 hour cache
proxy_modestringauto (default): direct, then the Apify proxy default pool if Google refuses a request; direct: proxy off, never use a proxy, so a refused request returns a free blocked row; or residential: the Apify residential proxy from the start. Proxy use adds nothing to your price

Supported region codes: US, CA, MX, BR, AR, CL, CO, PE, GB, IE, DE, FR, ES, IT, PT, NL, BE, LU, CH, AT, DK, SE, NO, FI, IS, PL, CZ, SK, HU, RO, BG, GR, HR, SI, RS, UA, EE, LV, LT, CY, MT, TR, IL, AE, SA, QA, EG, ZA, NG, KE, MA, IN, PK, BD, SG, MY, ID, TH, VN, PH, JP, KR, TW, HK, AU, NZ.

Example:

{ "company_domain": "stripe.com", "max_ads": "20", "since_days": "90" }

📤 Output

One row per ad (row_type ad) and one summary row per input (row_type summary). Every row carries every field; a field that does not apply is null.

FieldExampleNotes
row_typeadad or summary
company_domainstripe.com
advertiser_idAR16951989901585285121Google advertiser ID
advertiser_nameStripe, Inc.Verified advertiser name
ad_idCR17494586812444704769Google creative ID
formatimagetext, image, video, or unknown
first_shown, last_shown2024-08-13T02:39:41ZUTC
days_running798First to last shown, inclusive
creative_urllinkCreative image, or Google's preview script for text and video ads
ad_urllinkThe ad's page on the Ads Transparency Center
advertiser_urllinkThe advertiser's page
ads_returned20Summary row
total_ads_min, total_ads_max8000, 9000Summary row: Google's ad count band for the input and filters
advertisers_count, advertisers_json2Summary row. A domain can be advertised by resellers and agencies too
formats_seen["image","text"]Summary row
first_seen_any, last_seen_anydatesSummary row
runs_google_adstrueSummary row: Google lists at least one ad for the input and filters
row_statusokok, no_ads, blocked, source_changed, error
error_reasonnullWhy a row is not ok
billable_events_json{"ad-found":1}What the row was billed as; {} is free
from_cache, source, checked_at

💵 Pricing

Pay per event. You pay for ad rows returned and for a summary row when ads were found, plus a small start fee per run.

EventFree planBronzeSilverGold
Ad found (ad-found), per ad row$0.00200 ($2.00 per 1,000)$0.00190 ($1.90 per 1,000)$0.00180 ($1.80 per 1,000)$0.00170 ($1.70 per 1,000)
Company summary (company-summary), per input with ads$0.00300 ($3.00 per 1,000)$0.00285 ($2.85 per 1,000)$0.00270 ($2.70 per 1,000)$0.00255 ($2.55 per 1,000)
Actor start (apify-actor-start), per run$0.0005$0.0005$0.0005$0.0005
  • Free rows: no_ads, blocked, source_changed, and error rows cost nothing, and so do rows served from the 24 hour cache.
  • A run stops at the maximum cost per run you set in Apify, and at max_charge_usd if you set it.
  • Free Apify plan: 1.50 USD of evaluation a month, which is 750 ad rows at the free plan price. Any paid Apify plan removes the cap.
  • max_ads caps the ad rows, and so the cost, per input. 20 ads plus a summary costs $0.0435 on the free plan price, start fee included.
  • Proxy traffic is included. You pay only the events above: Mamba Labs pays the platform costs of your run, Apify proxy traffic included. proxy_mode is a reliability setting. In the default auto mode a run that Google refuses switches to the Apify proxy and keeps going; direct never uses a proxy, so a refused input returns a free blocked row instead.

🚀 Usage examples

Console or API. POST https://api.apify.com/v2/acts/mambalabs~google-ads-transparency-monitor/runs with the input above, then read the default dataset.

Batch of accounts.

{ "domains": ["stripe.com", "hubspot.com", "notion.so"], "max_ads": "10", "region": "US" }

Video ads only, by advertiser name.

{ "advertiser_name": "Nike, Inc.", "formats": ["video"], "max_ads": "25" }

Clay. Call the actor from a Clay column with the domain column mapped to company_domain. Clay sends every field as a string, which this actor expects. Set include_summary to true and max_ads to 1 for a cheap "runs Google ads" column.

MCP. The @mambalabsdev/mcp-google-ads-transparency-monitor server exposes the tool get_google_ads to AI agents.

⚠️ Error handling

SituationWhat you get
Google lists no adsOne free summary row, row_status no_ads, runs_google_ads false
Ads exist but none in the since_days windowOne free summary row, no_ads, runs_google_ads true
No advertiser matches the nameOne free summary row, no_ads
Google refuses a request (HTTP 429, a challenge page, or its sorry page)In auto mode the run switches to the Apify proxy default pool and tries twice more; if that is refused too, one free blocked row, and ads already read are kept
robots.txt disallows the pages read, or cannot be readOne free blocked row per input; no request is made
Google changes its response shapeOne free source_changed row naming the missing piece
Anything elseOne free error row with the reason

⚠️ Limitations

  • The data comes from Google's own public page, which is not a documented API. When Google changes it, this actor reports source_changed until it is updated.
  • The ad count is Google's band (for example 8,000 to 9,000), not an exact number.
  • A domain search returns every advertiser Google lists for that domain, which can include resellers and agencies. advertisers_json shows who ran what.
  • Text ads are shown as Google's rendered preview image or preview script, not as plain headline text.
  • One format filter runs on Google's side. Choosing two formats filters on the actor's side, so the count band then covers all formats.
  • Google rate limits bursts from one address. In auto mode the run moves to the Apify proxy default pool when that happens, at no extra cost to you.
  • No login, no key, and no personal data: the rows describe advertisers and ads.

🧩 Want other GTM data?

Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store.

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Contact Details Extractor4mMncKaJykiq94grz
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Social Presence Mapper4k6CCemkgBDz18m2h
Contact Classifier0lGSeYJmniXhGANnO
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Event Presence IndexWLhMy8fMDgsxdYxv5
Expert Witness DirectoryLIpwlgfE3LaQBaXd4
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Government Contract Award MonitorzhEtllASykOcx9hJ8
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer FindertpkedmloIIWtXx6sg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Change TrackerL8UbEmMJC1XYPSZOb
Job Posting MonitorQCfICD9kOPiOdj5iI
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Meta Ad Library MonitorJ1GWlSXfSGU3u8Wng
New Hire FindercKuc38p4nYHNF3IW8
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Prospect Engineq9rT6v64nUJdPexOQ
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reporting Window FinderuINxR7a1IW8qUTRUX
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel Stats Extractor6hSpD3kd2s2IQ4VSs

Every actor in the suite takes a domain or a company and returns flat rows, so they stack in the same table without reshaping anything.

🛠️ Need something custom built? Talk to Mamba Labs.

🆘 Support

Found a bug? Open an issue on the Issues tab. Response time is typically within 48 hours.

ℹ️ Sourcing. Ads come from Google's public Ads Transparency Center at adstransparency.google.com. No login is used and robots.txt is read on every run. You are responsible for how you use the output.

Built by Mamba Labs.