# LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting (`tenfoldfleet/linkedin-ad-library-scraper`) Actor

See which ads any company or keyword is running on LinkedIn, straight from the public LinkedIn Ad Library: advertiser, payer, format, headline, ad text, CTA, landing page, media, run dates, impressions and targeting. No login. $3 per 1,000 ads; empty searches are free.

- **URL**: https://apify.com/tenfoldfleet/linkedin-ad-library-scraper.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Social media, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 ads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does LinkedIn Ads Library Scraper do?

**LinkedIn Ads Library Scraper** exports ads from the public **LinkedIn Ad Library** (linkedin.com/ad-library). Search by **company or advertiser name**, by **keyword** in the ad copy, by **payer**, or paste Ad Library search links, and get one clean row per ad: advertiser, ad format, headline, ad text, images and video, and a link to the ad. Turn on **Include full ad details** to also get the payer, run dates, call to action, landing page URL, full ad text and, for ads shown in the EU, the **impressions range, impressions by country and targeting** (language, location and audience facets).

Use it as a **LinkedIn Ad Library API** from the Apify API, a schedule, Make, Zapier, n8n or an AI agent. No LinkedIn account and no login cookies are needed.

> Not affiliated with LinkedIn. This Actor reads the ad library that LinkedIn publishes for anyone to browse.

### Why use it?

- **Competitor research for B2B marketers**: see every ad a competitor runs on LinkedIn, which formats they use (single image, video, carousel, document and the other formats LinkedIn lists) and what they promise in the copy.
- **Messaging and creative swipe files**: collect headlines, CTAs and landing pages for a category ("cybersecurity", "payroll software") in minutes instead of scrolling the library by hand.
- **Targeting insight**: for EU-delivered ads, read which locations, languages and audience facets (company, job, demographic, interests) the advertiser selected.
- **Spend signals**: impressions ranges and the country split show which campaigns get the most delivery.
- **Monitoring**: schedule it weekly per competitor and spot new ads by `adId` and run dates.
- **Agency prospecting**: check whether a prospect advertises on LinkedIn at all, and who pays for the ads.

### What data can it extract?

| Field | Description | Needs details |
|---|---|---|
| `adId`, `adUrl` | LinkedIn ad ID and link to the ad in the library | |
| `advertiserName`, `advertiserLogoUrl`, `advertiserDescription` | Company or person running the ad (headline shown for people) | |
| `format`, `creativeType` | Ad format as LinkedIn labels it: single image, video, carousel, document and others | |
| `headline`, `bodyText` | Ad headline and ad text (preview text on search results, full text with details) | |
| `imageUrls`, `videoThumbnailUrl` | Creative images and the video cover image | |
| `advertiserUrl` | LinkedIn company or profile page of the advertiser | yes |
| `payer` | Who paid for the ad ("Paid for by") | yes |
| `ctaText`, `landingUrl` | Call-to-action button and destination URL | yes |
| `videoUrl`, `carouselCards`, `document` | MP4 file, carousel cards, document title and page count | yes |
| `startDate`, `endDate` | Dates the ad ran (EU-delivered ads) | yes |
| `impressions`, `impressionsMin`, `impressionsMax` | Total impressions range, e.g. 30k-50k (EU-delivered ads) | yes |
| `impressionsByCountry` | Share of impressions per country (EU-delivered ads) | yes |
| `targeting`, `targetingParameters` | Included and excluded locations and languages, plus which audience facets were used (EU-delivered ads) | yes |
| `searchType`, `searchQuery`, `position` | Which search found the ad and its rank | |

### How to scrape the LinkedIn Ad Library

1. Add one or more **keywords** (for example `cybersecurity`), **advertiser names** (for example `HubSpot`) or **payer names**. You can also paste search URLs from linkedin.com/ad-library or single ad URLs.
2. Optionally pick **countries** and a **date range** (last 30 days, this month, this year, last year or custom dates).
3. Set **Max ads per search** (default 100). Turn on **Include full ad details** if you need payer, dates, landing pages, impressions and targeting.
4. Click **Start**, then download the ads as JSON, CSV or Excel, or read them through the API.

### How much does it cost?

You pay per ad saved:

- **$3 per 1,000 ads** ($0.003 per ad) from search results.
- **$5 per 1,000 ads with full details** ($0.005 per ad). A detailed ad is charged at this price instead of the basic one, never both.
- A $0.00005 start fee per run.

A single ad URL or ad ID always comes with its details, so it is charged as an ad with details. Searches that find no ads, duplicate ads (an ad found by two searches is saved once) and failed requests are **free**. If a detail page cannot be loaded, the ad is still saved with its search-result data at the basic price. On the Apify free plan, the $5 monthly credit covers about **1,600 ads**, or about **1,000 ads with full details**. Set a **maximum cost per run** and the Actor stops as soon as it is reached.

### Input

```json
{
    "keywords": ["cybersecurity"],
    "advertisers": ["HubSpot"],
    "countries": ["US", "GB", "DE"],
    "dateOption": "last-30-days",
    "includeDetails": true,
    "maxAds": 100
}
```

Each keyword, advertiser, payer and search URL is a separate search with its own **Max ads per search** limit. Countries and the date range apply to keyword, advertiser and payer searches; a pasted search URL keeps its own filters.

### Output

One row per ad. Download it as JSON, CSV, Excel, XML or HTML, or fetch it through the Apify API. Example with details:

```json
{
    "adId": "1100088693",
    "adUrl": "https://www.linkedin.com/ad-library/detail/1100088693",
    "advertiserName": "Example Analytics",
    "advertiserUrl": "https://www.linkedin.com/company/example-analytics",
    "payer": "Example Analytics Inc.",
    "format": "video",
    "headline": null,
    "bodyText": "Most CMO hires fail in the first year. Here is what the good ones do differently. ...",
    "ctaText": null,
    "landingUrl": null,
    "videoUrl": "https://dms.licdn.com/playlist/vid/v2/.../mp4-720p-30fp-crf28/...",
    "startDate": "2025-12-30",
    "endDate": "2026-01-05",
    "impressions": "30k-50k",
    "impressionsMin": 30000,
    "impressionsMax": 50000,
    "impressionsByCountry": [
        { "country": "United States", "percent": 23 },
        { "country": "France", "percent": 13 }
    ],
    "targeting": [
        { "parameter": "Language", "includes": ["English"], "excludes": [] },
        { "parameter": "Location", "includes": ["Australia and New Zealand", "DACH", "United States"], "excludes": [] }
    ],
    "targetingParameters": [
        { "parameter": "Company", "targeted": true, "excluded": false },
        { "parameter": "Job", "targeted": true, "excluded": false }
    ],
    "detailsIncluded": true,
    "searchType": "keyword",
    "searchQuery": "hiring",
    "position": 1
}
```

A search that finds nothing returns one free row with `noResults: true`. Failed searches return a free row with an `error` field.

### Tips

- LinkedIn shows run dates, impressions and targeting only for ads delivered in the EU. For other ads the details still add the payer, CTA, landing page, full text and video file.
- Advertiser search matches advertiser names that contain your words, so "Microsoft" also finds partners with Microsoft in their page name. Use the exact company page name ("HubSpot", not "hubspot.com") and check `advertiserName` in the output.
- LinkedIn keeps about one year of ads, and custom date ranges must fall inside the past year.
- Search results without details are faster: about 60-100 ads a minute per search. With details, expect about 30-40 ads a minute.
- For monitoring, schedule the Actor and compare `adId` values between runs.

### Use it with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through Apify's MCP server: add `https://mcp.apify.com?tools=tenfoldfleet/linkedin-ad-library-scraper` as a remote MCP server and sign in with your Apify account. The agent fills in the input, runs the Actor and reads the ads itself; you pay the same per-ad price as a normal run.

### FAQ

#### Do I need a LinkedIn account or cookies?

No. The Ad Library is public, and the Actor reads it like a logged-out visitor. It never asks for your LinkedIn login.

#### Why are impressions and targeting empty for some ads?

LinkedIn publishes those fields only for ads shown in the European Union. Filter by EU countries (for example DE, FR, NL) to get ads that have them.

#### Can I get every ad of one company?

Yes. Put the company name in **Advertiser or company names** and raise **Max ads per search**. Large advertisers can have thousands of ads in the library.

#### Does it work for ads that already stopped running?

Yes. The library keeps ads for about a year after they run, and the Actor returns them with their run dates when LinkedIn shows them.

#### Why did a run take longer than expected?

LinkedIn limits how fast one visitor can browse the library, so the Actor spreads requests over several residential connections and paces them. Expect about half an hour per 1,000 ads with details. If LinkedIn blocks most requests for a while, the Actor stops early, keeps the ads it already saved and adds a free row that says so.

### Disclaimer

This Actor is not affiliated with, endorsed by or sponsored by LinkedIn Corporation. LinkedIn is a trademark of LinkedIn Corporation. The Actor extracts only advertising data that LinkedIn makes public in its Ad Library. Some ads are run by individual people; their names and public headlines appear in the library, so handle that data in line with GDPR and your local privacy laws.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Alibaba Products Scraper: Wholesale Suppliers, MOQ, Price Tiers](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Flights Scraper - All Fares per Route & Date (API)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [Threads Search - Keyword & Profile Posts Scraper (No Login)](https://apify.com/tenfoldfleet/threads-search) | post |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

## `keywords` (type: `array`):

Words or phrases to look for in ad copy, for example a product category or a competitor's tagline. Each keyword is one search.

## `advertisers` (type: `array`):

Company or person names as shown on LinkedIn, for example HubSpot or Salesforce. Each name is one search of the ads that this advertiser ran.

## `payers` (type: `array`):

Search by the entity shown as 'Paid for by' on the ad. Useful when an agency or parent company pays for the ads.

## `urls` (type: `array`):

Paste search URLs from linkedin.com/ad-library (all their filters are kept) or single ad URLs like linkedin.com/ad-library/detail/123456789. Single ads always come with full details.

## `countries` (type: `array`):

Only ads shown in these countries. Leave empty for all countries. Applies to keyword, advertiser and payer searches.

## `dateOption` (type: `string`):

Only ads that ran in this period. LinkedIn keeps ads for about one year. Setting a start or end date below switches to a custom range.

## `startDate` (type: `string`):

First day of a custom date range (YYYY-MM-DD). LinkedIn only allows dates within the past year.

## `endDate` (type: `string`):

Last day of a custom date range (YYYY-MM-DD). Defaults to yesterday when only a start date is set.

## `includeDetails` (type: `boolean`):

Also open each ad's detail page: advertiser page URL, payer, run dates, full ad copy, call to action, landing page URL, video file, and for ads shown in the EU the impressions range, impressions by country and targeting. Charged as 'Ad with details' ($0.005) instead of 'Ad' ($0.003), never both. Slower.

## `maxAds` (type: `integer`):

Most ads to save for each keyword, advertiser, payer or search URL. Each saved ad is one charged result. On the Apify free plan, the $5 monthly credit covers about 1,600 ads, or about 1,000 with full details.

## Actor input object example

```json
{
  "keywords": [
    "cybersecurity"
  ],
  "dateOption": "any",
  "includeDetails": false,
  "maxAds": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "cybersecurity"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/linkedin-ad-library-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": ["cybersecurity"] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/linkedin-ad-library-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "cybersecurity"
  ]
}' |
apify call tenfoldfleet/linkedin-ad-library-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/linkedin-ad-library-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/u1qSCIBYzeEmcc7iN/builds/w9yIzwP9aGESxHaEn/openapi.json
