LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

$10.00 / 1,000 results

Go to Apify Store
LinkedIn Ad Library Scraper

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

Unseen User

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

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

FieldTypeDescription
companiesstring[]Bulk-search by company name — one search per value (e.g. ["microsoft","apple"]).
keywordsstring[]Bulk-search by keyword — one search per value.
companyIdsstring[]Bulk-search by numeric LinkedIn company ID.
countriesstring[]ISO-2 codes applied to every search (e.g. ["US","CA"]). Empty = all.
startDatestringYYYY-MM-DD. Datepicker in the UI.
endDatestringYYYY-MM-DD. Datepicker in the UI.
maxResultsintegerGlobal cap across all searches. Default 100.
fetchAdDetailsbooleanFetch full ad page (headline, CTA, URL, targeting…) per result. Default false.
adUrlsstring[]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:

ColumnMeaning
idLinkedIn ad ID
adLibraryUrlDerived link back to linkedin.com/ad-library/detail/<id>
advertiserAdvertiser name
posterAccount that posted the ad
headlineAd headline (only with fetchAdDetails or details-only mode)
descriptionAd body text
ctaCall-to-action label
destinationUrlClick-through URL
adTypee.g. "Single Image Ad", "Video Ad"
imageCreative URL
startDate / endDateISO timestamps
adDurationHuman-readable run duration
targetingLocation / targetingLanguage / targetingAudienceFlattened targeting
advertiserLinkedinPageLink to advertiser's LinkedIn company page
posterTitle / promotedByPosting metadata
_searchedByField / _searchedByValueWhich bulk query surfaced this ad (e.g. company / microsoft)
_sourceUrlSet in details-only mode — the URL you passed in
_scrapedAtISO 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 input
npm start

Requires Node.js 20+.

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.