LinkedIn Ad Library Scraper
Pricing
from $1.20 / 1,000 ad records
LinkedIn Ad Library Scraper
Scrape public LinkedIn Ad Library ads by keyword, advertiser, country, and official search URLs.
Pricing
from $1.20 / 1,000 ad records
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
Scrape public LinkedIn Ad Library search results and ad detail pages for competitive advertising research. Export LinkedIn ad creatives, advertiser names, payer names, ad URLs, creative text, CTA/headline signals, media URLs, run-date text, impression ranges, targeting text, and monitoring metadata.
Who is it for
This Actor is for B2B marketers, agencies, ad operations teams, founders, and competitive-intelligence analysts who need repeatable exports from the public LinkedIn Ad Library.
What you can use it for
- Monitor competitor LinkedIn campaigns weekly.
- Collect new ad creative and messaging for B2B competitive intelligence.
- Export public LinkedIn ad transparency data for agency reporting.
- Track paid-by entities and advertiser pages from official LinkedIn Ad Library URLs.
- Build a lightweight LinkedIn Ad Library API workflow by running saved inputs on a schedule and reading the dataset through the Apify API.
- Compare LinkedIn ads library results across multiple keywords and countries to collect LinkedIn ad examples for creative research.
This Actor uses public anonymous LinkedIn Ad Library pages only. It does not log in, access Campaign Manager, scrape private profiles, or collect member-only data.
Ready-to-run Store examples
Use these public Apify Store examples when you want a saved task with safe, bounded inputs and a preview dataset:
- B2B SaaS LinkedIn ads research — export recent US LinkedIn Ad Library creatives for B2B SaaS messaging research.
- LinkedIn fintech ads in the UK — compare UK fintech advertisers, creative types, public ad-library URLs, and copy themes.
- LinkedIn CRM ads research — monitor CRM competitors and capture advertiser names, ad URLs, creative text, and media signals.
- LinkedIn AI startup ads — collect public AI startup ad examples for positioning and campaign research.
- LinkedIn cybersecurity ads — review cybersecurity campaign messages and advertiser transparency fields.
Each example is intentionally capped for quick validation and points to LinkedIn Ad Library ad URLs rather than unavailable destination landing-page URLs.
Input recipes from verified Store examples
These are the same bounded inputs used by the public Store examples above. QA verified each example task with 20 unique ad records and matching item charge events.
B2B SaaS LinkedIn ads research
{"keyword": "b2b saas","countries": ["US"],"dateOption": "last-30-days","maxAds": 20}
LinkedIn fintech ads in the UK
{"keyword": "fintech","countries": ["GB"],"dateOption": "last-30-days","maxAds": 20}
LinkedIn CRM ads research
{"keyword": "crm","countries": ["US"],"dateOption": "last-30-days","maxAds": 20}
LinkedIn AI startup ads
{"keyword": "AI startup","countries": ["US"],"dateOption": "last-30-days","maxAds": 20}
LinkedIn cybersecurity ads
{"keyword": "cybersecurity","countries": ["US"],"dateOption": "last-30-days","maxAds": 20}
Input fields
startUrls- Official LinkedIn Ad Library search URLs to process.keyword- Keyword for the public Ad Library search builder.advertiser- Optional account owner filter.payer- Optional paid-by filter.countries- ISO country codes, for exampleUS,GB,CA,AU.dateOption-last-30-days,last-6-months,last-year, orany-time.changedSince- Optional ISO timestamp for incremental monitoring labels.maxAds- Maximum unique ad detail records to save.requestDelayMs- Delay between detail requests to reduce rate limiting.proxyConfiguration- Apify Proxy settings. Proxy use is recommended for larger runs.
Output
Each dataset item represents one public LinkedIn ad and can include:
adIdadUrlsearchUrladvertiserNameadvertiserUrlpayerNamecreativeTextheadlinecallToActioncreativeTypemediaUrlsactiveDatesTextimpressionsTexttargetingTextfirstSeenAtlastSeenAtchangeType
The Actor also writes a RUN-SUMMARY key-value-store record with saved counts and processed search URLs.
Pricing and limits
The Actor is designed for pay-per-event pricing: a small start event plus one item event for each saved ad record. maxAds caps the run size, and requestDelayMs lets you trade speed for lower rate-limit risk. The Actor saves available public metadata and media URLs; it does not download media files.
API Usage
Use scheduled Apify tasks for weekly monitoring, then export the dataset as JSON, CSV, Excel, or through the Apify API. The RUN-SUMMARY key-value-store record is useful for automations that need saved counts and processed source URLs.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/linkedin-ad-library-scraper').call({keyword: 'crm',countries: ['US'],dateOption: 'last-30-days',maxAds: 20});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/linkedin-ad-library-scraper').call(run_input={'keyword': 'crm','countries': ['US'],'dateOption': 'last-30-days','maxAds': 20,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~linkedin-ad-library-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"keyword":"crm","countries":["US"],"dateOption":"last-30-days","maxAds":20}'
MCP
You can use this Actor from MCP-capable tools through Apify's Actor integration. Pass the same JSON input you would use in Console and read the default dataset items after the run succeeds.
Add the Apify MCP server to Claude Desktop or Claude Code:
$claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/linkedin-ad-library-scraper
Example MCP server JSON configuration:
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/linkedin-ad-library-scraper"],"env": {"APIFY_TOKEN": "your-apify-token"}}}}
Example prompts:
- "Run the LinkedIn Ad Library Scraper for keyword crm in the US and return the first 20 ad records."
- "Scrape this LinkedIn Ad Library search URL and summarize repeated CTA themes from the output dataset."
Legality and responsible use
This Actor collects information from public LinkedIn Ad Library pages. Use the results for lawful competitive research, transparency analysis, and reporting. Do not use the output to identify private individuals, bypass access controls, or violate LinkedIn terms that apply to your use case.
Related actors
For broader social advertising workflows, combine this Actor with other public ad transparency or social media monitoring actors in your Apify account. Keep LinkedIn Ad Library monitoring separate from member-profile or feed scraping because the data source and compliance boundary are different.
FAQ
How can I scrape LinkedIn Ad Library ads by keyword?
Set keyword, choose one or more countries, select dateOption, and set maxAds. You can also paste official LinkedIn Ad Library search URLs into startUrls for exact searches.
Can I export competitor LinkedIn ad creatives and payer data?
Yes. Each output row includes the public ad URL, advertiser fields, payer name when LinkedIn exposes it, creative text, media URLs, creative type, and available transparency text.
Support
If a run returns fewer ads than expected, try a broader keyword, a longer date range, or official search URLs copied from LinkedIn. For persistent failures, open an Apify issue with the run ID and input so the scraper can be adjusted to LinkedIn's current public HTML.
Notes and limits
LinkedIn may rate-limit or change public Ad Library HTML. The Actor retries transient 429/5xx responses, skips failed detail pages while preserving successful ads, and logs warnings for empty searches. For large monitoring jobs, use multiple specific search URLs and keep a moderate request delay.