LinkedIn Ad Library Scraper
Pricing
Pay per event
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
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
| Field | Description | Example |
|---|---|---|
adId | Unique LinkedIn ad identifier | 1200494683 |
advertiserName | Company running the ad | Salesforce |
advertiserLinkedInUrl | LinkedIn company page URL | https://www.linkedin.com/company/salesforce |
advertiserCompanyId | LinkedIn internal company ID | 1281394 |
adFormat | Ad format type | Single Image Ad |
headline | Ad headline text | Unlock AI productivity today |
bodyText | Full ad copy/body text | Join 150,000+ companies using... |
ctaLabel | Call-to-action button label | Learn more |
ctaUrl | CTA destination URL | https://www.salesforce.com/... |
mediaUrl | Direct URL to ad image or video thumbnail | https://media.licdn.com/... |
fundingEntityName | Who paid for the ad (advertiser or agency) | Iprospect.com Inc. |
detailUrl | Direct link to ad detail page | https://www.linkedin.com/ad-library/detail/... |
scrapedAt | ISO timestamp when the ad was scraped | 2026-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.
| Tier | Start fee | Per ad | 24 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/salesforcehttps://www.linkedin.com/company/hubspothttps://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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | No* | — | Company name or keyword to search |
advertiserUrls | array | No* | [] | LinkedIn company page URLs |
maxAds | integer | No | 50 | Max ads to extract (practical max ~24 per query) |
dateRange | string | No | past-month | all-time, past-day, past-week, past-month, past-year |
adFormat | string | No | all | all, SPONSORED_UPDATES, TEXT_ADS, DYNAMIC_ADS, CAROUSEL |
countryCode | string | No | — | 2-letter ISO country code (US, GB, DE, etc.) |
sortBy | string | No | RECENT | RECENT or MOST_CLICKS |
maxRequestRetries | integer | No | 3 | Retry 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-yearfor historical ads - Run again with
MOST_CLICKSsort 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
- Schedule this scraper weekly via n8n HTTP node
- Push results to a Notion database or Airtable
- Trigger Slack notification when new ads appear from key competitors
Make (Integromat): Creative analysis pipeline
- Run scraper → collect
mediaUrl+headline+bodyText - Send to OpenAI GPT-4 for categorization (promotional/brand/event/product)
- Save to Google Sheets with category tags
Zapier: CRM enrichment
- Trigger on new Salesforce competitor account
- Run this scraper on their LinkedIn URL
- 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 ApifyClientclient = 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.
Related scrapers
- LinkedIn Jobs Enrichment — Enrich job listings with full details
- LinkedIn Company Scraper — Extract company profiles
- Facebook Ads Library Scraper — Scrape Meta Ad Library ads
Built by automation-lab — professional Apify actors for data teams.