LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

Pay per event

Go to Apify Store
LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper

Extract ads from LinkedIn Ad Library — no login needed. Get headlines, body text, CTA labels + URLs, media images, ad format, and funding entity. 50% cheaper than competitors at $0.001/ad.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

10 days ago

Last modified

Share

Extract ads, creatives, headlines, media URLs, CTAs, and funding entities from the LinkedIn Ad Library — no login, no API key, no browser required.

What does it do?

LinkedIn Ad Library Scraper pulls publicly available ad data from LinkedIn's Ad Transparency tool. For any company, brand, or keyword you search, it returns up to 24 ads per query including:

  • 📝 Ad copy — full headline and body text
  • 🖼 Creative URL — direct link to the ad image or video
  • 🔗 Call-to-action — CTA label and destination URL
  • 🏢 Advertiser details — company name and LinkedIn URL
  • 💰 Funding entity — who paid for the ad (useful for agency clients)
  • 📅 Format — Single Image, Video, Carousel, Text, Dynamic, Follow Company

The scraper uses direct HTTP requests with Cheerio HTML parsing — no Playwright, no headless browser. It's fast, cheap, and runs at 256 MB memory.


Who is it for?

🏆 Competitive Intelligence Teams

Monitor which ads your direct competitors are running. See their messaging, offers, and visuals without needing a LinkedIn account or paying for premium tools.

📣 Performance Marketers & Creative Teams

Analyze high-performing ad copy patterns across your industry. Identify CTA formulas, headline structures, and visual styles that resonate with B2B buyers on LinkedIn.

🕵️ Market Researchers & Consultants

Audit a client's advertising presence or benchmark an industry. Pull ads from multiple company URLs in a single run.

🤖 Marketing Automation Engineers

Feed ad data into content pipelines, CRM systems, or AI workflows using the Apify API or native n8n/Make/Zapier integrations.


Why use this scraper?

  • No login required — LinkedIn Ad Library is a public transparency tool
  • No API key needed — works out of the box
  • 50% cheaper than competitors — $0.001/ad at BRONZE vs $0.002 elsewhere
  • Full creative data — headline, body, CTA label + URL, media image URL, funding entity
  • Multiple advertisers — paste a list of LinkedIn company URLs to batch multiple brands
  • Filters — date range, ad format, country, sort order
  • Lightweight — HTTP-only, 256 MB memory, no browser overhead

Scraped data fields

FieldDescriptionExample
adIdUnique LinkedIn ad identifier1200494683
advertiserNameCompany running the adSalesforce
advertiserLinkedInUrlLinkedIn company page URLhttps://www.linkedin.com/company/salesforce
advertiserCompanyIdLinkedIn internal company ID1281394
adFormatAd format typeSingle Image Ad
headlineAd headline textUnlock AI productivity today
bodyTextFull ad copy/body textJoin 150,000+ companies using...
ctaLabelCall-to-action button labelLearn more
ctaUrlCTA destination URLhttps://www.salesforce.com/...
mediaUrlDirect URL to ad image or video thumbnailhttps://media.licdn.com/...
fundingEntityNameWho paid for the ad (advertiser or agency)Iprospect.com Inc.
detailUrlDirect link to ad detail pagehttps://www.linkedin.com/ad-library/detail/...
scrapedAtISO timestamp when the ad was scraped2026-03-31T11:32:52Z

How much does it cost to scrape LinkedIn ads?

Pricing is pay-per-result — you only pay for ads successfully extracted.

TierStart feePer ad24 ads total
FREE$0.005$0.00115~$0.033
BRONZE$0.005$0.001~$0.029
SILVER$0.005$0.00078~$0.024
GOLD$0.005$0.0006~$0.019
PLATINUM$0.005$0.0004~$0.015
DIAMOND$0.005$0.00028~$0.012

💡 Example: Scraping 24 ads from Salesforce costs ~$0.033 on the FREE tier, or ~$0.029 on BRONZE. That's 50% cheaper than comparable scrapers on the Store.

Limitation: LinkedIn's Ad Library returns up to 24 ads per search query via its public HTML. To get ads from multiple companies, add multiple URLs to the Advertiser URLs field — each query returns up to 24 ads independently.


How to use

Step 1 — Choose your search mode

Option A: Search by keyword or company name Enter a company name like Nike or HubSpot in the Search Query field.

Option B: Target specific advertisers Paste LinkedIn company URLs into Advertiser URLs (one per line):

https://www.linkedin.com/company/salesforce
https://www.linkedin.com/company/hubspot
https://www.linkedin.com/company/microsoft

This runs a separate search per URL and returns up to 24 ads each.

Step 2 — Set filters (optional)

  • Date Range: Choose from past 24h, past week, past month, past year, or all-time
  • Ad Format: Filter to image, video, carousel, text, or dynamic ads
  • Country Filter: Enter a 2-letter ISO code (US, GB, DE, FR) to see country-specific ads
  • Sort Order: Most recent (default) or most clicks

Step 3 — Run and collect data

Click Start and data will appear in the Dataset tab as it's extracted. For bulk exports, use the Export button (CSV, XLSX, JSON, JSONL).


Input reference

FieldTypeRequiredDefaultDescription
searchQuerystringNo*Company name or keyword to search
advertiserUrlsarrayNo*[]LinkedIn company page URLs
maxAdsintegerNo50Max ads to extract (practical max ~24 per query)
dateRangestringNopast-monthall-time, past-day, past-week, past-month, past-year
adFormatstringNoallall, SPONSORED_UPDATES, TEXT_ADS, DYNAMIC_ADS, CAROUSEL
countryCodestringNo2-letter ISO country code (US, GB, DE, etc.)
sortBystringNoRECENTRECENT or MOST_CLICKS
maxRequestRetriesintegerNo3Retry attempts per request

* Either searchQuery or at least one advertiserUrls entry is required.


Output example

{
"adId": "1200494683",
"advertiserName": "Salesforce",
"advertiserLinkedInUrl": "https://www.linkedin.com/company/1281394",
"advertiserCompanyId": "1281394",
"adFormat": "Single Image Ad",
"headline": "Agentforce World Tour São Paulo",
"bodyText": "Gostaríamos de te convidar para o maior evento sobre IA Agêntica da América Latina!",
"ctaLabel": "Inscreva-se",
"ctaUrl": "https://www.salesforce.com/br/events/agentforce-world-tour/",
"mediaUrl": "https://media.licdn.com/dms/image/v2/D4D10AQHWOhThVHEqXA/image-shrink_1280/...",
"fundingEntityName": "Iprospect.com Inc.",
"detailUrl": "https://www.linkedin.com/ad-library/detail/1200494683",
"scrapedAt": "2026-03-31T11:32:52.764Z"
}

Tips for best results

Getting more ads from one advertiser

LinkedIn's public HTML returns up to 24 ads per query. Use the date range and format filters to get different slices:

  • Run once with past-month (most recent active ads)
  • Run again with past-year for historical ads
  • Run again with MOST_CLICKS sort to find their best performers

Batch multiple competitors

Add all competitor company URLs to the Advertiser URLs list. Each URL runs as a separate query, so 10 URLs = up to 240 ads.

Exporting to Google Sheets

Use Apify's Google Sheets integration to automatically push scraped ads into a spreadsheet for team sharing.

Filtering by country

Use countryCode to see what ads a company runs specifically in a market (e.g., US for US-only campaigns).


Integrations

n8n workflow: Competitor ad monitoring

  1. Schedule this scraper weekly via n8n HTTP node
  2. Push results to a Notion database or Airtable
  3. Trigger Slack notification when new ads appear from key competitors

Make (Integromat): Creative analysis pipeline

  1. Run scraper → collect mediaUrl + headline + bodyText
  2. Send to OpenAI GPT-4 for categorization (promotional/brand/event/product)
  3. Save to Google Sheets with category tags

Zapier: CRM enrichment

  1. Trigger on new Salesforce competitor account
  2. Run this scraper on their LinkedIn URL
  3. Create a "competitor ad" record in HubSpot with ad copy and creative URL

API usage

Run this scraper programmatically using the Apify API:

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/linkedin-ad-library-scraper').call({
searchQuery: 'HubSpot',
maxAds: 24,
dateRange: 'past-month',
sortBy: 'MOST_CLICKS',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} ads`);
items.forEach(ad => {
console.log(`${ad.advertiserName}: ${ad.headline}`);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/linkedin-ad-library-scraper").call(
run_input={
"advertiserUrls": [
"https://www.linkedin.com/company/salesforce",
"https://www.linkedin.com/company/hubspot",
],
"maxAds": 50,
"dateRange": "past-month",
"sortBy": "MOST_CLICKS",
}
)
dataset = client.dataset(run["defaultDatasetId"])
for item in dataset.iterate_items():
print(f"{item['advertiserName']}: {item['headline']}")

cURL

curl -s -X POST \
"https://api.apify.com/v2/acts/automation-lab~linkedin-ad-library-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "Salesforce",
"maxAds": 24,
"dateRange": "past-month"
}' | jq '.data.id'

Use with Claude (MCP)

Connect this scraper to Claude Desktop or Claude Code via the Apify MCP server. This lets Claude run the scraper and analyze results conversationally.

Setup

Add this MCP server URL to your Claude Desktop config (claude_desktop_config.json) or Claude Code settings:

https://mcp.apify.com?tools=automation-lab/linkedin-ad-library-scraper

Or use the full Apify MCP Server actor for more control:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-apify", "--actors", "automation-lab/linkedin-ad-library-scraper"]
}
}
}

Example prompts

"Scrape the last 24 ads from Salesforce on LinkedIn and summarize their key messaging themes."

"Get LinkedIn ads from HubSpot from the past month sorted by most clicks, then identify the top 3 CTA patterns they use."

"Pull ads from these 5 companies: [URLs] and compare their headline styles."

"Monitor Stripe's LinkedIn ads weekly and alert me when they launch new campaigns."

What Claude can do with the results

  • Competitive analysis — Compare messaging themes across multiple advertisers
  • Creative briefs — Generate ad copy ideas based on competitor patterns
  • Trend reports — Identify shifts in ad format, CTA language, or visual styles over time
  • Data enrichment — Cross-reference ad data with other Apify scrapers for richer insights

Legality

LinkedIn's Ad Library is a public transparency tool required by regulations for advertising accountability. Accessing publicly available data for research, competitive intelligence, and analysis is widely accepted.

This scraper:

  • Does NOT require a LinkedIn account or login
  • Does NOT bypass any authentication or paywalls
  • Only accesses the public /ad-library/ URL space
  • Complies with LinkedIn's transparency program intent

Always use scraped data responsibly and in accordance with your jurisdiction's data protection laws.


FAQ

How many ads can I get per run?

LinkedIn's public HTML returns up to 24 ads per search query. To get more ads, provide multiple advertiser URLs — each URL is a separate query returning up to 24 ads.

Why don't I see impressions or click counts?

LinkedIn's public Ad Library does not expose impression counts or click metrics via its HTML interface. Fields like totalImpressions are reserved for future API integration if LinkedIn opens that data.

I searched for a company and got 0 results — why?

This can happen if:

  • The company name is too generic (try their company URL instead)
  • The company hasn't run ads recently in the selected date range
  • LinkedIn is temporarily rate-limiting requests (try again in a few minutes)

How is this different from silva95's LinkedIn Ad Library scraper?

Our scraper: always returns full details (headline, body, CTA, media, funding entity) at $0.001/ad. silva95 charges $0.002 for basic fields or $0.004 for detailed — 2-4x more expensive for the same data.

Can I scrape video ads?

Yes. Video ads are detected and their thumbnail mediaUrl is extracted. Direct video file URLs are not currently available from the public HTML.

Does this require a proxy?

Yes, the scraper uses Apify proxy automatically. You don't need to configure anything.



Built by automation-lab — professional Apify actors for data teams.