Skip to content

LinkedIn Ad Library Scraper

Try for free

Scrape the public LinkedIn Ad Library by company, keyword, payer or URL. Get ad copy, creatives, CTA, payer, run dates, impressions, country split and targeting. No login.

📢 LinkedIn Ad Library Scraper

Turn the public LinkedIn Ad Library into clean, structured rows. Search by company, keyword or payer (or paste Ad Library URLs) and get the full ad copy, headline, call to action, destination URL, creatives, run dates, impression ranges, country split and targeting for every ad. No LinkedIn account, no cookies, pay only for the ads you save.

✨ Why use LinkedIn Ad Library Scraper?

  • 🔓 No login — reads the public Ad Library only; your LinkedIn account is never involved.
  • 🧾 Full ad records — copy, headline, CTA, landing page, payer, run dates, impressions, per-country reach and targeting from each ad's detail page.
  • 🎞️ Every format — single image, video, carousel and multi-image, document, text, event, message (InMail), follow-company, article, spotlight and jobs ads, with media URLs.
  • 🔎 All Ad Library filters — countries, date ranges or custom dates, impression ranges and targeting categories, plus a format filter applied before any detail page is opened.
  • 🧮 Batch-friendly — many companies, keywords and payers in one run, per-search caps, and ads de-duplicated across searches so you never pay twice for the same ad.
  • 💸 Simple pricing — one flat price per saved ad.

🎯 Use cases

  • 🕵️ Competitor ad monitoring — see which creatives, offers and CTAs a competitor is running on LinkedIn right now and how long they keep them live.
  • 📈 B2B marketing research — compare messaging, formats and impression ranges across an industry or a keyword.
  • 🧲 Lead generation — find companies actively advertising on LinkedIn (and who pays for their ads) as warm prospects for agencies and SaaS sales teams.
  • 🌍 Market entry research — check which advertisers target a country and how their reach splits across countries.
  • 🛡️ Compliance and brand safety — track ads that mention your brand or run under a given payer.

🚀 How to use

  1. Add one or more Companies / advertisers, Keywords or Payers, or paste Ad Library URLs (search pages or single ads).
  2. Optionally narrow it down with Countries, Date range, Impressions and Targeting filters, or keep only some Ad formats.
  3. Set Maximum ads (and Max ads per search when you batch many searches).
  4. Click Start and download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
companiesAdvertiser names, one search each (e.g. HubSpot).
keywordsWords or phrases in ad copy, one search each.
payersPaying entities, one search each.
startUrlsAd Library search URLs or single ad URLs (/ad-library/detail/<id>).
maxItemsTotal ads to save across all searches (default 20).
countries2-letter country codes; empty means worldwide.
dateOption / startDate / endDatePreset range or custom dates (the Ad Library covers the last 12 months).
impressionsMinValue / impressionsMaxValue (+ units)Impression range filter.
includedTargetingFacetCategories / excludedTargetingFacetCategoriesTargeting categories the ad must include or exclude.
adTypesFormats to keep (skipped ads are never charged).
scrapeAdDetailsRead each ad's detail page (default on). Off gives faster preview-only rows.
maxItemsPerSearchCap per search or URL.
searchesIndependent searches, each with its own filters.
{
  "companies": ["HubSpot"],
  "keywords": ["cybersecurity"],
  "countries": ["US", "GB"],
  "dateOption": "last-30-days",
  "maxItems": 50,
  "maxItemsPerSearch": 25
}

📤 Output

FieldDescription
adId, adLibraryUrlAd id and its public Ad Library page
format, formatLabelNormalized format (VIDEO, CAROUSEL, ...) and LinkedIn's label
advertiserName, advertiserUrl, advertiserLogoWho ran the ad
paidByEntity that paid for the ad
headline, body, ctas, clickUrlAd copy, call to action and destination
imageUrl, imageUrls, videoUrl, carouselCards, document, eventCreative media and format details
firstShownAt, lastShownAt, daysRunning, adStatusRun dates, when LinkedIn shows them
totalImpressionsRaw, totalImpressionsMin, totalImpressionsMaxImpression range
impressionsByCountryShare of impressions per country
targeting, targetingParametersTargeted segments and which parameters were used or excluded
b2bIntentScore, b2bIntentSignalsA simple 0–100 score of how B2B-oriented the ad looks, with reasons
startUrl, scrapedAtWhere the row came from and when

Example (fictional advertiser, real shape):

{
  "adId": "1600000001",
  "adLibraryUrl": "https://www.linkedin.com/ad-library/detail/1600000001",
  "type": "AD",
  "format": "VIDEO",
  "formatLabel": "Video Ad",
  "creativeType": "SPONSORED_VIDEO",
  "advertiserName": "Northwind Analytics",
  "advertiserUrl": "https://www.linkedin.com/company/00000001",
  "advertiserLogo": "https://media.licdn.com/dms/image/v2/.../company-logo_100_100/...",
  "advertiserBio": null,
  "isPromoted": true,
  "paidBy": "Northwind Analytics GmbH",
  "headline": "Your CRM data, finally clean.",
  "body": "Most pipeline reports are built on stale data. See how teams keep their CRM up to date automatically.",
  "ctas": ["Learn more"],
  "clickUrl": "https://www.example.com/crm-cleanup?utm_source=linkedin",
  "externalLinksInText": [],
  "imageUrl": "https://media.licdn.com/dms/image/v2/.../videocover-high/...",
  "videoUrl": "https://dms.licdn.com/playlist/vid/v2/.../mp4-720p-30fp-crf28/...",
  "carouselCards": [],
  "document": null,
  "event": null,
  "availabilityRaw": "Ran from Oct 9, 2026 to Oct 14, 2026",
  "firstShownAt": "2026-10-09",
  "lastShownAt": "2026-10-14",
  "daysRunning": 6,
  "adStatus": "ACTIVE",
  "totalImpressionsRaw": "200k-300k",
  "totalImpressionsMin": 200000,
  "totalImpressionsMax": 300000,
  "impressionsByCountry": [
    {"country": "Germany", "percentage": 92, "raw": "92%", "lessThan": false},
    {"country": "Austria", "percentage": 1, "raw": "< 1%", "lessThan": true}
  ],
  "targeting": [
    {"category": "Language", "included": ["German"], "excluded": [], "raw": "Targeting includes German"},
    {"category": "Location", "included": ["Germany"], "excluded": [], "raw": "Targeting includes Germany"}
  ],
  "targetingParameters": [
    {"parameter": "Company", "targeted": true, "excluded": true},
    {"parameter": "Job", "targeted": true, "excluded": false}
  ],
  "b2bIntentScore": 35,
  "b2bIntentSignals": ["Professional targeting: company, job", "B2B copy terms: crm, pipeline"],
  "detailsScraped": true,
  "startUrl": "https://www.linkedin.com/ad-library/search?accountOwner=Northwind+Analytics",
  "scrapedAt": "2026-10-14T18:00:00Z"
}

💰 Pricing

You pay $1.00 per 1,000 ads saved ($0.001 per ad), the same with or without detail pages. 1,000 ads ≈ $1.00 in ad fees. Platform usage (compute and residential proxy traffic) is billed separately at the normal rates and is small for this actor: it reads plain HTML pages with 256 MB of memory.

❓ FAQ

Is it legal? The actor reads only the public LinkedIn Ad Library, which LinkedIn publishes for ad transparency. You are responsible for how you use the data, including any personal data in ads run by individuals.

Do I need a LinkedIn account or proxy? No account and no cookies. Residential exits are selected by default because LinkedIn refuses most datacenter IPs; the traffic is small (pages are compressed, well under 50 KB per ad).

How many ads can I get? As many as the Ad Library lists for your searches, within the last 12 months. Each search pages through LinkedIn's results until it runs out or reaches your limits.

Why are run dates, impressions or targeting empty for some ads? LinkedIn shows those details only for some ads (mainly ads shown in the EU). When the Ad Library does not display a value, the field is null or an empty list.

Can I schedule it or use the API? Yes. Save your input as a task, schedule it, and read the dataset through the API or integrations.

⚠️ Limits

  • 📅 The LinkedIn Ad Library covers roughly the last 12 months of ads.
  • 🌐 Run dates, impressions and targeting appear only where LinkedIn publishes them.
  • 🔗 Destination URLs are taken from the ad preview; message ads and some formats only show button labels.
  • 🏢 Employer-brand pages that LinkedIn sometimes mixes into searches are not returned.
  • 🎬 Media URLs are signed by LinkedIn and expire after a while; download them soon if you need copies.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.