# LinkedIn Ad Library & Competitor Ad Spy Scraper \[No Cookies] (`automation_studio/linkedin-ad-library-competitor-spy`) Actor

Scrape competitor LinkedIn ads without cookies or login. Uncover winning ad creatives, copy, headlines, CTA URLs, longevity scores & UTM tracking.

- **URL**: https://apify.com/automation\_studio/linkedin-ad-library-competitor-spy.md
- **Developed by:** [Automation Studio](https://apify.com/automation_studio) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 verified competitor 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

## 🎯 LinkedIn Ad Library & Competitor Ad Spy Scraper \[No Cookies]

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com)
[![Zero Cookies](https://img.shields.io/badge/Cookies-None%20Required-green)](https://apify.com)
[![Pay Per Event](https://img.shields.io/badge/Pricing-Pay%20Per%20Ad-orange)](https://apify.com)
[![Longevity Score](https://img.shields.io/badge/Feature-Ad%20Longevity%20Tracking-purple)](https://apify.com)

> **Spy on competitor LinkedIn ads, uncover winning creatives, copy, headlines, landing pages & UTM tracking — 100% public data with zero cookies, login, or account ban risk.**

***

### 💡 Why B2B Marketers & Agencies Need This Actor

Running paid LinkedIn Ads without competitive intelligence is like flying blind. LinkedIn Ads have the highest CPCs in digital marketing ($8–$25+ per click). Testing unproven angles burns budgets fast.

With the **LinkedIn Ad Library & Competitor Ad Spy Scraper**, you can instantly extract and analyze every active campaign run by your competitors:

- 📢 **Steal Winning Copy & Angles**: See exact pain points, headlines, body copy, and value propositions that competitors are putting budget behind.
- 🔥 **Identify "Evergreen Winning Ads"**: If an ad has been running continuously for 45+ days, **it is generating positive ROI**. Our automated `daysActive` longevity tracker surfaces winning creatives instantly.
- 🎯 **Decode the Full Funnel**: Unshortens cryptic redirect links to reveal real landing pages, offer structures (Free Trial vs Demo vs Lead Magnet), and complete UTM parameters (`utm_campaign`, `utm_content`).
- 🖼️ **Download High-Res Creative Assets**: Direct CDN links to ad banners, carousel slides, and video preview streams.
- 🛡️ **Zero Login & Zero Cookies**: Powered entirely by official public ad transparency records. No LinkedIn account needed, eliminating any risk of account restrictions or session timeouts.

***

### 🚀 Key Features & Unfair Advantages

| Feature | Standard Scrapers | **LinkedIn Ad Spy Scraper** |
| :--- | :---: | :---: |
| **No Cookies / No Login Required** | ❌ (Often need cookies) | ✅ **100% Public Data** |
| **Ad Longevity & Winning Ad Score** | ❌ None | ✅ **`daysActive` + Evergreen Badges** |
| **Clean Destination URL & UTM Parser** | ❌ (Raw redirect links) | ✅ **Decoded Landing Pages & UTM Tags** |
| **Multi-Competitor Batch Support** | ❌ (1 by 1) | ✅ **Batch scan 5–50 brands in 1 run** |
| **B2B Funnel Classification** | ❌ None | ✅ **Demo, Trial, Webinar, Lead Magnet** |
| **Discord / Slack Webhook Alerts** | ❌ None | ✅ **Instant notification alerts** |
| **Fast Public Trial Execution** | ⏳ Slow (2–4 min) | ⚡ **<15s rapid trial completion** |

***

### 📋 Input Configuration

| Field | Type | Default | Description |
| :--- | :---: | :---: | :--- |
| `companies` | Array | `["hubspot"]` | List of competitor brand names or LinkedIn URLs |
| `keywords` | Array | `[]` | Optional: Filter for specific keywords in copy (e.g. `AI`, `demo`) |
| `country` | String | `ALL` | Target geography (e.g. `US`, `GB`, `DE`, `ALL`) |
| `onlyEvergreen` | Boolean | `false` | Return ONLY ads active for 30+ consecutive days |
| `maxAds` | Integer | `10` | Maximum total ad creatives to retrieve (10 for fast trials) |
| `webhookUrl` | String | `""` | Optional Discord/Slack Webhook URL for instant alerts |
| `proxyConfiguration` | Object | Apify Proxy | Recommended proxy configuration for uninterrupted throughput |

***

### 📊 Sample Output Format (JSON)

```json
{
  "advertiserName": "HubSpot",
  "payerName": "HubSpot, Inc.",
  "adFormat": "Single Image",
  "headline": "Stop juggling disconnected tools. Connect your entire GTM team.",
  "adCopy": "Empower your marketing, sales, and service teams with HubSpot Customer Platform. Start free today and scale seamlessly.",
  "adCopyExcerpt": "Empower your marketing, sales, and service teams with HubSpot Customer Platform...",
  "ctaButton": "Get started free",
  "funnelType": "🚀 Free Trial",
  "cleanDestinationUrl": "https://www.hubspot.com/products/crm",
  "rawDestinationUrl": "https://www.linkedin.com/redir/redirect?url=https%3A%2F%2Fwww.hubspot.com%2Fproducts%2Fcrm...",
  "utmCampaign": "q3_b2b_crm_awareness",
  "utmSource": "linkedin",
  "utmMedium": "paid",
  "utmContent": "carousel_v2_scale",
  "daysActive": 58,
  "longevityBadge": "🔥 Evergreen Winner (60+ days)",
  "firstSeenDate": "2026-07-30",
  "targetCountry": "Worldwide (All)",
  "mediaUrl": "https://media.licdn.com/dms/image/v2/D5610AQH...",
  "adLibraryUrl": "https://www.linkedin.com/ad-library/search?keyword=hubspot",
  "scrapedAt": "2026-09-26T13:40:00.000Z"
}
```

***

### 💰 Pricing & Monetization (25% Cheaper than Alternatives)

This Actor uses an ultra-competitive **Pay-Per-Event** model:

- **Actor Start Fee**: **$0.0005** (Practically zero friction startup — $0.50 per 1,000 runs)
- **Per Ad Extracted**: **$0.003** ($3.00 per 1,000 verified competitor ad intelligence records — **25% cheaper than standard scrapers charging $4.00/k**, while providing complete UTM parameters, landing page unshortening, longevity scoring, and webhook alerts included free!)

***

### ❓ Frequently Asked Questions (FAQ)

##### Do I need to log into LinkedIn or provide cookie sessions?

No! The LinkedIn Ad Library is a public transparency database required by EU Digital Services Act regulations. This actor requires zero cookies and zero credentials.

##### How do you know which ads are "winners"?

In paid advertising, nobody keeps losing ads active. If a B2B SaaS brand has kept a specific creative active for 45 to 90 days, it is consistently driving profitable conversions. Our `daysActive` metric highlights these winning creatives.

##### Can I schedule recurring competitive audits?

Yes! In the Apify Console, use the **Schedules** tab to run this actor weekly (e.g., every Monday at 9 AM) to keep your marketing team updated on newly launched competitor campaigns.

# Actor input Schema

## `companies` (type: `array`):

Enter competitor company names or LinkedIn page URLs (e.g., 'hubspot', 'slack', 'salesforce', 'mondaydotcom', 'https://www.linkedin.com/company/hubspot').

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

Optional: Filter for specific keywords appearing in ad headlines or body copy (e.g., 'AI agent', 'demo', 'free trial', 'whitepaper'). Leave empty to capture all ads.

## `country` (type: `string`):

Filter ads served to a specific geographic market. Mandated by transparency disclosure laws.

## `onlyEvergreen` (type: `boolean`):

When enabled, filters out short-term ad tests and returns ONLY verified profitable ads running continuously for 30 days or longer.

## `fastMode` (type: `boolean`):

Extract competitor ads at maximum speed without waiting for individual landing page redirects. Returns headlines, ad copy, images, and ad library links in seconds.

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

Maximum number of ad creatives to collect in this run. Default is set to 10 for rapid test execution.

## `webhookUrl` (type: `string`):

Optional: Enter a Discord or Slack Webhook URL to receive instant notification summaries when new competitor ads are discovered.

## `proxyConfiguration` (type: `object`):

Use Apify Proxy to guarantee 100% extraction uptime, eliminate rate limits, and bypass regional blocks.

## Actor input object example

```json
{
  "companies": [
    "hubspot"
  ],
  "keywords": [],
  "country": "ALL",
  "onlyEvergreen": false,
  "fastMode": false,
  "maxAds": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing parsed competitor LinkedIn advertisements with media, copy, CTA, and UTM parameters

## `summary` (type: `string`):

Key-value summary of total ads discovered, winning creatives, and top competitor offers

# 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 = {
    "companies": [
        "hubspot"
    ],
    "keywords": [],
    "maxAds": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation_studio/linkedin-ad-library-competitor-spy").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 = {
    "companies": ["hubspot"],
    "keywords": [],
    "maxAds": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("automation_studio/linkedin-ad-library-competitor-spy").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 '{
  "companies": [
    "hubspot"
  ],
  "keywords": [],
  "maxAds": 10
}' |
apify call automation_studio/linkedin-ad-library-competitor-spy --silent --output-dataset

```

## MCP server setup

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

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/2URK7KXQLmuEnbURc/builds/otZeEs6do5NEmmdTE/openapi.json
