Competitor Ads Monitor — Google & LinkedIn Ad Library avatar

Competitor Ads Monitor — Google & LinkedIn Ad Library

Pricing

from $2.00 / 1,000 google ads

Go to Apify Store
Competitor Ads Monitor — Google & LinkedIn Ad Library

Competitor Ads Monitor — Google & LinkedIn Ad Library

Track competitor ads from Google Ads Transparency Center and LinkedIn Ad Library. Enter domains, get ad copy, creatives, landing pages, dates, regions and impressions. Schedule with 'only new ads' for alerts.

Pricing

from $2.00 / 1,000 google ads

Rating

0.0

(0)

Developer

LatentLark

LatentLark

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Share

See which ads your competitors are running. Give it domains or company names and it pulls every ad from the Google Ads Transparency Center (Search, Display, YouTube) and the LinkedIn Ad Library. Each ad comes back as one clean row: copy, creative, landing page, first and last shown dates, regions and impressions.

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.

Built and maintained by LatentLark. Also see the Career Page Jobs API for competitor hiring signals.

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 onlyNew and 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

FieldWhat it does
domainsGoogle: competitor domains (hubspot.com), advertiser IDs (AR…), Transparency Center URLs or advertiser names
linkedinCompaniesLinkedIn: company name, linkedin.com/company/... URL or numeric company ID
platformsgoogle, linkedin or both
maxAdsPerAdvertiserNewest ads first; caps cost on big advertisers (0 = no limit)
regionsCountry codes like US, DE, GB (empty = all)
dateRangeAny time, the last 7, 30, 90 or 365 days, or a custom range
domainOwnerOnlyGoogle: keep only the advertiser that owns the domain and drop agencies or resellers that link to it (on by default)
includeDetailsAdds ad copy, landing page, video, regions and impressions (one extra lookup per ad)
onlyNew + monitorKeyOutput only ads not seen in earlier runs with the same key

Example:

{ "domains": ["hubspot.com", "salesforce.com"], "platforms": ["google"], "regions": ["US"], "dateRange": "last30days", "maxAdsPerAdvertiser": 50, "onlyNew": true, "monitorKey": "crm-competitors" }

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.

EventPrice
Actor start (per run)$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, headline and bodyText are empty and the creative is in imageUrls. 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 domainOwnerOnly off 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). Found a problem? Open an issue on the Actor's Issues tab.