LinkedIn Ads Library Competitive Creative Scraper
Pricing
Pay per usage
LinkedIn Ads Library Competitive Creative Scraper
Collect public LinkedIn Ads Library creatives and messaging patterns for competitor research, campaign inspiration, and structured creative analysis.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Brian Keefe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Production-ready Apify Actor for extracting public competitive creative signals from LinkedIn Ads Library-style HTML pages and deterministic supplied HTML fixtures.
Compliance
- Public data only.
- No login, no account automation, no credential use, and no bypassing of technical access controls.
- If a live public fetch is blocked, unavailable, or returns an access wall, the actor emits warning rows instead of attempting circumvention.
- For repeatable workflows and tests, use
suppliedHtmlfixtures captured from public pages you are authorized to analyze.
What It Does
- Accepts company targets via name, domain, and/or public LinkedIn Ads Library URL.
- Accepts deterministic
suppliedHtmlfixtures for local parsing. - Extracts ad rows with creative metadata when visible.
- Emits warning rows when no public input is available or live fetches are blocked.
- Applies deterministic theme-tag and positioning heuristics.
- Optionally fetches public landing pages referenced by extracted ads to enrich heuristics.
Input
See .actor/input_schema.json for the Apify input schema.
Example:
{"companies": [{"name": "Example Inc","domain": "example.com","adLibraryUrl": "https://www.linkedin.com/ad-library/..."}],"maxAds": 50,"includeLandingPages": false,"suppliedHtml": [{"name": "Example Inc","domain": "example.com","sourceUrl": "https://www.linkedin.com/ad-library/...","html": "<html>...</html>"}]}
Output
Each dataset row includes:
advertisertitlecopybodyctalandingUrllandingDomainmediaUrlfirstSeenlastSeensourceUrlthemeTagspositioningSummarywarnings
When the actor cannot fetch or parse a live public source, it still emits a row with warnings populated.
Local Usage
Install dependencies:
$npm install
Run tests:
$npm test
Run smoke test:
$npm run smoke
Run the actor locally with Apify storage:
$APIFY_LOCAL_STORAGE_DIR=./storage node src/main.js
Populate storage/key_value_stores/default/INPUT.json first, or use examples/sample-input.json as a starting point.
Heuristics
Theme tags and positioning summaries are deterministic and rule-based. They look for patterns related to:
- AI and automation
- analytics and reporting
- lead generation and growth
- cost savings and productivity
- trust, compliance, and enterprise readiness
- free-trial and demo-oriented conversion hooks
Project Structure
.actor/actor.json.actor/input_schema.jsonsrc/examples/tests/
Notes
- The parser is fixture-first and designed to stay robust when HTML is captured from public pages and replayed locally.
- Live LinkedIn/public URL access can change without notice. Blocked responses are treated as warnings, not as reasons to circumvent access controls.