LinkedIn Ad Library Scraper
Pricing
$0.50 / 1,000 results
LinkedIn Ad Library Scraper
Scrape LinkedIn's public Ad Library at $0.50 per 1,000 ads. No login or browser needed. Search by keyword, advertiser, payer, country, date, impressions or targeting facet. Get 25+ fields per ad: video URLs, CTA destination, headline, total impressions, per-country breakdown.
Pricing
$0.50 / 1,000 results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
10 days ago
Last modified
Categories
Share
LinkedIn ads scraper: ad text, video URLs, CTAs, impressions & targeting
One scraper for LinkedIn's whole public Ad Library. Search by keyword, advertiser, payer, country, date, impressions or targeting facet. Returns ~25 fields per ad on every result.
$0.50 per 1,000 results. No per-run fee. No login or browser needed.
Includes the fields most competitors hide behind a "details" toggle: direct .mp4 video URLs with bitrate variants, CTA destination URL with UTM params, headline, full body text, total impressions, per-country breakdown, and the EU-DSA targeting matrix.
Why this scraper?
- ๐ฐ Cheapest schema-complete option on the Apify store. Flat $0.50 per 1,000 results, no surprise tiers.
- ๐ฅ Direct mp4 video URLs with bitrate variants. Unique field for creative archiving and ad-library forensics.
- ๐ ~25 fields per ad. Widest schema in the market. CTA URL, headline, body, run dates, total impressions, country breakdown, targeting matrix, sender info on Message Ads.
- ๐ Every country LinkedIn shows ads in. Filter by delivery country (
US,GB,DE,FR,JP,BR, anywhere LinkedIn serves Promoted content). - ๐ No login, no browser, no Cloudflare drama. Pure anonymous HTTP. Won't break when LinkedIn rotates a JS challenge.
- โ๏ธ Every filter LinkedIn exposes: keyword, advertiser, payer, country, date range, impressions min/max, targeting facets (include + exclude), sort order.
- ๐ URL input or filters. Paste any LinkedIn Ad Library URL straight from your browser, or compose with the filter fields.
- ๐ Built-in proxy rotation + retry with session rotation per attempt. Survives 429s without manual tuning.
- โฑ๏ธ Fast. ~1.3 results/second at default concurrency. 700 ads in roughly 8 minutes.
What data can you extract?
| ๐ Ad ID | ๐ข Advertiser name | ๐ณ Paid for by | ๐ฏ Creative type |
| โ๏ธ Headline | ๐ Full body text | ๐ฑ๏ธ CTA label | ๐ CTA destination URL |
| ๐ผ๏ธ Creative image | ๐ฅ Video URLs (mp4) | ๐ Ad run dates | ๐ Total impressions |
| ๐ Impressions by country | ๐ฃ๏ธ Targeting language | ๐ Targeting location | ๐๏ธ Targeting matrix |
Plus the advertiser's LinkedIn company ID and page URL, advertiser logo, ad status (active/inactive), digital-media asset URN (dedup key for the same creative reused across ads), and sender name + image on Message Ads.
How to scrape LinkedIn Ad Library: step by step
- Create a free Apify account. 30 seconds, no card needed.
- Open the LinkedIn Ad Library Scraper in the Apify Console.
- Paste input: either LinkedIn Ad Library URLs in
startUrls, or filters likeaccountOwner,keyword,countries. - Click Start. A 100-ad run typically finishes in about 2 minutes.
- Export as JSON, CSV, or Excel, or fetch via the Apify API.
How much does the LinkedIn Ad Library Scraper cost?
The scraper uses pay-per-result pricing. You pay $0.50 per 1,000 results. Apify's Free plan gives you $5 of monthly credit, roughly 10,000 results. The $29/month Starter plan covers about 58,000 results. No per-run fee, no monthly minimum. Pause whenever.
Input
{"accountOwner": "salesforce","countries": ["US", "GB", "DE"],"dateOption": "last-30-days","sortBy": "DESCENDING","maxResults": 100}
Paste-a-URL mode works with anything you can copy from your browser:
{"startUrls": ["https://www.linkedin.com/ad-library/search?accountOwner=microsoft&countries=US","https://www.linkedin.com/ad-library/detail/1408079946"],"maxResults": 50}
| Field | Type | Default | Notes |
|---|---|---|---|
startUrls | string[] | none | Search or detail URLs. When set, filter fields below are ignored. |
keyword | string | none | Free-text search across ad content. |
accountOwner | string | none | Filter by advertising company name. |
payer | string | none | Filter by paying legal entity. |
countries | string[] | none | ISO-2 codes for delivery countries the ad is shown in. |
dateOption | enum | any | any, last-30-days, current-month, current-year, last-year. |
impressionsMinValue + impressionsMinUnit | int + enum | none | Minimum impressions. Unit: none, thousand, million. |
impressionsMaxValue + impressionsMaxUnit | int + enum | none | Maximum impressions. Same units. |
includedTargetingFacetCategories | enum[] | none | Only ads using targeting in these categories: LANGUAGE, LOCATION, AUDIENCE, DEMOGRAPHIC, COMPANY, EDUCATION, JOB, INTERESTS_AND_TRAITS. |
excludedTargetingFacetCategories | enum[] | none | Only ads that EXCLUDE these targeting categories. |
sortBy | enum | DESCENDING | DESCENDING (newest), ASCENDING (oldest), MOST_IMPRESSIONS. |
maxResults | int | 100 | 0 = unlimited (capped by LinkedIn's pagination). |
detailConcurrency | int | 8 | Parallel detail requests. Range 1 to 15. |
Output
{"adId": "1408079946","adUrl": "https://www.linkedin.com/ad-library/detail/1408079946","creativeType": "SPONSORED_STATUS_UPDATE","adType": "Single Image Ad","advertiserName": "Salesforce","advertiserLogoUrl": "https://media.licdn.com/.../salesforce_logo?...","advertiserCompanyId": "3185","advertiserLinkedInUrl": "https://www.linkedin.com/company/3185","paidForBy": "Salesforce, Inc.","headline": "Where Care Meets Cutting-Edge AI","bodyText": "There's a reason we're recognized as a leading tech workplace...","ctaLabel": "Learn more","ctaDestinationUrl": "https://www.salesforce.com/blog/salesforce-named-top-tech-workplace/?utm_source=linkedin&utm_medium=paid_social&...","imageUrl": "https://media.licdn.com/.../EE-CGC-2023-Dublin...jpg","videoUrls": [{ "url": "https://dms.licdn.com/playlist/vid/.../mp4-720p-30fp-crf28/...mp4?...", "bitrate": 393604, "width": 1280, "height": 720, "mimeType": "video/mp4" }],"videoPosterUrl": null,"digitalMediaAssetUrn": "urn:li:digitalmediaAsset:D5610AQH9oAwTi6YeAA","adRunDatesRaw": "Ran from May 11, 2026 to May 15, 2026","adStartDate": "2026-05-11","adEndDate": "2026-05-15","adStatus": "ACTIVE","totalImpressionsRange": "10k-20k","impressionsByCountry": [],"targetingLanguage": "Targeting includes English","targetingLocation": "Targeting includes Buenos Aires Province, Argentina, McLean, VA and 134 others...","targetingMatrix": [{ "category": "Company", "targeted": true, "excluded": true }],"senderName": null,"senderImageUrl": null,"scrapedAt": "2026-05-15T07:57:50.000Z"}
Use cases
- ๐ Competitive ad intelligence. Pull every active ad from a competitor and watch how their creative evolves week to week.
- ๐ฅ Creative archive. Collect all of an advertiser's video and image creative with direct mp4 URLs for offline analysis or training data.
- ๐ฏ Audience targeting research. See which targeting categories competitors actually use (and which they exclude).
- ๐ต Funding entity discovery. Track who's paying for ads through
paidForBy, often a different entity than the advertiser shown. - ๐งฒ Agency pitch prep. Audit a prospect's competitors before pitching media-buying or creative services.
- ๐ DSA / political ad compliance. Build a public record of EU-disclosed ads with start/end dates and impressions.
- ๐ Trend research. Slice ads by industry keyword, country and date range to spot emerging messaging themes.
- ๐ Brand monitoring. Watch for impersonation, partner co-branding, or unauthorized creative use of your brand.
Limitations
- EU-DSA fields only on disclosed ads.
totalImpressions,adRunDates,targetingLanguage/Location/MatrixandimpressionsByCountryare populated only when LinkedIn discloses them under the DSA, typically EU-targeted ads. US-only ads return these asnullor empty arrays. - Per-country impressions can lag. LinkedIn shows "may take up to 48 hours to update" on freshly-served ads. The field is left empty until LinkedIn publishes the breakdown.
- Custom date ranges not exposed. Date filtering supports presets (
last-30-days,current-month,current-year,last-year); arbitrarystartDate/endDateranges are not surfaced as input. - Search returns 24 ads per page. A very broad query (e.g. just
keyword=AI) can match millions of ads on LinkedIn's side, but practical retrieval stops after a few thousand as pagination thins out. - Public ads only. No login means no access to deleted ads, sponsored-content drafts, or anything not visible in the public Ad Library.
FAQ
How much does the LinkedIn Ad Library Scraper cost?
The scraper uses pay-per-result pricing. You pay $0.50 for 1,000 results. The Apify Free plan gives you $5 of monthly credit, which covers around 10,000 results. The $29/month Starter plan covers about 58,000 results.
No subscription lock-in. Pause whenever.
Is it legal to scrape LinkedIn's Ad Library?
LinkedIn's Ad Library is a public transparency tool, created in part to satisfy the EU Digital Services Act. Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This actor only touches publicly accessible pages, but how you use the output is on you.
Apify's full breakdown: Is web scraping legal?.
Can I integrate this with other tools?
Push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Apify treats every actor as a webhook source, so anything that consumes webhooks or pulls from an API works.
Full list: Apify integrations.
Can I use this with the Apify API?
Yes. Every run is available via the Apify REST API:
curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~linkedin-ad-library-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"accountOwner":"salesforce","maxResults":100}'
Docs: Apify API reference.
Can I use this through an MCP Server?
Yes. Apify ships an MCP server that exposes every actor as a tool, so Claude Desktop, Cursor, and any other MCP-capable client can call this scraper. Setup: Apify MCP docs.
Your feedback
Bug, missing field, or odd behavior? Drop a note in the Issues tab. Reports go to a human and fixes usually ship the same week.