LinkedIn Ad Library Search Scraper
Pricing
from $6.00 / 1,000 ad records
LinkedIn Ad Library Search Scraper
Search public LinkedIn Ad Library ads by advertiser or keyword, with normalized creatives and EU transparency fields.
Pricing
from $6.00 / 1,000 ad records
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
What is LinkedIn Ad Library Search Scraper?
LinkedIn Ad Library Search Scraper is an Apify Actor for searching public LinkedIn Ad Library ads by advertiser name or creative keyword. It accepts advertiser lists, keyword lists, country filters, date boundaries, pagination controls, optional detail enrichment, provider preference, and response format. Each saved dataset item is one normalized public ad record with creative fields, provenance fields, and eligible EU transparency fields. The Actor is usable through Apify and through Apify MCP for structured ad discovery and downstream automation.
Best fit and connected workflows
This Actor fits workflows that start with a public advertiser name or a creative phrase and end with structured ad records ready for review, enrichment, or handoff.
Good fits include:
- Competitive research on public LinkedIn ads by advertiser name.
- Creative discovery from product or category keywords.
- EU transparency review using run dates, impression ranges, and targeting summary fields.
- AI-agent workflows that need bounded public ad records through Apify MCP.
- Follow-up enrichment with LinkedIn profile data after a public advertiser or ad URL is identified.
A natural workflow connection is:
- Search public ads here by advertiser or keyword.
a bounded number of Review
adId,adUrl,headline,cta, and transparency fields. - Pass the returned public URL or ID into a downstream LinkedIn workflow when you need profile-level or post-level context.
Related Actors:
- Use LinkedIn Profile Scraper & Email Finder 📧 ✅ No Login Required for enrichment after discovery when you have a returned public URL or ID.
- Use LinkedIn Profile Posts Scraper for post-level context after discovery when you have a returned public URL or ID.
Practical scenario
Maya, a marketing analyst, starts with the advertiser name HubSpot and a country filter of US and DE. She sets maxResults to 10 and keeps fetchAdDetails on to retrieve additional public transparency fields when available. The run returns records with headline, adType, cta, adUrl, adRunStart, estimatedImpressions, and targetingSummary. Maya uses the returned adUrl and creative text to compare message themes, then opens the ads that look relevant for a deeper review.
Input fields
| Field | Type | Purpose |
|---|---|---|
advertisers | array of strings | Search by public advertiser display names such as Microsoft or HubSpot. |
keywords | array of strings | Search by creative phrases such as CRM software or data warehouse. |
countries | array of strings | Limit results to ISO alpha-2 country codes reported by the Ad Library. |
startDate | string | Set the beginning of the reported ad run window using YYYY-MM-DD. |
endDate | string | Set the end of the reported ad run window using YYYY-MM-DD. |
maxResults | integer | Cap the number of normalized ad records persisted in the run. |
maxPagesPerSearch | integer | Bound provider pagination for each advertiser or keyword search. |
fetchAdDetails | boolean | Request optional detail enrichment for each saved ad record. |
providerPreference | string | Choose whether the routing options listed in the input schema is tried first. |
responseFormat | string | Choose concise or detailed record shape for saved ads. |
Focused input example
{"advertisers": ["Microsoft", "HubSpot"],"countries": ["US", "DE"],"startDate": "2026-01-01","endDate": "2026-06-30","maxResults": 10,"maxPagesPerSearch": 2,"fetchAdDetails": true,"responseFormat": "detailed"}
Output fields
| Field | Meaning |
|---|---|
adId | Stable public LinkedIn Ad Library identifier. |
adUrl | Public LinkedIn Ad Library detail URL. |
advertiserName | Disclosed advertiser display name, when available. |
advertiserLinkedInUrl | Public company URL, when returned. |
headline | Primary public headline from the ad creative. |
description | Public ad body text from the provider response. |
adType | Reported creative format such as Single Image Ad. |
cta | Public call-to-action label, when available. |
destinationUrl | Public landing-page URL linked from the ad. |
imageUrl | Primary public image URL, when returned. |
videoUrl | Primary public video URL, when returned. |
carouselImageUrls | Bounded carousel image URLs in detailed mode. |
adRunStart | Reported start time for eligible public ads. |
adRunEnd | Reported end time for eligible public ads. |
estimatedImpressions | LinkedIn's disclosed impression range. |
impressionCountries | Bounded country-level impression shares for eligible ads. |
targetingSummary | Bounded public targeting categories for eligible ads. |
searchType | Whether the record came from an advertiser or keyword search. |
searchTerm | The advertiser or keyword that returned the record. |
searchCountries | Country filter sent to the provider. |
sourceProvider | Provider route that returned the search result. |
detailProvider | Provider route that returned optional detail enrichment. |
detailsFetched | Indicates whether optional detail enrichment succeeded. |
scrapedAt | ISO timestamp when the record was persisted. |
Illustrative output record
{"adId": "1174793313","adUrl": "https://www.linkedin.com/ad-library/detail/1174793313","advertiserName": "Microsoft","advertiserLinkedInUrl": "https://www.linkedin.com/company/1035","headline": "Explore Microsoft Fabric","description": "Learn more about data and analytics.","adType": "Single Image Ad","cta": "Learn more","destinationUrl": "https://example.com/","imageUrl": "https://media.licdn.com/dms/image/example","videoUrl": null,"carouselImageUrls": [],"adRunStart": "2026-02-06T00:00:00.000Z","adRunEnd": "2026-02-08T00:00:00.000Z","estimatedImpressions": "5k-10k","impressionCountries": [{"country": "Germany","impressions": "100%"}],"targetingSummary": [{"category": "location","detail": "Targeting includes Germany"}],"searchType": "advertiser","searchTerm": "Microsoft","searchCountries": ["US"],"detailsFetched": true,"scrapedAt": "2026-07-14T17:30:00.000Z"}
How it works
The Actor searches the public LinkedIn Ad Library using provider-backed collection and normalized output. It supports advertiser searches and creative keyword searches. Country filters are passed together to each search. maxPagesPerSearch bounds provider pagination for each query, while maxResults caps how many normalized ad records are saved and billed. If fetchAdDetails is enabled, the Actor can make a second verified provider call per saved ad to enrich public transparency fields. providerPreference selects which configured provider is attempted first, with the other configured provider used after a route interruptions. Output is written to the dataset, and terminal run details are stored in key-value store records.
The live manifest uses provider API keys supplied by the Apify environment:
Pricing
This Actor uses Pay per event plus Apify platform usage. Platform usage is billed separately by Apify, and the live Pricing tab shows the current pricing details for each run.
Events:
- Actor start: charged once per run.
- Ad record: charged when one normalized public LinkedIn Ad Library record is saved to the dataset.
- Ad detail enrichment: charged only after optional detail enrichment succeeds for a saved ad record.
For example, a run that saves ten ads and enriches all ten with optional details triggers ten Ad record events and ten Ad detail enrichment events, plus one Actor start event, along with Apify platform usage. A search-only run at the same cap triggers only the Ad record events, plus platform usage. See the live Pricing tab for the current pricing view.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a tool for structured public LinkedIn Ad Library search. The exact Actor identity is khadinakbar/linkedin-ad-library-search-scraper.
Tool description:
- Search public LinkedIn Ad Library ads by advertiser or keyword.
- Return normalized ad records with creative fields and, when available, EU transparency fields.
- Support bounded pagination and record caps so agents can control cost and output size.
Search public LinkedIn Ad Library ads for
HubSpotinUSandDE, save up to 5 records, and return detailed records if available. Then summarize the most repeated headline themes and list the ad URLs.
Output interpretation:
- Use
adIdandadUrlas stable public record identifiers. - Use
searchType,searchTerm, andsearchCountriesfor provenance. - Use
detailsFetched,sourceProvider, anddetailProviderto understand the collection path. - Use
estimatedImpressions,impressionCountries, andtargetingSummaryas public transparency signals when returned.
Provenance and scope:
- The Actor returns public LinkedIn Ad Library data only.
- It does not expose credentials or private advertiser data.
responseFormat: concisekeeps each record smaller for agent workflows.responseFormat: detailedincludes bounded media and targeting arrays when returned by the provider.
Pagination and cost guidance:
- Set
maxResultsto the number of records your agent actually needs. - Use
maxPagesPerSearchto bound breadth for each advertiser or keyword. - Enable
fetchAdDetailswhen the workflow needs richer public transparency fields and accepts the extra successful detail-enrichment event.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/linkedin-ad-library-search-scraper').call({keywords: ['CRM software'],countries: ['US'],maxResults: 5,fetchAdDetails: true,responseFormat: 'concise',});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log('Dataset items:', dataset.items);
Best results and outcome guidance
Start with one advertiser or one keyword, then expand only after the first result set is useful. Keep maxPagesPerSearch small when testing a new query. Use advertisers when you already know the company name; use keywords when you want creative discovery around a product phrase. Add countries when the workflow depends on reported country scope. Use fetchAdDetails when transparency fields matter to the next decision. Choose detailed when the workflow needs bounded media and targeting arrays in the returned dataset.
Continue the workflow
- Then use LinkedIn Ads Scraper - Public Ad Library to continue from LinkedIn Ad Library Search Scraper discovery into content data for the selected records.
- Then use LinkedIn Comments Scraper - No Cookies to continue from LinkedIn Ad Library Search Scraper discovery into engagement data for the selected records.
Design note
I found that the dataset contract keeps adId, adUrl, searchType, searchTerm, sourceProvider, detailsFetched, and scrapedAt required for every saved record, which makes provenance visible even when some creative or transparency fields are null.
FAQ
Can I search by advertiser name and keyword in the same run?
Yes. Supplying both creates independent searches, which keeps the returned records easy to trace back to the original query.
What should I use when I only know a product phrase?
Use keywords. That is the clearest path when you want public ads containing a phrase such as CRM software or data warehouse.
How does this Actor connect to other LinkedIn workflows?
Use this Actor first to discover public ads, then pass the returned public URL or ID into the verified LinkedIn profile enrichment Actors when your workflow needs downstream context.
What records are saved?
One dataset item equals one normalized public ad record. Fields may be null or empty when the provider did not return them, but the record structure stays stable.
How do I reduce the scope of a run?
Use a smaller maxResults, a smaller maxPagesPerSearch, a narrower country list, or a single advertiser or keyword.
Responsible use
Use the Actor for public Ad Library research, analysis, and automation that fits your legal, contractual, and privacy obligations. The output reflects public records returned by provider-backed collection and may vary by country, time window, and the fields disclosed for a given ad. Review the returned URLs and transparency fields in your own workflow before making decisions.