LinkedIn Ad Library Scraper
Pricing
$10.00 / 1,000 results
LinkedIn Ad Library Scraper
Bulk-export ads from the LinkedIn Ad Library by company, keyword, or company ID.
Pricing
$10.00 / 1,000 results
Rating
0.0
(0)
Developer
Unseen User
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
LinkedIn Ads Scraper (Apify)
Apify actor that scrapes the LinkedIn Ad Library via the ScrapeCreators API.
Disclosure
This is an independent, community-built tool. It is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft Corporation.
The scraper accesses the publicly available LinkedIn Ad Library through the third-party ScrapeCreators API. The actor's maintainer supplies the ScrapeCreators credits used by every run — end users provide no API key.
Use responsibly. Make sure your use complies with:
- LinkedIn's Terms of Service and ad library usage rules
- Applicable data-protection laws (GDPR in the EU, CCPA in California, etc.) — the data you scrape may include personal data of advertisers
- Your jurisdiction's rules on automated data collection and competitive intelligence
The maintainer provides this tool as-is, without warranty, and is not liable for how it's used. If LinkedIn changes its public Ad Library or ScrapeCreators changes its API, this scraper may break without notice.
How it works
Wraps two endpoints:
GET /v1/linkedin/ads/search— search by company / keyword / companyId / countries / date range, paginated.GET /v1/linkedin/ad— full details for a single ad.
The ScrapeCreators API key is baked into the actor. End users provide no key. To rotate it, set the SCRAPE_CREATORS_API_KEY environment variable on the actor's Apify settings page (overrides the baked-in value).
Input
| Field | Type | Description |
|---|---|---|
companies | string[] | Bulk-search by company name — one search per value (e.g. ["microsoft","apple"]). |
keywords | string[] | Bulk-search by keyword — one search per value. |
companyIds | string[] | Bulk-search by numeric LinkedIn company ID. |
countries | string[] | ISO-2 codes applied to every search (e.g. ["US","CA"]). Empty = all. |
startDate | string | YYYY-MM-DD. Datepicker in the UI. |
endDate | string | YYYY-MM-DD. Datepicker in the UI. |
maxResults | integer | Global cap across all searches. Default 100. |
fetchAdDetails | boolean | Fetch full ad page (headline, CTA, URL, targeting…) per result. Default false. |
adUrls | string[] | Optional list of linkedin.com/ad-library/detail/<id> URLs. When set, skips search and only fetches details. |
Provide at least one value across companies, keywords, companyIds, or adUrls. Each value in companies / keywords / companyIds triggers its own search; filters and maxResults apply globally and ad IDs are deduped across searches.
Example input
{"companies": ["microsoft", "apple", "google"],"keywords": ["ai"],"countries": ["US"],"startDate": "2024-01-01","endDate": "2024-12-31","maxResults": 200,"fetchAdDetails": true}
Details-only:
{"adUrls": ["https://www.linkedin.com/ad-library/detail/664291126","https://www.linkedin.com/ad-library/detail/823975056"]}
Output
One normalised record per ad is pushed to the default dataset. Columns are emitted in a stable order optimised for browsing in the Apify dataset UI:
| Column | Meaning |
|---|---|
id | LinkedIn ad ID |
adLibraryUrl | Derived link back to linkedin.com/ad-library/detail/<id> |
advertiser | Advertiser name |
poster | Account that posted the ad |
headline | Ad headline (only with fetchAdDetails or details-only mode) |
description | Ad body text |
cta | Call-to-action label |
destinationUrl | Click-through URL |
adType | e.g. "Single Image Ad", "Video Ad" |
image | Creative URL |
startDate / endDate | ISO timestamps |
adDuration | Human-readable run duration |
targetingLocation / targetingLanguage / targetingAudience | Flattened targeting |
advertiserLinkedinPage | Link to advertiser's LinkedIn company page |
posterTitle / promotedBy | Posting metadata |
_searchedByField / _searchedByValue | Which bulk query surfaced this ad (e.g. company / microsoft) |
_sourceUrl | Set in details-only mode — the URL you passed in |
_scrapedAt | ISO timestamp when the record was written |
Any new fields returned by ScrapeCreators are appended after the known columns (future-proof). Search-only runs leave detail-only columns empty — enable fetchAdDetails for the rich record above.
Running locally
npm install# create storage/key_value_stores/default/INPUT.json with your inputnpm start
Requires Node.js 20+.
Links
- ScrapeCreators LinkedIn Ads search: https://docs.scrapecreators.com/v1/linkedin/ads/search
- ScrapeCreators LinkedIn Ad details: https://docs.scrapecreators.com/v1/linkedin/ad/
Disclaimer
This actor is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, express or implied, including (but not limited to) the warranties of merchantability, fitness for a particular purpose, accuracy, and non-infringement.
No liability. In no event shall the maintainer or contributors be liable for any claim, damages, or other liability — whether in an action of contract, tort, or otherwise — arising from, out of, or in connection with this actor, the data it returns, or the use of either.
No guarantee of completeness or accuracy. The data returned by this scraper is sourced from LinkedIn's public Ad Library via a third-party API (ScrapeCreators). Results may be incomplete, outdated, inaccurate, reordered, rate-limited, or unavailable at any time. Do not rely on this scraper as a source of truth for legal, financial, regulatory, investment, or any other critical decisions.
Intellectual property. All advertisements, trademarks, logos, creatives, copy, and likenesses returned by this scraper are the property of their respective advertisers, LinkedIn, or other rights holders. You are solely responsible for using the scraped data in a manner that respects those rights — including copyright, trademark, publicity, and privacy rights.
Data protection. Scraped records may include personal data (names, job titles, company affiliations). If you process this data, you are the data controller under applicable laws (GDPR, UK GDPR, CCPA, LGPD, etc.) and you alone are responsible for lawful basis, notices, retention, and subject-rights handling.
Availability. LinkedIn and/or ScrapeCreators may change, restrict, throttle, or discontinue the underlying public Ad Library and API at any time without notice. The scraper may stop working, return different fields, or return different data as a result. The maintainer is under no obligation to provide updates, fixes, or support.
Compliance is your responsibility. By using this actor, you confirm that your use complies with: LinkedIn's User Agreement and related LinkedIn policies; ScrapeCreators' Terms (where applicable); and all laws applicable to you, your users, and the individuals whose data you process.
Not legal advice. Nothing in this README, the input form, or any message associated with this actor constitutes legal advice. Consult a qualified lawyer in your jurisdiction before relying on the scraper for any use that may carry legal risk.
Permitted use. This tool is intended for lawful competitive research, market intelligence, and ad creative inspiration. Do not use it for scraping personal profiles, building spam databases, impersonation, harassment, fraud, or any purpose prohibited by the platforms referenced above or by law.
By using this actor you acknowledge and accept the terms of this disclaimer. If you do not accept these terms, do not run the actor.