LinkedIn Ad Library Scraper — Ads, Reach & New-Ad Alerts
Pricing
from $0.015 / ad scraped
LinkedIn Ad Library Scraper — Ads, Reach & New-Ad Alerts
Scrape the LinkedIn Ad Library by advertiser or keyword: every ad's creative, copy, format, payer and campaign dates — plus EU impressions and targeting. Tracks which ads are new since your last run. No login, no cookies. Competitor ad intelligence on autopilot.
Pricing
from $0.015 / ad scraped
Rating
0.0
(0)
Developer
Yuliia Kulakova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

Track any company's advertising on LinkedIn. Search the LinkedIn Ad Library by advertiser or keyword and get every ad — creative, copy, format, who paid for it, when it ran, how many impressions it drew and who it was targeted at — plus, on repeat runs, exactly which ads are new since last time.
No login, no LinkedIn account, no cookies to paste.
What you get
Point it at company names or keywords:
{"advertisers": ["HubSpot", "Salesforce"],"keywords": ["crm software"],"countries": ["US", "DE"]}
An unedited record from a live EU campaign:
{"query": "Salesforce","advertiserName": "Salesforce","adCopy": "Our sales teams in Dublin are growing!","format": "Job Ad","payer": "Salesforce, Inc.","ranFrom": "2026-08-07","ranTo": "2026-08-17","totalImpressions": "1k-5k","impressionsByCountry": [{ "country": "Ireland", "share": "28%" },{ "country": "United Kingdom", "share": "14%" },{ "country": "Germany", "share": "13%" }],"targetingLanguage": "Targeting includes English","targetingLocation": "Targeting includes Slovakia, Benelux and 16 others","creativeImageUrl": "https://media.licdn.com/dms/image/...","advertiserLogoUrl": "https://media.licdn.com/dms/image/...","adUrl": "https://www.linkedin.com/ad-library/detail/1537674606","isNewSinceLastRun": true,"scrapedAt": "2026-08-17T09:10:00.000Z"}
Every ad also carries its adId, the search that found it, and the direct link to LinkedIn's ad-detail page.
It reads every ad an advertiser is running, not just the first page — a search for Microsoft returns all 60+ live ads across its accounts in one run, paginated automatically.
Track campaigns, not just ads
With trackChanges: true (default), every run remembers each search and the next run tells you what moved:
"HubSpot": 84 ads from 4 pages, 6 pushed | 6 new, 3 no longer shown since 2026-08-10
- Every ad carries
isNewSinceLastRun. - Set
newAdsOnly: trueand a scheduled run delivers only the fresh creatives — a launch-detection feed for the competitors you watch. - "New" always means new in that search on LinkedIn. Changing your filters between runs never relabels old ads as new — the snapshot tracks the advertiser's ads, not your query.
Why it matters: a competitor's new ad is a signal. Marketers read a burst of new creatives as a campaign launch; sales teams read a hiring ad as budget moving; analysts read creative volume as spend direction.
The transparency data others skip
For ads shown in the EU, LinkedIn is legally required to disclose reach and targeting. This scraper pulls all of it into clean fields:
ranFrom/ranTo— the real campaign window, as ISO dates.totalImpressions— LinkedIn's disclosed range (e.g.1k-5k).impressionsByCountry— the full percentage split across every country the ad reached.targetingLanguage/targetingLocation/targeting— the audience parameters the advertiser actually selected.
This is the closest thing to a competitor's media plan that exists publicly — and most scrapers stop at the ad copy.
Search options
| Input | What it does |
|---|---|
advertisers | Company names as they appear on LinkedIn, or pasted ad-library URLs |
keywords | Free-text searches across all advertisers |
countries | Two-letter codes to filter where ads ran; EU codes unlock the transparency data |
dateOption | last-30-days, current-month, or all time |
includeDetails | Open each ad for dates, impressions and targeting (richer, a little slower) |
advertiserMatch | smart (default) keeps the brand and its sub-brands; exact keeps only the exact name (for common-word brands like "Apple"); off returns raw results |
maxAdsPerQuery | Cap ads per search |
trackChanges | Remember searches between runs |
newAdsOnly | Return only ads new since the previous run |
A typical competitor-monitoring setup:
{"advertisers": ["HubSpot", "Salesforce", "Zoho"],"countries": ["US"],"trackChanges": true,"newAdsOnly": true}
Schedule it daily and the dataset becomes your feed of every new ad those companies launch.
Use cases
- Competitive intelligence — watch rivals' creatives, messaging and campaign cadence in one dataset.
- Ad-creative research — build a swipe file of what formats and hooks a whole industry is running.
- Sales intelligence — a company advertising job ads or a new product line is a company with a moving budget.
- Agencies — show clients exactly what competitors are spending attention on, with real dates and reach.
- Market research — creative volume and targeting trends across a set of advertisers over time.
Honest limitations
You supply the advertiser or keyword. LinkedIn has no public list of every advertiser, and its advertiser search is a name match — so a common-word brand like "Apple" also surfaces unrelated companies named "Apple Rubber" or "Apple Glass". The advertiserMatch mode handles this: smart (default) keeps the brand and its sub-brands ("Microsoft Azure", "HubSpot for Developers") while dropping unrelated advertisers; exact keeps only advertisers whose name is the brand itself — the clean choice for common-word names; off returns LinkedIn's raw results.
Impressions and targeting are EU-only. LinkedIn discloses reach and targeting for ads shown in the European Union (a legal requirement there). Ads shown only outside the EU return creative, copy, format, payer and dates, but no impressions or targeting — that data simply isn't published. Add EU country codes to countries to surface it.
Impressions are ranges, not exact counts. LinkedIn publishes 1k-5k-style bands; the scraper returns them exactly as disclosed, never invented.
Creative image is per format. Image and video ads return a creativeImageUrl; Document Ads (PDF carousels) and Message Ads have no single cover image — their content is multi-page or text, captured in full in adCopy.
LinkedIn ads only. This actor does one library well; it does not cover Meta, Google or TikTok ad libraries.
FAQ
Do I need a LinkedIn account or cookies? No. The Ad Library is public; this actor reads it directly through residential proxies.
Why residential proxies? LinkedIn serves the Ad Library only to residential-looking traffic. The default proxy setting is already correct — just run it.
How do I monitor a competitor over time?
Leave trackChanges on and schedule the actor. Each run flags new ads and notes which ones stopped showing.
Can it find every company advertising on LinkedIn? No public index of advertisers exists. Curate your watch-list once; the actor tracks it on schedule.
What happens on the very first run?
Every ad returns with isNewSinceLastRun: null and the baseline is saved; deltas start from the second run.
Maintained by brilliant_gum. Issues and feature requests welcome on the Issues tab.