LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

from $1.00 / 1,000 ad scrapeds

Go to Apify Store
LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper

Scrape the LinkedIn Ad Library without login: ad copy, creatives, payer, run dates, EU impressions and targeting as structured JSON. Search by advertiser, keyword, country or date. Pure HTTP, fast and cheap.

Pricing

from $1.00 / 1,000 ad scrapeds

Rating

5.0

(1)

Developer

Alex Morain

Alex Morain

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

What does LinkedIn Ad Library Scraper do?

LinkedIn Ad Library Scraper extracts ads from the public LinkedIn Ad Library: ad copy, creatives, advertiser, payer, and, for ads served in the EU, run dates, impressions and targeting criteria parsed into structured fields. It works as a LinkedIn Ad Library API alternative: no login, no cookies, no browser automation.

It runs over plain HTTP, which makes it fast and cheap. It does not scrape private LinkedIn data, member profiles, or anything behind a login. It only reads what LinkedIn publishes in its ad transparency library.

Why use LinkedIn Ad Library Scraper?

  • Competitive ad intelligence: see every ad a competitor runs, with copy, creative, format, and how long it ran.
  • EU transparency data as structured fields: most tools show you the ad; this one also parses the DSA transparency block, impressions range (total and per country) and targeting criteria (language, location, audience, company, job), into clean JSON.
  • Keyword search across the whole library: find every advertiser using a phrase, not just ads of one company you already know.
  • Accurate date filtering: LinkedIn silently ignores custom date ranges unless a specific parameter accompanies them. Scrapers that pass only the dates return the full corpus while claiming it is filtered. This one always sends the complete, verified parameter set. We measured it: an advertiser with 349 ads shows 21 for May 2026 when the filter is correctly applied, and 349 when it is not.
  • Complete pagination: the library's last page omits its pagination marker. Parsers that require it stop early or crash. This one treats the absence as the end of the corpus and gets the full result set: 347 unique ads out of 349 announced in our reference measurement.
  • Runs on the Apify platform: scheduling, REST API, webhooks, integrations, proxy rotation, and monitoring included.

What data can LinkedIn Ad Library Scraper extract?

FieldTypeDescription
advertiser, advertiser_urlstringAdvertising account and its LinkedIn page
payerstringThe "Paid for by" entity
formatstringSingle Image Ad, Video Ad, Carousel Ad, Text Ad...
headline, bodystringSponsored headline and full ad copy
image_urls, video_urlsarrayCreative URLs (logos excluded)
ran_from, ran_tostringFirst and last day the ad ran (EU-served ads)
impressions_min, impressions_maxnumberTotal impressions range, parsed (EU-served ads)
impressions_by_countryarrayImpression share per country (EU-served ads)
targeting_segments, targeting_parametersarray, objectTargeting criteria selected by the advertiser (EU-served ads)
promoted_bystringCompany behind a Thought Leader Ad

How to scrape the LinkedIn Ad Library

  1. Open the Input tab. One advertiser is already filled in, so you can press Start right away and see what comes out.
  2. Replace it with the companies you want to watch. Use the slug from their LinkedIn page URL (linkedin.com/company/nvidia). One search runs per advertiser.
  3. Optionally narrow by countries, date range or payer. LinkedIn applies these server-side, so narrowing makes the run faster and cheaper.
  4. Keep a Max ads per query cap on your first run. A single large advertiser can be running several hundred ads, and you pay per ad returned. Set it to 0 once you know what you are getting.
  5. Turn on Include ad details only for the advertisers you actually analyse: it adds impressions, targeting and full copy, at one extra request and a higher rate per ad.
  6. Press Start, then download the dataset as JSON, CSV or Excel.

Which fields should I fill?

If you want to...Fill inLeave alone
See what a competitor advertisesadvertisers, a maxAdsPerQuery capeverything else
Discover who advertises on a themekeyword aloneadvertisers
Measure EU reach and targetingadvertisers, includeDetails: true, an EU countryeverything else
Track a campaign periodstartDate + endDatedateOption
Reproduce a filter this input lackssearchUrlseverything else

Fill at least one of advertisers, keyword or searchUrls. Everything else is optional.

How much will it cost to scrape the LinkedIn Ad Library?

Pricing is pay-per-event: you pay a fixed price per ad, plus a tiny Actor start fee. Listing ads without details is the cheapest way to monitor volumes; enable details only when you need impressions, targeting, or full copy. A monitoring run that finds nothing new costs a fraction of a cent, which makes scheduled competitive monitoring affordable.

Input

See the input tab for full configuration options. Three things worth knowing:

  • advertisers accepts company names or slugs; each one becomes a separate server-side search.
  • keyword works together with advertisers, or alone across the entire library.
  • startDate/endDate go together and are automatically sent with the parameter LinkedIn requires to actually apply them.

Output

You can download the dataset in various formats such as JSON, CSV, Excel, or HTML. Simplified example:

[
{
"ad_id": "1234567890",
"detail_url": "https://www.linkedin.com/ad-library/detail/1234567890",
"advertiser": "Example Corp",
"payer": "EXAMPLE CORP LTD",
"format": "Video Ad",
"headline": "Grow your pipeline with example insights",
"body": "This is an example ad text presenting a product...",
"image_urls": ["https://media.licdn.com/dms/image/..."],
"ran_from": "Apr 23, 2026",
"ran_to": "Apr 30, 2026",
"impressions_display": "30k-50k",
"impressions_min": 30000,
"impressions_max": 50000,
"impressions_by_country": [{ "country": "France", "share": "100%" }],
"targeting_segments": ["Targeting includes English", "Targeting includes France"],
"has_details": true
}
]

Tips

  • Keep Include ad details off for large volume sweeps; turn it on for the advertisers you actually analyze. The event price differs, so you only pay for depth where you need it.
  • Impressions and targeting exist only for ads served in the EU (Digital Services Act transparency). Ads shown only in the US or elsewhere return these fields as null; that is LinkedIn's data, not a scraper gap.
  • The library serves roughly the last 12 months of ads.
  • Use maxAdsPerQuery to cap costs on advertisers with thousands of ads.

FAQ, disclaimers, and support

Is it legal to scrape the LinkedIn Ad Library? The Ad Library is LinkedIn's public ad transparency tool, published notably to satisfy the EU Digital Services Act. This Actor reads only that public library. Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to be shared publicly. However, you should be aware that your results could contain personal data (e.g., the name of a person behind a Thought Leader Ad). Personal data is protected by the GDPR and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

An advertiser returns zero ads. Check the spelling of the company slug, and remember the library only covers ads from the last 12 months. Some companies advertise under a different account name than their brand.

Impressions are empty. The ad was not served in the EU; LinkedIn only publishes impressions and targeting for EU-served ads.

Found a problem or missing field? Open a ticket in the Issues tab, it is read. For programmatic access, see the API tab.