LinkedIn Ad Library Scraper avatar

LinkedIn Ad Library Scraper

Pricing

from $0.90 / 1,000 ad with details

Go to Apify Store
LinkedIn Ad Library Scraper

LinkedIn Ad Library Scraper

Scrape the public LinkedIn Ad Library by company, keyword, country and date: ad copy, images and videos, CTA, advertiser, targeting, impression ranges and run dates. No LinkedIn login or cookies.

Pricing

from $0.90 / 1,000 ad with details

Rating

0.0

(0)

Developer

Quelli di Carne Genuina

Quelli di Carne Genuina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract ads from the public LinkedIn Ad Library by company, keyword, payer or URL. Get the full ad copy, headline, call-to-action, landing page with UTM parameters, images, videos, documents, total impressions, impressions by country, targeting (language, location, audience, job, company…) and the dates each ad ran. No LinkedIn account or cookies needed.

Independent tool, not affiliated with or endorsed by LinkedIn Corporation. It reads only what LinkedIn publishes in its public Ad Library.

What you get

One row per ad, with copy, landing page and reach (real result, shortened):

{
"adId": "1558746953",
"format": "SINGLE_IMAGE",
"advertiserName": "IXTENSA 🧡 HubSpot",
"paidBy": "IXTENSA GmbH & Co. KG",
"headline": "Live-Webinar am 14.10.2026 um 11 Uhr",
"ctas": ["Sign Up"],
"clickUrl": "https://lp.ixtensa.de/webinar-hubspot-probleme?utm_campaign=Webinar+HubSpot+Probleme&utm_source=linkedin&utm_medium=paid",
"availability": { "start": "2026-09-24", "end": "2026-10-10" },
"impressions": "5k-10k",
"impressionsPerCountry": [{ "country": "Germany", "impressions": "100%", "percent": 100 }],
"targeting": { "language": "English", "location": "Germany" }
}

Try it in 1 click. Press Start with the prefilled input (HubSpot ads in the US, 20 ads with full details). LinkedIn detail pages are slower than most sources: in our tests today 50 detailed ads took 2–3 minutes at 512 MB, so expect roughly a minute for the 20-ad example (estimate, not timed separately); it costs at most $0.064 on the Apify Free plan (less on paid plans). For a faster first look turn on skipDetails.

Price: per 1,000 ads with full details, from $3.20 on the Apify Free plan down to $0.90 on Gold and above (list-only ads $1.60 down to $0.44), no start fee.

Why this LinkedIn ads scraper

  • Cheaper than silva95gustavo's LinkedIn Ad Library actor on every Apify plan: 20% less on Free, Bronze and Silver, 10% less on Gold and above (detailed ads; see the price table below), no start fee, and you pay only for ads delivered.
  • Drop-in compatible: startUrls, resultsLimit, skipDetails and concurrency work like in other popular LinkedIn Ad Library actors, and the main output fields keep the same names (adId, advertiserName, body, headline, ctas, clickUrl, impressions, impressionsPerCountry, targeting, availability…).
  • No URL building needed: search by companies, keywords, payers or companyIds with countries and date filters.
  • Richer data: numeric impressionsMin / impressionsMax, percent per country, targetingParameters (what was targeted or excluded), landingDomain, parsed utm tags, all images, highest-quality video URL, document title and pages, message-ad sender, ISO dates.
  • Monitoring mode: onlyNewAds returns (and bills) only ads you have not seen before. Schedule it daily for competitor alerts.
  • Reliable by design: LinkedIn blocks many proxy IPs; the actor keeps healthy sessions and rotates blocked ones automatically, and if a detail page cannot be loaded you still get the ad from the result list instead of losing it.

Use cases

  • Competitor research: every ad a competitor runs on LinkedIn, with copy, offer, CTA and landing page.
  • B2B messaging and positioning analysis: collect ad copy by keyword (e.g. "cybersecurity", "CRM") across an industry.
  • Media buying intelligence: see which agency pays for a brand's ads (paidBy) and how much reach each ad got.
  • Targeting insights: which audiences, jobs, companies and countries an advertiser chooses.
  • Swipe files and creative libraries: images, videos and documents of top-performing B2B ads.
  • Lead generation: find companies actively spending on LinkedIn ads in a market.

Input

{
"companies": ["hubspot", "salesforce"],
"keywords": ["cybersecurity"],
"countries": ["US", "DE"],
"dateOption": "last-30-days",
"resultsLimit": 100,
"skipDetails": false,
"onlyNewAds": false
}
FieldWhat it does
startUrlsAd Library search URLs (all filters kept), single ad URLs /ad-library/detail/<id>, or company pages linkedin.com/company/<name or id>.
companiesAdvertiser names, one search each.
keywordsWords in the ad copy, one search each.
payersEntity that paid for the ads (often an agency).
companyIdsNumeric LinkedIn company IDs for an exact advertiser.
countriesTwo-letter country codes; empty = all.
dateOption / startDate / endDateLast 30 days, current month, current year, last year, or a custom range.
resultsLimitMax ads per search; empty = all.
skipDetailsList data only: faster and cheaper.
onlyNewAds / monitorStoreNameMonitoring memory between runs.

Output

{
"adId": "1558746953",
"adUrl": "https://www.linkedin.com/ad-library/detail/1558746953",
"format": "SINGLE_IMAGE",
"creativeType": "SPONSORED_STATUS_UPDATE",
"advertiserName": "IXTENSA 🧡 HubSpot",
"advertiserUrl": "https://www.linkedin.com/company/7267658",
"paidBy": "IXTENSA GmbH & Co. KG",
"headline": "Live-Webinar am 14.10.2026 um 11 Uhr",
"body": "Viele HubSpot-Kunden kämpfen mit denselben Problemen…",
"ctas": ["Sign Up"],
"clickUrl": "https://lp.ixtensa.de/webinar-hubspot-probleme?utm_campaign=Webinar+HubSpot+Probleme&utm_source=linkedin&utm_medium=paid",
"landingDomain": "lp.ixtensa.de",
"utm": { "utm_campaign": "Webinar HubSpot Probleme", "utm_source": "linkedin", "utm_medium": "paid" },
"imageUrl": "https://media.licdn.com/dms/image/v2/…",
"videoUrl": null,
"document": null,
"availability": { "start": "2026-09-24", "end": "2026-10-10" },
"impressions": "5k-10k",
"impressionsMin": 5000,
"impressionsMax": 10000,
"impressionsPerCountry": [{ "country": "Germany", "impressions": "100%", "percent": 100 }],
"targeting": { "language": "English", "location": "Germany" },
"targetingParameters": { "Company": { "targeted": true, "excluded": false }, "Job": { "targeted": true, "excluded": false } },
"startUrl": "https://www.linkedin.com/ad-library/search?accountOwner=hubspot&countries=DE"
}

Impressions, countries, targeting and run dates are published by LinkedIn for ads shown in the European Union; for other ads these fields are empty. With skipDetails each item has adId, adUrl, format, advertiserName, a shortened body, imageUrl and detailsIncluded: false.

Pricing

Pay per event, no start fee. The price depends on your Apify plan:

EventFreeBronzeSilverGold, Platinum, Diamond
Ad with details$0.0032$0.0024$0.0012$0.0009
Ad from the result list (skipDetails, or when a detail page is unavailable)$0.0016$0.00144$0.0008$0.00045

Example: 1,000 fully detailed ads cost $3.20 on Free, $0.90 on Gold. Set a maximum total charge on the run to cap spending; the actor stops cleanly when it is reached.

Migrating from silva95gustavo/linkedin-ad-library-scraper

The four input fields of silva95gustavo's actor exist here with the same names, so an existing input usually works after changing the actor ID to lagenuina_agency/linkedin-ad-library-scraper.

silva95gustavo inputThis actorNotes
startUrlsstartUrlsSame: Ad Library search URLs, and company pages (linkedin.com/company/...). Single ad URLs (/ad-library/detail/<id>) also work here.
resultsLimitresultsLimitSame: max ads per input; empty = all.
skipDetailsskipDetailsSame: list data only, billed at the lower list price.
concurrencyconcurrencySame idea; default 5 here (max 20) instead of a value picked from memory.
(not available)companies, keywords, payers, companyIds, countries, dateOption, startDate, endDateExtra: search without building URLs.
(not available)onlyNewAds, monitorStoreNameExtra: monitoring mode.
(not set in input)proxyConfigurationResidential Apify Proxy by default.

Output: all fields in silva95gustavo's README example keep their names (adId, advertiserLogo, advertiserName, advertiserUrl, availability.start/end, body, clickUrl, ctas, format, headline, imageUrl, impressions, impressionsPerCountry[].country/impressions, paidBy, startUrl, targeting). Added here: adUrl, creativeType, formatLabel, description, landingDomain, utm, imageUrls, videoUrl, videoPosterUrl, document, messageSender, thoughtLeader, variantCount, impressionsMin, impressionsMax, impressionsPerCountry[].percent, targetingParameters.

Price per 1,000 ads (public Apify Store prices, checked on 17 October 2026; both actors price by Apify plan; silva95gustavo also adds a small start fee of $0.00005 per GB of run memory):

Apify plansilva95gustavo, with detailsThis actor, with detailssilva95gustavo, list onlyThis actor, list only
Free$4.00$3.20 (-20%)$2.00$1.60 (-20%)
Bronze$3.00$2.40 (-20%)$1.80$1.44 (-20%)
Silver$1.50$1.20 (-20%)$1.00$0.80 (-20%)
Gold and above$1.00$0.90 (-10%)$0.55$0.44 (-20%)

Speed and completeness: we have not benchmarked the two actors side by side. Run the same input on both and compare your own runs.

Limits / not supported

  • Impressions, impressions by country, targeting and run dates are published by LinkedIn only for ads shown in the EU; for other ads these fields are empty.
  • History is limited to what the Ad Library keeps (about one year).
  • No spend, budget, clicks or CTR: LinkedIn does not publish them.
  • companies and company-page URLs with a name use LinkedIn's advertiser-name search, which can include similarly named advertisers. Use companyIds (or a numeric company URL) for one exact advertiser.
  • countries and the date filters apply to companies, keywords, payers and companyIds; a pasted search URL keeps its own filters.
  • A residential proxy is needed (LinkedIn blocks datacenter IPs). Detail pages make runs slower: about 2–3 minutes per 50 ads at 512 MB in our tests.
  • If a detail page keeps failing, the ad is returned from the result list with detailsIncluded: false and billed at the list price.

Monitoring new LinkedIn ads

  1. Turn on onlyNewAds and give each competitor its own monitorStoreName.
  2. The first run returns all current ads; later runs return and bill only new ones.
  3. Add an Apify Schedule (daily) and a Slack, email or webhook integration.

Use it from AI agents (MCP)

The actor works as a tool in any MCP client (Claude, ChatGPT, Cursor, custom agents) via the Apify MCP server:

{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com/?actors=lagenuina_agency/linkedin-ad-library-scraper" }
}
}

Ask things like "What LinkedIn ads did HubSpot run in Germany this month, and which agency paid for them?" or "Find LinkedIn ads about cybersecurity in France and list their landing pages." The inputs map one-to-one to such questions and results come back as structured JSON.

Integrations and API

Call it from your code with the official Apify clients:

# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lagenuina_agency/linkedin-ad-library-scraper").call(run_input={"startUrls": [{"url": "https://www.linkedin.com/ad-library/search?accountOwner=hubspot&countries=US"}], "resultsLimit": 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
// npm i apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lagenuina_agency/linkedin-ad-library-scraper').call({"startUrls": [{"url": "https://www.linkedin.com/ad-library/search?accountOwner=hubspot&countries=US"}], "resultsLimit": 20});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

No-code: use the Apify app in n8n, Make or Zapier (action "Run Actor", pick lagenuina_agency/linkedin-ad-library-scraper), or the langchain-apify / CrewAI ApifyActorsTool integrations for AI agents. Results can also be pushed to Google Sheets, Slack, webhooks or any S3 bucket via Apify integrations.

More tools from Quelli di Carne Genuina

Ad intelligence

Competitor & SEO research

Travel prices

Retail prices

Content & social data

FAQ

How do I see all LinkedIn ads of a company? Put the company name in companies (or paste its Ad Library or company page URL) and leave resultsLimit empty.

Can I export LinkedIn ads to CSV or Excel? Yes: every run's dataset downloads as CSV, Excel, JSON or XML, or via API.

Is there a LinkedIn Ad Library API? LinkedIn does not offer a public API for the Ad Library. This actor works as one: send company names, keywords or URLs through the Apify API and get JSON back, from Python, JavaScript, n8n, Make, Zapier or MCP.

Does it need my LinkedIn login? No, the Ad Library is public.

Why are impressions empty for some ads? LinkedIn publishes impressions, countries and targeting only for ads delivered in the EU.

How far back does it go? As far as LinkedIn's Ad Library: about one year.

Is it legal to scrape the LinkedIn Ad Library? It is public transparency data. You are responsible for how you use it; avoid processing personal data without a legal basis and check local laws.

Something missing or broken? Open an issue on the Issues tab, we reply within 24 hours.