Apify actor · whoareyouanas/linkedin-ad-library-scraper

LinkedIn Ad Library Scraper: Ads, Media & Targeting

Research LinkedIn ads by company ID, company name, keyword, or direct ad URL. Choose listing or full-detail mode and retain retrieval-level and coverage evidence for every exported ad.

Documentation checked 2026-10-29 · deployed build 0.3.5 · run through your Apify account

01 / Overview

Match the actor to the job.

Precise advertiser research

Use company IDs when you need a specific advertiser rather than an ambiguous company-name match.

Listing or full detail

Choose a lighter listing record or fetch supported detail fields with explicit fallback behavior.

Check search coverage

Review run summaries, retrieval levels, and source warnings before treating a search as complete.

02 / Input

Start with a clear, bounded input.

Provide companyIds, companies, keywords, searches, or adUrls according to the documented search mode. Set maxResults and maxResultsPerSearch. Mode full does not guarantee every possible field is public.

input.json · example based on the deployed schema
{
  "companyIds": [
    "68529"
  ],
  "mode": "full",
  "maxResults": 10,
  "maxResultsPerSearch": 25
}

Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.

Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
searchesarrayNot specifiedObjects with type (companyId, companyUrl, advertiser, keyword, searchUrl, adUrl), string value, optional label and per-search filters. Organization IDs must be strings. URL filters are authoritative; contradictory structured filters are rejected. Invalid searches are recorded while other valid searches continue.
companiesarrayNot specifiedAdvertiser name text or a public LinkedIn company URL. Names are text matches; URL slugs must resolve to a verified organization ID.
companyIdsarrayNot specifiedPositive numeric organization IDs supplied as strings. Returned advertiser identity is verified before exact matches are delivered.
keywordsarrayNot specifiedIndependent text searches across ad copy.
modestringNot specifiedDefaults to full in the Actor code. Listing records only source-visible card fields and marks truncated copy. Full additionally fetches each eligible unique detail. Missing source disclosure is not invented. Direct ad URLs always require full retrieval.

Options: listing, full

maxResultsintegerNot specifiedGlobal delivered-ad limit; defaults to 100 in the Actor code. Zero removes this row limit while request/time/charge budgets still apply.

Minimum: 0 · Maximum: 1000000

maxResultsPerSearchinteger100Per-search unique usable match limit. Zero removes this row limit.

Minimum: 0 · Maximum: 1000000

All other input controls (12)
Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
adUrlsarrayNot specifiedHTTPS public /ad-library/detail/ or /ad-library/employer-brand/ URLs. Search filters do not apply to direct ads.
allowListingFallbackbooleantrueIn full mode, deliver usable card data at the listing event price when detail retrieval fails. False withholds those ads and records their failures.
filtersobjectNot specifiedOptional countries (ISO alpha-2 array), payer text, dateRange, startDate and endDate. No country constraint by default. Date presets: all-time, last-30-days, current-month, current-year, last-year, custom. Custom dates require both YYYY-MM-DD dates. Unknown filters are rejected; last-7-days and last-90-days are not currently advertised.
maxRequestsinteger5000Includes retries and company resolution. Reaching this budget produces an explicit partial summary.

Minimum: 1 · Maximum: 1000000

maxRunSecondsinteger900Operational deadline in seconds. Reaching it produces an explicit partial summary.

Minimum: 1 · Maximum: 86400

maxConcurrencyinteger8Upper request ceiling. Host pacing can reduce actual concurrency.

Minimum: 1 · Maximum: 20

adFormatsarrayNot specifiedOptional canonical labels: SINGLE_IMAGE, VIDEO, CAROUSEL, DOCUMENT, TEXT, MESSAGE, CONVERSATION, THOUGHT_LEADER, EVENT, SPOTLIGHT, EMPLOYER_BRAND. Filter runs after scanning. Full detail acceptance is verified for image, video, carousel, document and thought-leader layouts; other formats may return listing fallbacks.
includeEvidencebooleanfalsePreserve bounded source excerpts and hashes for extraction audits.
proxyConfigurationobjectNot specifiedStandard Apify proxy settings. Cloud runs use datacenter proxy by default; explicit settings override it. Local development uses direct access by default.
startUrlsarrayNot specifiedPublic LinkedIn search, company, standard detail, or employer-brand URLs. String URLs or {url} objects are accepted. Only GET is supported.
resultsLimitintegerNot specifiedAlias of maxResults. Unlike Silva's per-URL setting, this alias is GLOBAL; use maxResultsPerSearch for per-URL limits. Conflicting aliases are rejected.

Minimum: 0 · Maximum: 1000000

skipDetailsbooleanNot specifiedTrue maps to listing; false maps to full. Conflicting mode aliases are rejected.

03 / Output

Know what each returned row represents.

Illustrative output shape · not a live run
{
  "adId": "example-ad-id",
  "advertiserName": "Example Company",
  "advertiserCompanyId": "example-company-id",
  "format": "SINGLE_IMAGE",
  "headline": "Illustrative headline",
  "body": "Illustrative ad copy",
  "retrievalLevel": "listing",
  "adUrl": "https://www.linkedin.com/ad-library/detail/example-ad-id"
}

Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.

Fields in the documented output view

adId

Ad ID

advertiserName

Advertiser

advertiserCompanyId

advertiserCompanyId

format

Format

headline

Headline

body

Ad copy

imageUrl

Image

videoUrl

videoUrl

clickUrl

clickUrl

paidBy

paidBy

retrievalLevel

retrievalLevel

adUrl

Ad Library

scrapedAt

scrapedAt

Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.

Dataset links and run artifacts (5)
Ads
Available through the actor's Output tab for your run.
Run summary
Available through the actor's Output tab for your run.
Search coverage
Available through the actor's Output tab for your run.
Query-to-ad matches
Available through the actor's Output tab for your run.
Advertiser resolutions
Available through the actor's Output tab for your run.

04 / Pricing

Understand the billable unit.

These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.

Actor event prices and billing units
Billable eventRate (USD)When it applies

Actor Start

apify-actor-start

$0.002 / event

Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

Start units depend on allocated memory: one event per GB, with at least one event.

Listing ad

ad-listing

By Apify plan

FREE
$0.0004 / event
BRONZE
$0.00035 / event
SILVER
$0.0003 / event
GOLD
$0.00025 / event
PLATINUM
$0.00025 / event
DIAMOND
$0.00025 / event

One unique ad saved with listing fields. Also applies when full detail falls back to a usable listing. No additional full charge for this ad.

$0.25–$0.40 per 1,000 of this event. Other events and separate services are additional.

Full ad

ad-full

By Apify plan

FREE
$0.0012 / event
BRONZE
$0.001 / event
SILVER
$0.00085 / event
GOLD
$0.0007 / event
PLATINUM
$0.0007 / event
DIAMOND
$0.0007 / event

One unique ad saved with verified available full detail. This includes source fields that are available, not a guarantee every field or original document is public. No additional listing charge for this ad.

$0.70–$1.20 per 1,000 of this event. Other events and separate services are additional.

  • Rates depend on your Apify plan. The table includes all published plan tiers instead of assuming one universal listing or full price.
  • Each saved ad receives its applicable listing or full-detail charge, not both. A usable listing fallback is charged as a listing; startup is separate.

A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.

05 / API & automation

Use the same input from your workflow.

Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.

cURL · start an asynchronous actor run
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
  'https://api.apify.com/v2/acts/whoareyouanas~linkedin-ad-library-scraper/runs' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data @input.json

The response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.

Coverage & interpretation

Check the result before relying on it.

Questions

Before you build an integration.

What do I need to provide?

Provide companyIds, companies, keywords, searches, or adUrls according to the documented search mode. Set maxResults and maxResultsPerSearch. Mode full does not guarantee every possible field is public.

What should I check in the output?
  • Inspect retrievalLevel to distinguish full-detail records from usable listing fallbacks.
  • Available targeting, impression ranges, documents, videos, and original files vary by source and ad format. Full detail means the actor's available-field checks passed, not that every field exists.
How do I budget the run?
  • Rates depend on your Apify plan. The table includes all published plan tiers instead of assuming one universal listing or full price.
  • Each saved ad receives its applicable listing or full-detail charge, not both. A usable listing fallback is charged as a listing; startup is separate.

Keep exploring

Practical guides for the next step.