LinkedIn Ad Library Scraper
Pricing
from $1.00 / 1,000 ad scrapeds
LinkedIn Ad Library Scraper
Scrape the LinkedIn Ad Library without login: ad copy, creatives, payer, run dates, EU impressions and targeting as structured JSON. Search by advertiser, keyword, country or date. Pure HTTP, fast and cheap.
Pricing
from $1.00 / 1,000 ad scrapeds
Rating
5.0
(1)
Developer
Alex Morain
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does LinkedIn Ad Library Scraper do?
LinkedIn Ad Library Scraper extracts ads from the public LinkedIn Ad Library: ad copy, creatives, advertiser, payer, and, for ads served in the EU, run dates, impressions and targeting criteria parsed into structured fields. It works as a LinkedIn Ad Library API alternative: no login, no cookies, no browser automation.
It runs over plain HTTP, which makes it fast and cheap. It does not scrape private LinkedIn data, member profiles, or anything behind a login. It only reads what LinkedIn publishes in its ad transparency library.
Why use LinkedIn Ad Library Scraper?
- Competitive ad intelligence: see every ad a competitor runs, with copy, creative, format, and how long it ran.
- EU transparency data as structured fields: most tools show you the ad; this one also parses the DSA transparency block, impressions range (total and per country) and targeting criteria (language, location, audience, company, job), into clean JSON.
- Keyword search across the whole library: find every advertiser using a phrase, not just ads of one company you already know.
- Accurate date filtering: LinkedIn silently ignores custom date ranges unless a specific parameter accompanies them. Scrapers that pass only the dates return the full corpus while claiming it is filtered. This one always sends the complete, verified parameter set. We measured it: an advertiser with 349 ads shows 21 for May 2026 when the filter is correctly applied, and 349 when it is not.
- Complete pagination: the library's last page omits its pagination marker. Parsers that require it stop early or crash. This one treats the absence as the end of the corpus and gets the full result set: 347 unique ads out of 349 announced in our reference measurement.
- Runs on the Apify platform: scheduling, REST API, webhooks, integrations, proxy rotation, and monitoring included.
What data can LinkedIn Ad Library Scraper extract?
| Field | Type | Description |
|---|---|---|
advertiser, advertiser_url | string | Advertising account and its LinkedIn page |
payer | string | The "Paid for by" entity |
format | string | Single Image Ad, Video Ad, Carousel Ad, Text Ad... |
headline, body | string | Sponsored headline and full ad copy |
image_urls, video_urls | array | Creative URLs (logos excluded) |
ran_from, ran_to | string | First and last day the ad ran (EU-served ads) |
impressions_min, impressions_max | number | Total impressions range, parsed (EU-served ads) |
impressions_by_country | array | Impression share per country (EU-served ads) |
targeting_segments, targeting_parameters | array, object | Targeting criteria selected by the advertiser (EU-served ads) |
promoted_by | string | Company behind a Thought Leader Ad |
How to scrape the LinkedIn Ad Library
- Open the Input tab. One advertiser is already filled in, so you can press Start right away and see what comes out.
- Replace it with the companies you want to watch. Use the slug from their LinkedIn page URL (
linkedin.com/company/nvidia). One search runs per advertiser. - Optionally narrow by countries, date range or payer. LinkedIn applies these server-side, so narrowing makes the run faster and cheaper.
- Keep a Max ads per query cap on your first run. A single large advertiser can be running several hundred ads, and you pay per ad returned. Set it to
0once you know what you are getting. - Turn on Include ad details only for the advertisers you actually analyse: it adds impressions, targeting and full copy, at one extra request and a higher rate per ad.
- Press Start, then download the dataset as JSON, CSV or Excel.
Which fields should I fill?
| If you want to... | Fill in | Leave alone |
|---|---|---|
| See what a competitor advertises | advertisers, a maxAdsPerQuery cap | everything else |
| Discover who advertises on a theme | keyword alone | advertisers |
| Measure EU reach and targeting | advertisers, includeDetails: true, an EU country | everything else |
| Track a campaign period | startDate + endDate | dateOption |
| Reproduce a filter this input lacks | searchUrls | everything else |
Fill at least one of advertisers, keyword or searchUrls. Everything else is optional.
How much will it cost to scrape the LinkedIn Ad Library?
Pricing is pay-per-event: you pay a fixed price per ad, plus a tiny Actor start fee. Listing ads without details is the cheapest way to monitor volumes; enable details only when you need impressions, targeting, or full copy. A monitoring run that finds nothing new costs a fraction of a cent, which makes scheduled competitive monitoring affordable.
Input
See the input tab for full configuration options. Three things worth knowing:
advertisersaccepts company names or slugs; each one becomes a separate server-side search.keywordworks together with advertisers, or alone across the entire library.startDate/endDatego together and are automatically sent with the parameter LinkedIn requires to actually apply them.
Output
You can download the dataset in various formats such as JSON, CSV, Excel, or HTML. Simplified example:
[{"ad_id": "1234567890","detail_url": "https://www.linkedin.com/ad-library/detail/1234567890","advertiser": "Example Corp","payer": "EXAMPLE CORP LTD","format": "Video Ad","headline": "Grow your pipeline with example insights","body": "This is an example ad text presenting a product...","image_urls": ["https://media.licdn.com/dms/image/..."],"ran_from": "Apr 23, 2026","ran_to": "Apr 30, 2026","impressions_display": "30k-50k","impressions_min": 30000,"impressions_max": 50000,"impressions_by_country": [{ "country": "France", "share": "100%" }],"targeting_segments": ["Targeting includes English", "Targeting includes France"],"has_details": true}]
Tips
- Keep Include ad details off for large volume sweeps; turn it on for the advertisers you actually analyze. The event price differs, so you only pay for depth where you need it.
- Impressions and targeting exist only for ads served in the EU (Digital Services Act transparency). Ads shown only in the US or elsewhere return these fields as
null; that is LinkedIn's data, not a scraper gap. - The library serves roughly the last 12 months of ads.
- Use
maxAdsPerQueryto cap costs on advertisers with thousands of ads.
FAQ, disclaimers, and support
Is it legal to scrape the LinkedIn Ad Library? The Ad Library is LinkedIn's public ad transparency tool, published notably to satisfy the EU Digital Services Act. This Actor reads only that public library. Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to be shared publicly. However, you should be aware that your results could contain personal data (e.g., the name of a person behind a Thought Leader Ad). Personal data is protected by the GDPR and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
An advertiser returns zero ads. Check the spelling of the company slug, and remember the library only covers ads from the last 12 months. Some companies advertise under a different account name than their brand.
Impressions are empty. The ad was not served in the EU; LinkedIn only publishes impressions and targeting for EU-served ads.
Found a problem or missing field? Open a ticket in the Issues tab, it is read. For programmatic access, see the API tab.