LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

from $3.00 / 1,000 ad scrapeds

Go to Apify Store
LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper

Scrape LinkedIn's public Ad Library: competitor ads by company or keyword — ad copy, headline, format, creative image/video URLs, run dates, impressions and country targeting. Supports bulk company lists for B2B competitor ad monitoring. No login required.

Pricing

from $3.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

Gal Gilboa

Gal Gilboa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

LinkedIn Ad Library Scraper — Competitor Ads, Creatives & Targeting

Extract structured data from the public LinkedIn Ad Library (linkedin.com/ad-library): every ad a company is running on LinkedIn — ad copy, headline, format, creative image/video URLs, run dates, impressions, country breakdown and targeting. No LinkedIn login, no cookies, public pages only.

Built for B2B marketers, demand-gen teams, and agencies doing competitor ad research: see your competitors' LinkedIn ads, which creatives they run, how long each ad has been live, and which countries they target.

Why this Actor?

  • Bulk company lists — monitor 1 or 100 competitors in a single run (one query per company). Most LinkedIn ads scrapers only handle one company at a time.
  • Creative URLs extracted — direct links to the ad's image/video files, ready for a swipe file or creative analysis.
  • Date info — first/last impression dates per ad, so you can spot long-running (i.e. winning) ads and set up change monitoring on a schedule.
  • Keyword mode — search all LinkedIn ads by topic (e.g. crm) to map a whole category.

What data does it return?

One dataset item per ad:

  • Advertiser name, LinkedIn company URL, logo URL, "Paid by" entity
  • Ad copy and headline
  • Ad format (single_image, video, carousel, document, text)
  • Creative URLs — image URLs and/or video URL
  • Landing page URL and CTA text
  • First/last impression dates ("Ran from ... to ...") when LinkedIn shows them
  • Total impressions range and impressions per country
  • Targeting facets shown by LinkedIn (language, locations, company size, ...)
  • Ad Library detail URL + which query found the ad

Sample output

{
"type": "ad",
"adId": "9001111",
"adDetailUrl": "https://www.linkedin.com/ad-library/detail/9001111",
"advertiserName": "HubSpot",
"advertiserUrl": "https://www.linkedin.com/company/hubspot",
"paidBy": "HubSpot, Inc.",
"headline": "The CRM your whole team will actually use",
"adCopy": "Stop juggling spreadsheets. HubSpot's free CRM gives your team one place to track every deal, contact, and conversation.",
"ctaText": "Learn more",
"adFormat": "single_image",
"imageUrls": ["https://media.licdn.com/dms/image/v2/sponsored-creative-111.jpg"],
"videoUrl": null,
"landingPageUrl": "https://www.hubspot.com/crm?utm_source=linkedin",
"firstImpressionAt": "Jan 5, 2026",
"lastImpressionAt": "Jun 30, 2026",
"totalImpressions": "50k-100k",
"impressionsByCountry": [
{ "country": "United States", "percentage": "45%" },
{ "country": "United Kingdom", "percentage": "20%" }
],
"targeting": [
{ "facet": "Language", "value": "English" },
{ "facet": "Location", "value": "United States, United Kingdom, Israel" }
],
"targetedCountries": ["United States", "United Kingdom", "Israel"],
"query": "company \"hubspot\"",
"scrapedAt": "2026-07-11T12:00:00.000Z"
}

Fields the Ad Library doesn't show for a given ad come back as null / [] — the Actor never fails a run over a missing field.

How to use it

InputWhat it does
companiesBulk list of advertisers — company names, LinkedIn company URLs, or numeric LinkedIn company IDs (most reliable; visible as companyIds in the Ad Library URL)
keywordFree-text Ad Library search across all advertisers
maxAdsPerQueryCap per company/keyword query (default 100)
fetchAdDetailsOpen each ad's detail page for dates, impressions, targeting and full creatives (default on)
proxyConfigurationUse Apify RESIDENTIAL proxy — LinkedIn blocks most datacenter traffic

Use cases

  • Competitor ad monitoring — schedule a weekly run over your competitor list and diff new/retired ads; long-running ads are the ones that work.
  • Creative swipe file — pull creative URLs + copy for every ad in your category before briefing your next campaign.
  • B2B messaging research — compare headlines and hooks across a keyword (e.g. every "crm" ad on LinkedIn).
  • Geo strategy — see which countries competitors put impressions into and what they target.
  • Agency reporting — attach a client-vs-competitor LinkedIn ads snapshot to monthly reports via the API.

Pricing (pay per event)

EventPriceMeaning
ad-scraped$0.003One ad record in the dataset

Example: monitoring 20 competitors × 50 ads each = 1,000 ads = $3.00 per run. The Actor respects your maximum cost per run and stops cleanly when the limit is reached.

Fair use & limitations

  • Only public, logged-out Ad Library pages are visited — the same transparency data LinkedIn shows any visitor. No login, no member data, low concurrency.
  • LinkedIn shows impressions/targeting only for some ads (mainly EU-served ones); other ads return the creative + copy without those panels.
  • LinkedIn actively rate-limits automated traffic. Residential proxy is strongly recommended; blocked responses are retried automatically on fresh sessions.

Integrations

Standard Apify platform features apply: export to JSON/CSV/Excel, API access, webhooks, and scheduled runs for continuous competitor monitoring.

Development

npm install
npm test # parses the saved fixtures, 40 assertions
apify run # local run (uses ./storage)