sfoln/linkedin-ads-search · Social media, Lead generation, Ecommerce On request
Search the LinkedIn Ad Library by keyword, company name or ID, or look up ad URLs: advertiser, headline, body, CTA, landing URL, media, run dates, impressions and targeting, one row per ad. $1.50 per 1,000 ads + $0.004 per results page.
LinkedIn Ads Library Scraper searches the LinkedIn Ad Library by keyword, company name or company ID – or looks up ad URLs directly – and returns one dataset record per ad: advertiser and company page, ad type, headline, body text, call to action, landing URL, image / video / carousel media, run dates, impressions range, targeting summary and impressions by country. Filter by countries and date range. Built for B2B competitive research, ABM and demand-gen teams, agencies and AI agents.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
LinkedIn ad linkedin-ad
$0.0015
$1.5 / 1,000
Charged once per ad record delivered from the LinkedIn Ad Library (recordType ad). Duplicates, query summary rows and failed requests are not charged.
LinkedIn Ad Library request linkedin-ads-query
$0.004
$4 / 1,000
Charged once per Ad Library results page fetched and once per ad URL looked up. A page without new ads is charged only when the upstream provider billed it. Failed requests are not charged.
LinkedIn ad details linkedin-ad-details
$0.005
$5 / 1,000
Optional (includeAdDetails). Charged once per searched ad enriched from its ad page (impressions by country, full targeting, dates). Not charged when the details request fails.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~linkedin-ads-search/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: List the 20 most recent LinkedIn ads run by Microsoft and summarize their headlines, calls to action and landing pages.
Input
Input fields
Search the LinkedIn Ad Library by keyword, company name or company ID, or look up ad URLs. Each query returns one dataset record per ad plus one summary record.
Field
Type
Default
Meaning
keywords
array
—
Keywords Keywords to search ad content for, one per line. Accounts on the Apify free plan can process up to 10 queries per run (keywords, companies, company IDs and ad URLs together).
companies
array
—
Company names Advertiser company names (e.g. Microsoft), one per line.
companyIds
array
—
Company IDs Numeric LinkedIn company IDs or linkedin.com/company/<id> URLs (most precise).
adUrls
array
—
Ad URLs LinkedIn Ad Library ad URLs (https://www.linkedin.com/ad-library/detail/<id>) to look up directly.
maxAdsPerQuery
integer
50
Max ads per query Maximum ads returned per keyword, company or company ID (1–500). Range 1–500.
countries
array
—
Countries Optional 2-letter country codes the ads were shown in (e.g. US, CA).
startDate
string
—
Shown from (YYYY-MM-DD) Optional; requires endDate. LinkedIn accepts dates from one year ago up to yesterday.
endDate
string
—
Shown until (YYYY-MM-DD) Optional; requires startDate. Must be yesterday or earlier.
includeAdDetails
boolean
false
Include ad details Open every found ad's detail page for impressions by country, full targeting and dates. Adds one linkedin-ad-details event per ad.
maxQueries
integer
100
Max queries Safety cap on keywords + companies + IDs + ad URLs processed in this run. Range 1–1000.
concurrency
integer
4
Concurrency Queries processed in parallel (1–8). Range 1–8.
itemTimeoutSecs
integer
900
Time limit per query (seconds) Pagination (and ad-detail calls) for one keyword, company or ID stops cleanly shortly before this limit (60–3600). Raise it for very large per-query limits. Range 60–3600.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified upstream ad object(s) to each ad record under `raw` (larger output).
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The input query this record belongs to.
recordType
string
Row type ad (one per ad, charged linkedin-ad) | query (one summary per query, free).
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan
charged
boolean
Charged Whether this record incurred a pay-per-event charge.
chargedEvent
string
Charged event Pay-per-event event charged for this record.
source
string
Source Upstream data source (scrapecreators = ScrapeCreators API over the public ad library).
fetchedAt
string
Fetched at ISO timestamp.
error
object
Error code / message when status is not ok.
warnings
array
Warnings Non-fatal notes (e.g. stopped early).
query
string | null
Query Keyword, company, company ID or ad URL the row belongs to.
queryType
string | null
Query type keyword | company | companyId | adUrl.
position
integer | null
Position 1-based position within the query results.
adId
string | null
Ad ID LinkedIn Ad Library ad ID.
adLibraryUrl
string | null
Ad Library URL Public LinkedIn Ad Library page of the ad.
advertiser
string | null
Advertiser Advertiser (paying company).
advertiserUrl
string | null
Advertiser page Advertiser's LinkedIn company page.
poster
string | null
Poster Page or person shown as the poster.
promotedBy
string | null
Promoted by Promoting page for thought-leader ads.
adType
string | null
Ad type e.g. Single Image Ad, Video Ad, Carousel Ad, Document Ad.