LinkedIn Ads Library Scraper - Ad Creatives & Advertisers avatar

LinkedIn Ads Library Scraper - Ad Creatives & Advertisers

Pricing

$5.00 / 1,000 ad scrapeds

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

LinkedIn Ads Library Scraper - Ad Creatives & Advertisers

Search the LinkedIn Ads Library by advertiser, payer or keyword and export every ad as a row: ad copy, headline, ad format, images, advertiser logo and a link to the ad. Filter by country, date and impressions. For B2B marketers and competitor research.

Pricing

$5.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

9

Bookmarked

224

Total users

93

Monthly active users

18 hours ago

Last modified

Share

LinkedIn Ads Library Scraper: Ad Creatives and Advertisers

Search the LinkedIn Ads Library for advertiser creatives, ad copy, headlines, images and detail links, and export the results for competitor research. This Actor returns structured records in your Apify dataset and lets you narrow the search using the same filters as LinkedIn's public Ad Library.

Use it to compare competitor messaging, collect creative examples, follow an advertiser over time or prepare a B2B advertising research dataset. You can run the Actor from the input form or send the same fields as JSON through the Apify API. No LinkedIn account is needed to collect these publicly displayed results.

Input

Start with the advertiser name. The following input was used to collect 96 HubSpot advertisements in a recorded run:

{"search":"hubspot","max_ads":96}

search is required and accepts a company or advertiser name. Leading and trailing spaces are removed. max_ads defaults to 96 and accepts values from 1 to 1000. It limits the number of delivered advertisements, rather than the total number LinkedIn says matches your search.

FieldDefaultMeaning
payerEmptySearch for the party paying for the advertisements.
keywordEmptySearch for a word or phrase in the ad copy.
countryEmptyTwo-letter country filter; empty selects all countries.
date_rangeEmptylast-30-days, current-month, current-year, or last-year.
sortNEWESTNEWEST or OLDEST.
only_totalfalseReturn the matching count instead of individual ads.
impressions_minUnsetMinimum impression value.
impressions_maxUnsetMaximum impression value.
impressions_min_unitthousandthousand or million.
impressions_max_unitthousandthousand or million.
targeting_included[]Require the selected targeting categories.
targeting_excluded[]Exclude the selected targeting categories.

Targeting categories are LANGUAGE, LOCATION, AUDIENCE, DEMOGRAPHIC, COMPANY, EDUCATION, JOB_EXPERIENCE and INTEREST. An impression value travels together with its unit: a minimum of 1 and unit thousand means 1000 impressions. Combining several filters can produce a small result set or no matches. Those results reflect the chosen filters; they do not imply that the advertiser has no other campaigns.

The optional secret field proxy_url retains support for an HTTP or HTTPS customer proxy with a DNS hostname. Leave it blank for the default configuration. Its value is not included in output rows or error messages.

LinkedIn Ads Library output

Each ordinary dataset row represents one advertisement. The original fields include ad_id, deeplink, advertiser_name, ad_type, creative_type, body_text, query, country, date_range, sort, source_url, and pages_fetched. Where LinkedIn exposes them, rows also contain headline, images, advertiser_logo, person_name, person_title and total_ads_in_search. Fields absent from the source are omitted.

This is an excerpt of a real HubSpot row collected on 5 October 2026:

{
"ad_id": "1566665103",
"advertiser_name": "HubSpot",
"ad_type": "Single Image Ad",
"creative_type": "SPONSORED_STATUS_UPDATE",
"headline": "CRM slowing you down?",
"body_text": "Outgrowing your CRM? See how scaling teams unified their data and automated more with AI.",
"deeplink": "https://www.linkedin.com/ad-library/detail/1566665103",
"pages_fetched": 4,
"total_ads_in_search": 2533
}

Additional common data fields include source, platform, creative_id and fetched_at; available formats, copy and images also have the common fields format, text and image_url. Existing field names remain available.

LinkedIn may truncate the displayed copy. The Actor preserves that displayed text rather than claiming to recover the full advertisement. Image URLs point to the source media and can expire. Detail links provide a way to inspect an individual ad in LinkedIn's public library.

Download your dataset as JSON, CSV or Excel, or retrieve it through the Apify API. The key-value-store summary records item and error counts. On an empty or unsuccessful search, the errors record explains what happened. An OUTPUT record additionally describes the run status and any partial collection.

Pricing

The price is $0.005 per delivered advertisement, billed through the existing scraped event. There is no Actor start fee. A default run delivering 96 ads therefore charges $0.48 for those ads. Empty results incur no ad charge.

Count-only runs are free of per-ad charges. Set only_total: true to receive one row with result_type: "count", total_ads, search metadata and a status note. That row is not an advertisement. Free-plan users receive up to ten results per run. Apify's applicable platform usage charges are separate.

Use cases

  • Competitor ad research. See which messages, offers and formats a rival company is running on LinkedIn, and how many ads the library lists for it.
  • A swipe file of LinkedIn ad examples. Collect real examples of LinkedIn ads per industry or format (single image, video, document, carousel) with their copy and headline, instead of saving screenshots one by one.
  • Agency pitches and audits. Show a prospect what their competitors advertise, with links to each ad as evidence.
  • Monitoring over time. Schedule the same search and compare ad identifiers to see which creatives are new.

LinkedIn Ad Library website versus this scraper

LinkedIn's own Ad Library website is free and works well for looking at a handful of ads. It shows one advertiser search at a time in a browser, without an export button, so collecting dozens or hundreds of ads means scrolling, opening and copying by hand. Browser extensions can save the page you are looking at, but they still depend on you clicking through each result page.

This Actor runs the same search for you and walks the result pages automatically. Every ad becomes one row with the same field names on every run, which you can download as JSON, CSV or Excel, send to a spreadsheet or read through the Apify API. Because the input is plain JSON, a search can be repeated on a schedule or started from your own code. Several other LinkedIn Ads Library scrapers in the Apify Store start from a pasted search URL; this one takes the advertiser name plus LinkedIn's filters as separate fields, and offers a count-only mode without per-ad charges to size a search before collecting it.

Research workflows

For competitor research, keep the advertiser and country constant between runs and compare ad_id values to find newly observed creatives. Use OLDEST when you want the oldest matching records first. A date window makes comparisons more focused, while a keyword can narrow the copy to a particular product or message. Store the search metadata together with your analysis so records from different filters are not mistaken for the same sample.

The library's matching count can exceed the requested delivery limit. Count first when deciding how much data to collect. An impression-range filter is a filter on the source's search, not an estimate of spend: this Actor does not infer advertising budgets, conversions or campaign performance.

FAQ

Does this return only active advertisements?

LinkedIn publishes no running-versus-stopped filter for this search. Results and counts cover the selected date window, whether ads are running or stopped. Use a date range for recency, and avoid treating every returned ad as active.

Does the Actor collect more than the first page?

Yes. It follows LinkedIn's result pages automatically until the requested limit, the end of the search or an interruption. Larger requests can return partial results with a warning. Ads already collected remain available in the dataset.

Can I get just the number of matching ads?

Yes. Use only_total: true. A recorded Adobe search returned total_ads: 16756; the number can change as LinkedIn's library changes. The Actor reads the published count rather than walking every result page.

What happens when nothing matches?

The run succeeds with an empty dataset and an explanatory error record. No advertisement event is charged. Invalid inputs and source access failures are also reported with structured error messages.

Is there an official LinkedIn Ad Library API?

LinkedIn offers APIs for advertisers to manage their own campaigns, but those require an approved developer application and only cover your own account. This Actor works as a practical LinkedIn Ad Library API for public ads from any advertiser: send a JSON input through the Apify API and receive the ads as JSON, without a LinkedIn developer application.

Can I schedule repeated collection?

Yes. Use Apify scheduling and retrieve each dataset through the console or API. Keep your inputs consistent when comparing runs, and use ad identifiers to avoid counting the same creative twice across separate datasets.