LinkedIn Ad Library Scraper: Competitor B2B Ads & Targeting · Apify
LinkedIn Ad Library Scraper - Ads, Advertisers & Impressions avatar

LinkedIn Ad Library Scraper - Ads, Advertisers & Impressions

Pricing

from $0.99 / 1,000 ads

Go to Apify Store
LinkedIn Ad Library Scraper - Ads, Advertisers & Impressions

LinkedIn Ad Library Scraper - Ads, Advertisers & Impressions

Scrape the LinkedIn Ad Library without login: competitor B2B ads by keyword, advertiser or payer with ad copy, creatives, videos, carousels, CTA, landing page, Paid for by, run dates, impressions by country and targeting. Ad spy tool. $1.24 per 1,000 ads.

Pricing

from $0.99 / 1,000 ads

Rating

0.0

(0)

Developer

Social Scrapers

Social Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 minutes ago

Last modified

Categories

Features

Limited permissions

Share

LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper extracts ads from the public LinkedIn Ad Library without a LinkedIn account, cookies or login. Search by keyword, advertiser or payer, filter by country and date, and get every ad with its text, headline, call to action, landing page, images, video files, carousel cards, documents and message ads, plus "Paid for by", run dates, impressions by country and the advertiser's targeting. It costs $0.95 per 1,000 ads.

💡 Need a feature that isn't here? Just ask. Open an issue on the Issues tab and tell us what you need: a new field, filter, input type or output format. We build requested features fast, usually within 24 hours, at no extra cost.

⭐ Found it useful? A short review on the Reviews tab helps other people find this scraper, and tells us what to build next.

What does LinkedIn Ad Library Scraper do?

  • Four ways to search. Keywords in the ads, advertiser (company) names, the "Paid for by" entity, or Ad Library URLs copied from your browser — searches or single ads.
  • Every Ad Library filter. Countries (one or many) and dates: last 30 days, this month, this year, last year, or a custom range. URLs keep all their own filters.
  • All results. The Actor pages through the whole search; set maxAds to 0 for every ad.
  • The whole creative. Intro text, headline, description, call to action, landing page, images, video files (best quality first) and cover, carousel cards, document title and pages, and message ads (sender, text, buttons).
  • Transparency data. "Paid for by", the advertiser's page, first and last day the ad ran, total impressions as a range, the share of impressions per country, and targeting: languages, locations included and excluded, and which targeting parameters (audience, demographic, company, education, job, member interests) were used.
  • Every format. Single image, video, carousel, document, message, conversation, event, text, spotlight, follower, job and thought-leader ads.
  • Pay only for ads delivered. The run stops cleanly at the spending limit you set.

What data can you extract?

One item per ad. Every field is always present; null or [] means LinkedIn shows nothing for it.

FieldDescription
adId, adUrlThe ad's ID and its page in the Ad Library
advertiserName, advertiserUrl, advertiserLogoUrlThe advertiser
promotedMemberThought-leader ads: the member whose post is promoted (name, url, headline, imageUrl)
format, formatLabel, creativeTypeSINGLE_IMAGE, VIDEO, CAROUSEL, DOCUMENT, MESSAGE, CONVERSATION, EVENT, TEXT, SPOTLIGHT, FOLLOWER, JOB, ARTICLE…, LinkedIn's own label and type
introText, headline, descriptionThe ad's words
callToAction, landingUrlThe button and where the ad leads
imageUrls, videoUrls, videoPosterUrlMedia
carouselCardsCarousel ads: each card's title, imageUrl, landingUrl
documentDocument ads: title, pageCount, coverImageUrls
messageMessage ads: senderName, senderImageUrl, text, buttons
paidByWho paid for the ad
firstShown, lastShown, runDatesTextWhen the ad ran
impressionsText, impressionsLow, impressionsHighTotal impressions as a range (1k-5k, < 1k) with numbers
impressionsByCountryShare of impressions per country (fractions of 1)
targetedLanguages, targetedLocations, excludedLocationsTargeting at a glance
targetingSegments, targetingParametersEvery targeting category with its values, and which parameters were targeted or excluded
hasDetails, input, inputType, scrapedAtWhether the ad's page was read, where the ad came from, and when

How to scrape the LinkedIn Ad Library

  1. Open the Actor and add advertisers, keywords, payers or Ad Library URLs.
  2. Pick countries and a date range if you need them.
  3. Set Max ads per search (0 = all).
  4. Click Start, then download the ads as JSON, CSV, Excel, XML or HTML, or read them through the API.

How much does it cost?

You pay per ad delivered to the dataset: $1.24 per 1,000 ads, with or without ad details. Apify subscribers pay less: Silver −10% ($1.116 per 1,000) and Gold, Platinum and Diamond −20% ($0.992 per 1,000). Each run also carries Apify's standard Actor start charge of $0.0005 (one per GB of memory, at least one).

JobAdsPrice (no discount)
The newest 100 ads of 10 competitors1,000$1.24
Every ad mentioning a keyword (5,000 ads)5,000$6.20
A weekly check of 20 advertisers, 50 ads each1,000 a week$1.24 a week

Searches with no results and ads that cannot be found cost nothing. To cap spending, set a maximum total charge in the run options: the Actor stops cleanly once it is reached and keeps everything collected so far.

Input example

{
"advertisers": ["HubSpot"],
"searchTerms": ["project management"],
"payers": [],
"startUrls": ["https://www.linkedin.com/ad-library/search?keyword=crm&countries=DE"],
"countries": ["US", "DE"],
"dateOption": "last-30-days",
"maxAds": 100,
"includeAdDetails": true
}

The scraper picks Apify Proxy's tier itself: datacenter first, residential only when a request is refused.

Output example

A real ad from a test run (long links shortened):

{
"adId": "1631307464",
"adUrl": "https://www.linkedin.com/ad-library/detail/1631307464",
"advertiserName": "HubSpot",
"advertiserUrl": "https://www.linkedin.com/company/68529",
"advertiserLogoUrl": "https://media.licdn.com/dms/image/v2/C4D0BAQF8H-SLmMDZlA/company-logo_100_100/…",
"promotedMember": null,
"format": "VIDEO",
"formatLabel": "Video Ad",
"creativeType": "SPONSORED_VIDEO",
"introText": "La recherche par IA transforme la manière dont les clients découvrent les marques. HubSpot AEO vous indique précisément votre positionnement et les leviers indispensables pour surpasser la concurrence.",
"headline": "Se démarquer en recherche IA, ça rapporte.",
"description": null,
"callToAction": "Learn more",
"landingUrl": "https://www.hubspot.fr/products/aeo?utm_source=linkedin&utm_medium=paid_brandstrategy&…",
"imageUrls": [],
"videoUrls": [
"https://dms.licdn.com/playlist/vid/v2/D4E10AQEiybKJQl8Bvg/progressive-servable-video/…",
"https://dms.licdn.com/playlist/vid/v2/D4E10AQEiybKJQl8Bvg/mp4-720p-30fp-crf28/…"
],
"videoPosterUrl": "https://media.licdn.com/dms/image/v2/D4E10AQEiybKJQl8Bvg/videocover-high/…",
"carouselCards": [],
"document": null,
"message": null,
"paidBy": "HubSpot, Inc.",
"firstShown": "2026-11-05",
"lastShown": "2026-11-08",
"runDatesText": "Ran from Nov 5, 2026 to Nov 8, 2026",
"impressionsText": "10k-20k",
"impressionsLow": 10000,
"impressionsHigh": 20000,
"impressionsByCountry": [
{ "country": "France", "share": 1 },
{ "country": "United Arab Emirates", "share": 0.005 },
{ "country": "United States", "share": 0.005 }
],
"targetedLanguages": ["English"],
"targetedLocations": ["France"],
"excludedLocations": [],
"targetingSegments": [
{ "category": "Language", "includes": ["English"], "excludes": [] },
{ "category": "Location", "includes": ["France"], "excludes": [] }
],
"targetingParameters": [
{ "name": "Audience", "targeted": true, "excluded": false },
{ "name": "Demographic", "targeted": false, "excluded": false },
{ "name": "Company", "targeted": true, "excluded": true },
{ "name": "Education", "targeted": false, "excluded": false },
{ "name": "Job", "targeted": true, "excluded": true },
{ "name": "Member Interests and Traits", "targeted": false, "excluded": false }
],
"hasDetails": true,
"input": "HubSpot",
"inputType": "advertiser",
"scrapedAt": "2026-11-08T12:29:54.428Z"
}

Use cases

  • Competitor B2B ad research: every ad a competitor runs on LinkedIn, its message, offer, call to action and landing page.
  • Creative inspiration: collect hooks, headlines, videos, carousels and documents that work for your audience.
  • Targeting intelligence: see which countries, languages and targeting parameters advertisers use for ads shown in the EU.
  • Campaign monitoring: schedule the Actor to follow advertisers or keywords week by week.
  • Market research and datasets: gather B2B ad copy and media at scale for analysis or training data.

API, Python, JavaScript & integrations

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('socialscrapers/linkedin-ad-library-scraper').call({
advertisers: ['HubSpot'],
countries: ['US'],
maxAds: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("socialscrapers/linkedin-ad-library-scraper").call(run_input={
"searchTerms": ["project management"],
"maxAds": 0,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["advertiserName"], item["headline"], item["landingUrl"])

Connect it to Make, Zapier, n8n, Google Sheets and other tools with Apify integrations, get notified with webhooks, run it on a schedule, or call it from AI agents through the Apify MCP server.

Limits

  • EU transparency data. LinkedIn publishes run dates, impressions, countries and targeting for ads shown in the European Union. Other ads come with their creative, advertiser and "Paid for by" line.
  • Custom dates. LinkedIn's custom date range covers the last 12 months, ends yesterday at the latest and spans at least two days; the Actor fits your dates into that window and says so in the log. For older ads, use the "Last year" option.
  • Each search stands alone. An ad that matches several of your searches is returned once for each of them; input says which.
  • Ad versions. Some ads have several versions; the Ad Library page shows one of them.
  • Media links expire. Image and video links point to LinkedIn's servers and stop working after some time. Download media promptly if you need it.
  • A run with 0 results still succeeds. When an advertiser or ad does not exist in the Ad Library, or nothing matches a search and its filters, the run ends as Succeeded with a status message naming each search and why, and nothing is charged. When nothing in the input can be used at all, the run also ends as Succeeded, with a status message that starts "Nothing to scrape:" and says what to fix; no results are charged. A run fails only when LinkedIn refuses every one of 3 or more searches and a well-known public LinkedIn Ad Library search is refused too (the scraper is then blocked; try again later).

FAQ

Is it legal to scrape the LinkedIn Ad Library? The Actor reads only what the Ad Library shows to every visitor, without logging in. You are responsible for how you use the data, including LinkedIn's terms and data-protection laws.

Do I need a LinkedIn account or cookies? No. The Actor works logged out.

How many ads can I get? All the ads a search finds: set maxAds to 0.

Why did I get fewer ads than I asked for? The search has fewer results under your filters, or the run reached its maximum total charge. The run log says which, for each search.

Can I get only new ads? Run the Actor on a schedule with a recent date range (for example "Last 30 days") and keep the ad IDs you already have; new ads have IDs you have not seen.

How fast is it? In our tests, 500 ads with all details took about two minutes, and 500 ads without details (includeAdDetails off) under 30 seconds.

Other scrapers by Social Scrapers

ScraperWhat it gets
TikTok ScraperVideos, Profiles, Hashtags and Comments
Instagram Comments ScraperComments, Likes and Reply Counts
Instagram Hashtag ScraperReels and Keyword Search
Instagram Post ScraperPosts, Reels and Comments
Instagram Profile ScraperFollowers, Bio, Posts and Reels
Instagram Reels ScraperReels, Plays, Likes and Comments
YouTube Channel ScraperVideos, Shorts, Subscribers and About
YouTube Comments ScraperComments, Replies and Likes
YouTube ScraperVideos, Shorts, Channels and Comments
YouTube Shorts ScraperShorts, Views, Likes and Search
YouTube Transcript ScraperSubtitles, Captions and SRT
Facebook Ads Library ScraperMeta Ad Library and Spend
Facebook Groups ScraperPublic Group Posts and Reactions
Facebook Posts ScraperPages, Profiles and Timelines
Facebook Pages ScraperProfiles, Contact Info and Reviews
X (Twitter) Profile ScraperFollowers, Bio and Tweets
X (Twitter) Tweet ScraperLatest Posts by Profile
Threads ScraperPosts, Profiles, Replies and Search
Reddit ScraperPosts, Comments, Subreddits, Users and Search
Quora ScraperAnswers, Questions, Profiles and Topic Search
LinkedIn Jobs ScraperJob Listings, Salaries and Companies
Google News ScraperHeadlines, Articles and Search
Google Ads Transparency ScraperAd Creatives and Advertisers
Telegram Channel ScraperPosts, Views and Media