LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

from $1.50 / 1,000 ads

Go to Apify Store
LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper

Scrape ads from the public LinkedIn Ad Library by advertiser, keyword, country and date: ad text, media, payer, run dates, impressions and targeting. No login or cookies. Pay only for ads returned.

Pricing

from $1.50 / 1,000 ads

Rating

0.0

(0)

Developer

Muhammad Noman Riaz

Muhammad Noman Riaz

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

What does LinkedIn Ad Library Scraper do?

LinkedIn Ad Library Scraper collects ads from the public LinkedIn Ad Library, the transparency site where LinkedIn lists ads that ran on its platform. Search by advertiser name, by keyword in the ad text, or paste Ad Library search and ad URLs. You can limit searches to countries and to a date range. For every ad you get the advertiser and its LinkedIn page, who paid for the ad, the ad format, the full ad text, headline, call to action, landing URL and image, video or carousel media URLs. When LinkedIn shows them, you also get the run dates, the total impressions range, the share of impressions per country and the targeting the advertiser picked (language, location and which audience parameters were used). It works without a LinkedIn account, cookies or login. Use it for competitor ad research, creative inspiration, B2B market research and lead lists of companies that advertise on LinkedIn.

How to use it

  1. Add one or more advertiser names (for example HubSpot), keywords, or Ad Library URLs.
  2. Optionally pick countries and a date range.
  3. Set Max ads per search and start the run.
  4. Download the ads as JSON, CSV, Excel or HTML, or read them through the Apify API.

Input

FieldTypeDefaultDescription
advertisersarray of stringsCompany or advertiser names. Each name is one search.
searchKeywordsarray of stringsKeywords in the ad text. Each keyword is one search.
startUrlsarray of URLsAd Library search URLs (https://www.linkedin.com/ad-library/search?...) and ad URLs (https://www.linkedin.com/ad-library/detail/<id>). Other URLs are ignored.
countriesarray of stringsallTwo letter ISO codes such as DE, FR, US. Applies to advertiser and keyword searches.
dateRangestringallall, last-30-days, current-month, current-year, last-year or custom-date-range.
startDate, endDatestringYYYY-MM-DD, only used with custom-date-range.
maxAdsPerSearchinteger50Maximum ads per advertiser, keyword or search URL.
includeDetailsbooleantrueOpen each ad page for payer, CTA, landing URL, run dates, impressions, countries and targeting. Charged extra only when details load (see Pricing). Off returns only the search card fields.
maxConcurrencyinteger5Ad pages loaded at the same time.
maxRequestRetriesinteger6Attempts per page, each on a new proxy IP.
proxyobjectResidentialProxy settings. Residential proxies are recommended.

Input example

{
"advertisers": ["HubSpot"],
"searchKeywords": ["crm"],
"countries": ["DE"],
"dateRange": "last-30-days",
"maxAdsPerSearch": 30,
"includeDetails": true,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output

One item per ad. This is a real item from a test run (advertiser HubSpot):

{
"adId": "1644380406",
"adUrl": "https://www.linkedin.com/ad-library/detail/1644380406",
"advertiserName": "HubSpot",
"advertiserUrl": "https://www.linkedin.com/company/68529",
"paidBy": "HubSpot, Inc.",
"format": "video",
"creativeType": "SPONSORED_VIDEO",
"adText": "Your CRM data is more powerful than you think. Put it to work on Google and reach the people most likely to convert.",
"headline": "Google Ads in HubSpot",
"cta": "Learn more",
"landingUrl": null,
"media": [
{ "type": "video", "url": "https://dms.licdn.com/playlist/vid/v2/D5610AQH7YyKZCNgEGQ/progressive-servable-video/B56aE8kiTPHQAY-/0/1792017574172?e=2147483647&v=beta&t=5Sw4xFkvU8O1kHuPW9VxGFAkYcfQ-I41IRYmbbH_yfI" },
{ "type": "thumbnail", "url": "https://media.licdn.com/dms/image/v2/D5610AQH7YyKZCNgEGQ/videocover-high/B56aE8kiTPHQBI-/0/1792017574927?e=2147483647&v=beta&t=0_Sd0PO1AZLKwraUaBnVM4czcVHCUNybneAEFBD84DM" }
],
"firstShown": null,
"lastShown": null,
"impressionsRange": null,
"impressionsMin": null,
"impressionsMax": null,
"countries": [],
"targeting": null,
"searchQuery": "https://www.linkedin.com/ad-library/search?accountOwner=HubSpot",
"scrapedAt": "2026-10-17T16:56:02.267Z"
}

When LinkedIn publishes run dates, impressions and targeting for an ad, the same item carries them. These fields come from another ad in the same run:

{
"firstShown": "2026-10-15",
"lastShown": "2026-10-17",
"impressionsRange": "1k-5k",
"impressionsMin": 1000,
"impressionsMax": 5000,
"targeting": {
"language": { "includes": "English" },
"location": { "includes": "DACH" },
"parameters": [
{ "parameter": "Audience", "targeted": false, "excluded": false },
{ "parameter": "Company", "targeted": true, "excluded": true },
{ "parameter": "Job", "targeted": true, "excluded": true }
]
}
}

Country shares look like { "country": "Germany", "impressionsShare": "100%", "impressionsSharePercent": 100 }. A share shown as < 1% keeps that text and has impressionsSharePercent: null.

Ads that could not be loaded are listed in the FAILED_ITEMS record of the run's key-value store, with the reason.

Pricing

Two parts, so you only pay for what you get:

WhatPrice per 1,000 ads
Every ad returned (search data: advertiser, format, text, headline, media)$1.50
Extra, only for ads whose details loaded (payer, CTA, landing URL, run dates, impressions, countries, targeting)$3.50

A fully detailed ad costs $5 per 1,000. LinkedIn blocks some detail pages; those ads are still returned with detailsLoaded: false and cost only $1.50 per 1,000. Ads that could not be loaded at all are not charged.

FAQ

Do I need a LinkedIn account?

No. The LinkedIn Ad Library is public and the scraper never logs in or uses cookies. If LinkedIn answers with a login wall or a challenge, the scraper retries on a new IP and never tries to get past it.

Which countries are covered?

Every country in the Ad Library country filter. Ads can be searched worldwide or limited with the countries input. LinkedIn shows run dates, impressions, country shares and targeting for some ads only. In our tests they appeared on ads served in Europe, while ads without them still came with advertiser, payer, format, text and media.

How far back does it go?

As far as the Ad Library goes. The custom date filter on the site accepts dates up to one year back. Searches without a date range return what LinkedIn lists, newest first.

Can I see ad spend?

No. LinkedIn does not publish spend in the Ad Library. You get the total impressions range and the share of impressions per country where LinkedIn shows them.

Known limits

  • Run dates, impressions, country shares and targeting are only returned when LinkedIn shows them on the ad page.
  • landingUrl is only filled when the ad page links to an outside site. Many single image and video ads in the library have no clickable link.
  • Location targeting is returned as LinkedIn's text (for example "Richmond, VA, McLean, VA, Berlin"), not split into a list, because place names contain commas.
  • Ads with several versions return the first version shown.
  • Document, event, spotlight, message and conversation ads have not been checked against live pages yet. Their common fields (advertiser, payer, format, text, run data) use the same page layout, but media may be incomplete.
  • With includeDetails off, only advertiser name, format, shortened text, headline and media from the search card are returned.
  • LinkedIn rate-limits fast traffic. Keep residential proxies on for runs beyond a few dozen ads.