LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

from $1.20 / 1,000 ad records

Go to Apify Store
LinkedIn Ad Library Scraper

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

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

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:

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 example US, GB, CA, AU.
  • dateOption - last-30-days, last-6-months, last-year, or any-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:

  • adId
  • adUrl
  • searchUrl
  • advertiserName
  • advertiserUrl
  • payerName
  • creativeText
  • headline
  • callToAction
  • creativeType
  • mediaUrls
  • activeDatesText
  • impressionsText
  • targetingText
  • firstSeenAt
  • lastSeenAt
  • changeType

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 ApifyClient
import os
client = 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().items
print(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.

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.