Google Ads Transparency & LinkedIn Ad Library Scraper
Pricing
from $1.40 / 1,000 google ads
Google Ads Transparency & LinkedIn Ad Library Scraper
Scrape Google Ads Transparency Center (Search, Display, YouTube) and LinkedIn Ad Library by domain or advertiser/company name. Get ad copy, creatives, landing pages, dates, regions, impressions. Monitor competitors with 'only new ads' alerts.
Pricing
from $1.40 / 1,000 google ads
Rating
0.0
(0)
Developer
LatentLark
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Features
Share
Scrape the Google Ads Transparency Center (Search, Display and YouTube ads) and the LinkedIn Ad Library by competitor domain or advertiser/company name. Each ad comes back as one clean row: copy, creative, landing page, first and last shown dates, regions and impressions.
Use it as a competitor ads monitor: schedule it with Only new ads and you get a short list of each competitor's new ads every day or week, ready for Slack, email, Sheets or your BI tool.

Real output from a test run for hubspot.com (Google and LinkedIn). Built and maintained by LatentLark.
Quick start (first run in about 30 seconds)
- Click Try for free (or Start in Console). The form is prefilled with
hubspot.com, Google only, and 5 ads. - Click Start. You get 5 HubSpot ads in the Output tab for about $0.015.
- Replace
hubspot.comwith your competitors' domains (one per line). Raise Max ads per advertiser when you want more. - For LinkedIn, add LinkedIn Ad Library under Platforms and add the company names in LinkedIn companies (e.g.
HubSpot). - For alerts, turn on Only new ads since last run, give it a Monitor key like
crm-competitors, Save as task and add a daily Schedule.
How the first run looks (fill the form, click Start, get results):

Run it on a schedule
Get a short list of new competitor ads instead of the whole library every time:
- Add your competitors' domains, turn on Only new ads since last run (
onlyNew) and set Monitor key (e.g.crm-competitors). - Save as task → Schedule → weekly (e.g. Monday
0 8 * * 1) or daily. - Optional: send each run to Slack/email via Integrations, or to a sheet with Google Sheets Export.
| Example | Cadence | Rough cost per month |
|---|---|---|
| 5 competitors, Google only, about 10 new ads each per week | weekly | ≈ $0.42 (4 starts × $0.005 + 200 ads × $0.002) |
| Same 5 competitors | daily | ≈ $0.55 (the same new ads, found sooner; mostly start fees) |
The first run collects the current ads as the baseline (cap it with Max ads per advertiser). Free-tier prices; Bronze/Silver/Gold plans pay 10/20/30% less.
What you can do with it
- Competitive intel: see the messaging, offers and landing pages a rival is testing right now.
- New-ad alerts: schedule a daily run with
onlyNewand get only the ads launched since the last run. - Creative research: collect headlines, CTAs, images and videos from a whole category for swipe files.
- Agency reporting: monitor client competitors by region and date range.
- Market mapping: find out who advertises on a domain, including partners and agencies.
Input
| Field | What it does |
|---|---|
domains | Google: competitor domains (hubspot.com) or advertiser names (Salesforce), plus advertiser IDs (AR…) or Transparency Center URLs |
linkedinCompanies | LinkedIn: company name, linkedin.com/company/... URL or numeric company ID |
platforms | google, linkedin or both |
maxAdsPerAdvertiser | Newest ads first; caps cost on big advertisers (0 = no limit) |
regions | Country codes like US, DE, GB (empty = all) |
dateRange | Any time, the last 7, 30, 90 or 365 days, or a custom range |
domainOwnerOnly | Google: keep only the advertiser that owns the domain and drop agencies or resellers that link to it (on by default) |
includeDetails | Adds ad copy, landing page, video, regions and impressions (one extra lookup per ad) |
onlyNew + monitorKey | Output only ads not seen in earlier runs with the same key |
Example (Google, US, last 30 days, alerts):
{ "domains": ["hubspot.com", "salesforce.com"], "platforms": ["google"], "regions": ["US"], "dateRange": "last30days", "maxAdsPerAdvertiser": 50, "onlyNew": true, "monitorKey": "crm-competitors" }
Example (Google + LinkedIn):
{ "domains": ["hubspot.com"], "linkedinCompanies": ["HubSpot"], "platforms": ["google", "linkedin"], "maxAdsPerAdvertiser": 20 }
Output
One dataset item per ad:
{"platform": "google","advertiserName": "HubSpot","advertiserId": "AR13611357312189988865","domain": "hubspot.com","adId": "CR15298995467690442753","format": "text","headline": "HubSpot Customer Platform","bodyText": "See how HubSpot's AI-powered customer platform helps you grow better.","cta": null,"landingUrl": "https://www.hubspot.com/","imageUrls": [],"videoUrl": null,"firstShown": "2023-03-01T00:00:00Z","lastShown": "2026-10-24T00:00:00Z","regions": ["NL", "DE"],"impressionsRange": { "min": 30000, "max": 35000 },"isNew": true,"stoppedRunning": false,"adLibraryUrl": "https://adstransparency.google.com/advertiser/AR…/creative/CR…?region=anywhere","scrapedAt": "2026-10-24T21:00:00Z"}
Rows also include daysShown, regionStats (Google: first and last shown plus impressions per country; LinkedIn: impression share per country), paidBy and targeting (LinkedIn: language, location and targeting parameters), thumbnailUrl and sourceInput. A per-input SUMMARY record is written to the run's key-value store.
How monitoring works
The first run with a monitorKey stores every ad it finds as the baseline. Each later run with onlyNew: true outputs, and charges for, only ads that were not seen before. stoppedRunning is true when an ad hasn't been shown for stoppedAfterDays days (3 by default).
Pricing
Pay per event, no subscription: a small start fee per run plus each ad saved to the dataset.
| Event | Price |
|---|---|
| Actor start (per run, at the default 256 MB memory) | $0.005 |
| Google ad saved | $0.002 ($2 per 1,000 ads) |
| LinkedIn ad saved | $0.004 ($4 per 1,000 ads) |
Example: a daily onlyNew check on 5 competitors that finds 20 new Google ads costs about $0.045 per run. Residential proxy for LinkedIn is included. Set a maximum cost per run in Apify and the Actor stops cleanly when it reaches it. Ads skipped by onlyNew are not charged.
Limitations
- Google text ads: Google often keeps older text ads only as an image snapshot. For those,
headlineandbodyTextare empty and the creative is inimageUrls. Newer responsive search ads and YouTube ads include full copy. - Google doesn't publish impressions for every region. EU countries usually have them, the US often does not.
- LinkedIn (beta): LinkedIn blocks cloud server IPs, so LinkedIn requests use Apify residential proxy (included in the price, about 15 KB of traffic per ad). It is slower than Google: expect a few seconds per ad. LinkedIn shows impressions as ranges and per-country shares only, and the Ad Library covers roughly the last 12 months.
- The domain-owner filter matches advertiser names to the domain. Turn
domainOwnerOnlyoff to see every advertiser. - This Actor reads public, official ad-transparency libraries only. It does not log in or collect personal data.
FAQ
Can I get alerts in Slack or email? Yes. Schedule the Actor with onlyNew and connect an Apify integration (Slack, email, Zapier, Make or a webhook).
Can I export to Google Sheets? Yes. Use Apify's Google Sheets integration or LatentLark's Google Sheets Export & Import (no OAuth, so scheduled writes keep working).
Why are headline and text empty for some Google ads? Google keeps many older text ads only as an image snapshot. The creative is in imageUrls. See Limitations.
I got 0 ads for a domain. Why? The advertiser may not run Google ads in the selected regions or dates, or its advertiser name doesn't match the domain. Turn off domainOwnerOnly, clear regions, or paste the advertiser's Ads Transparency Center URL or AR… ID. The SUMMARY record shows what was found for each input.
Did this save you time? A rating on the Store page helps other people find it. Missing a field or found a bug? Open an issue on the Issues tab, we usually reply within a day.
More from LatentLark
- Creator Commerce Competitor Finder (LTK & ShopMy): find which creators promote any brand on LTK and ShopMy, with clicks, product counts and social links, plus new-affiliate alerts. No login.
- Career Page Jobs API: every open job from Workday, Personio, Greenhouse, Lever, Ashby and 3 more ATS as clean JSON, with only-new-jobs monitoring.
- Google Sheets Export & Import (No OAuth): send any Actor's results to a Google Sheet on a schedule without Google login or expiring tokens.
- Telegram Channel Monitor: scrape and monitor public Telegram channels (posts, views, reactions) with no login, only-new mode and webhooks.
- Google Maps No-Website Leads (Audit & Pitch): audit local business websites from Google Maps leads (SSL, speed, tracking, booking), find owner contacts and get a one-line cold-email pitch.
- Facebook Reels Scraper + Transcripts: public Facebook Reels with plays, reactions, shares and a spoken-word transcript (captions or Whisper), no login.