LinkedIn Ad Library Scraper [NO COOKIES] ✅ avatar

LinkedIn Ad Library Scraper [NO COOKIES] ✅

Pricing

$5.00 / 1,000 results

Go to Apify Store
LinkedIn Ad Library Scraper [NO COOKIES] ✅

LinkedIn Ad Library Scraper [NO COOKIES] ✅

Extract every ad your competitors run on LinkedIn - creatives, headlines, CTAs, body copy, carousels, video, targeting and run dates. 34 fields per ad. Search by brand or keyword, or paste an Ad Library URL. No login, no cookies. For B2B marketers and growth agencies.

Pricing

$5.00 / 1,000 results

Rating

5.0

(4)

Developer

Unseen User

Unseen User

Maintained by Community

Actor stats

18

Bookmarked

173

Total users

64

Monthly active users

3 days ago

Last modified

Share

LinkedIn Ad Library Scraper - Bulk Competitor Ad Analysis

Run competitor ad analysis on LinkedIn at scale. Bulk-search the LinkedIn Ad Library by company, keyword, or company ID and export every ad's creative, headline, CTA, destination URL, targeting, and run dates as a clean structured dataset. Built for B2B marketers, agencies, and growth teams who need real LinkedIn ad intelligence without SaaS lock-in.

Part of the unseenuser cross-platform ad-spy suite. Combine this with our Meta Ad Library Scraper, Google Ads Transparency Scraper, and Reddit Scraper + Ads Library for full cross-platform competitor intel — Facebook, Instagram, Threads, WhatsApp, Google Search, YouTube, Display, Reddit, and LinkedIn in one workflow.

Keywords: linkedin ad library scraper, linkedin ads spy, linkedin ad intelligence, b2b ad research, linkedin ad library api, scrape linkedin ads, competitor ad analysis, linkedin advertising data, linkedin sponsored content scraper.

Use cases

  • B2B competitor research — see exactly what every competitor is running on LinkedIn, with copy, creative, and targeting in one dataset.
  • Agency creative briefs — pull a swipe file of high-performing competitor ads to anchor every new pitch.
  • Ad benchmarking — track cadence, formats, and copy patterns dominant in your category over time.
  • EU transparency / DSA research — programmatically pull LinkedIn's public ad disclosures for regulatory or journalistic work.
  • Brand-safety monitoring — detect unauthorised use of your brand in third-party LinkedIn ads.
  • Competitor ad tracking - watch a set of rival brands on a schedule and catch every new ad they launch.
  • Find competitor ads across a whole category by keyword, not just the brands you already know about.

Free plan limit

Free Apify users get up to 50 results per run. Paying users are not affected and receive results normally.

This limit was set by the Actor developer, not by Apify. To remove it and receive unlimited results, upgrade to any paid Apify plan: https://apify.com/pricing

When a free plan run hits the cap, the Actor finishes successfully (status SUCCEEDED) and the run's status message explains what happened. No error is raised, so the first 50 results are fully usable as normal.

How this compares to ad-spy SaaS tools

This actorAdEspressoAdLibrary.ioLinkedIn Ad Library (manual)
PricingPay-per-run via Apify$49–199/mo$99/moFree, manual only
LinkedIn coverageFull Ad LibraryPartial / Facebook-firstLinkedIn includedNative source
Bulk exportJSON, CSV, ExcelLimitedCSVNone
Bulk searchMany companies / keywords / company IDs per runOne brand at a timeLimitedOne filter at a time
Schedule + automationApify scheduler, webhooks, integrationsNoneNoneNone
API / programmatic accessYes (Apify API)NoPartialNo
SaaS lock-inNone — your data, your datasetYesYesN/A
Data freshnessOn-demand at run timeDaily refreshDaily refreshLive

Quick start

Drop a list of competitors and a date range — you're done:

{
"companies": ["microsoft", "salesforce", "hubspot"],
"countries": ["US"],
"startDate": "2025-01-01",
"endDate": "2025-12-31",
"maxResults": 500,
"fetchAdDetails": true
}

Or look up specific ads by URL:

{
"adUrls": [
"https://www.linkedin.com/ad-library/detail/664291126",
"https://www.linkedin.com/ad-library/detail/823975056"
]
}

Sample output

Every ad is normalised into a tidy row with the fields a marketer actually needs (empty / missing fields are stripped, so your dataset stays clean across every ad type):

{
"id": "664291126",
"adLibraryUrl": "https://www.linkedin.com/ad-library/detail/664291126",
"advertiser": "Salesforce",
"poster": "Salesforce",
"headline": "Read \"The Guide to AI for Small Businesses\"",
"description": "Learn to start building an AI strategy that helps your small business automate routine tasks and keep teams focused on high-value activities.",
"cta": "Download",
"destinationUrl": "https://www.salesforce.com/eu/form/small-business/ai-guide-for-smbs/",
"adType": "Single Image Ad",
"image": "https://media.licdn.com/dms/image/.../Ai-guide-for-smbs.jpg",
"startDate": "2025-04-01T00:00:00.000Z",
"endDate": "2025-04-03T00:00:00.000Z",
"adDuration": "Ran from Apr 1, 2025 to Apr 3, 2025",
"targetingLocation": "Targeting includes Portugal",
"targetingLanguage": "Targeting includes English",
"targetingAudience": "Inclusion and exclusion targeting applied",
"advertiserLinkedinPage": "https://www.linkedin.com/company/3185",
"posterTitle": "Promoted",
"_searchedByField": "company",
"_searchedByValue": "salesforce",
"_scrapedAt": "2026-05-06T18:40:03.094Z"
}

Recipe — Build a competitor ad swipe file

A 10-minute setup that gives you a continuously updating database of competitor ads:

  1. Pick your watch list. Add 3–10 competitor names to companies (and/or category keywords to catch challengers).
  2. Schedule the actor on Apify (Schedules → daily or hourly). Global ID dedup means re-runs don't duplicate ads.
  3. Pipe results to your tool of choice via the Actor's Integrations tab:
    • Airtable — built-in Apify integration appends new dataset rows to your base. Map headline, description, cta, destinationUrl, image, advertiser, _scrapedAt.
    • Notion — same flow via the Make or Zapier connector.
    • Google Sheets — native Apify export to Sheets for instant team access.
  4. Group by competitor using _searchedByValue — every ad records which brand or keyword surfaced it.
  5. Click into the creative via image and adLibraryUrl for context during review.

Result: a self-updating swipe file of every ad your competitors have launched, ready for review meetings.

Recipe — Slack alerts on new ads

Get pinged the moment a competitor launches a new LinkedIn ad:

  1. Set up an Apify webhook on the actor with event ACTOR.RUN.SUCCEEDED.
  2. Point it at your Slack incoming-webhook URL (https://hooks.slack.com/services/…).
  3. Use Apify's payload templates to format each new dataset item as a Slack message with the headline, CTA, and a link to adLibraryUrl.
  4. Schedule the actor hourly — new ads → instant #competitor-ads alerts.

For richer routing (per-competitor channels, severity rules), front the webhook with Make, Zapier, or n8n — all have first-class Apify nodes.

Input reference

FieldTypeDescription
companiesstring[]Bulk-search by company name — one search per value (e.g. ["microsoft","apple"]).
keywordsstring[]Bulk-search by keyword — one search per value.
companyIdsstring[]Bulk-search by numeric LinkedIn company ID.
countriesstring[]Multi-select country picker. Empty = all countries.
startDatestringYYYY-MM-DD. Datepicker in the UI.
endDatestringYYYY-MM-DD. Datepicker in the UI.
maxResultsintegerGlobal cap across all searches. 0 (default) = return every ad found.
maxResultsPerQueryintegerPer-search cap - limits ads scraped per company / keyword / company ID, so one prolific brand can't monopolise the global cap. 0 (default) = no per-search limit.
fetchAdDetailsbooleanFetch full ad page (headline, CTA, URL, targeting…) per result. Default false.
adUrlsstring[]Optional list of linkedin.com/ad-library/detail/<id> URLs. Fetched directly, in full, before any search runs.

Provide at least one value across companies, keywords, companyIds, or adUrls. Each value triggers its own search; filters and maxResults apply globally; ad IDs are deduped across searches. You can combine adUrls with the search fields - the listed ads are fetched first, then the searches run and add to the same dataset, with any ad you already pulled by URL skipped rather than duplicated.

Output reference

One normalised record per ad is pushed to the default dataset. Columns are emitted in a stable order optimised for browsing in the Apify dataset UI:

ColumnMeaning
idLinkedIn ad ID
adLibraryUrlDirect link back to linkedin.com/ad-library/detail/<id>
advertiserAdvertiser name
posterAccount that posted the ad
headlineAd headline (only with fetchAdDetails, or for ads fetched from an Ad URL)
descriptionAd body text
ctaCall-to-action label
destinationUrlClick-through URL
adTypee.g. "Single Image Ad", "Video Ad", "Document Ad"
imageCreative URL
startDate / endDateISO timestamps
adDurationHuman-readable run duration
targetingLocation / targetingLanguage / targetingAudienceFlattened targeting
advertiserLinkedinPageLink to advertiser's LinkedIn company page
posterTitle / promotedByPosting metadata
_searchedByField / _searchedByValueWhich bulk query surfaced this ad (e.g. company / microsoft)
_sourceUrlSet on ads fetched from an Ad URL — the link you passed in
_scrapedAtISO timestamp when the record was written

Empty / null fields are stripped from each record, so search-only runs don't pollute your dataset with empty columns. Any new fields returned by the underlying API are appended after the known columns (future-proof).

Field reference

Every field the actor can return, and how often each one appeared in a real 52-ad sample (Microsoft, September 2026, run with fetchAdDetails: true). Coverage varies because LinkedIn does not publish the same level of detail for every ad format - a Video Ad exposes less than a Single Image Ad.

FieldWhat it isSeen in sample
idLinkedIn's ad ID100%
adLibraryUrlDirect link to the ad on LinkedIn100%
urlSame value as adLibraryUrl, kept for convenience100%
advertiserCompany paying for the ad100%
advertiserLinkedinPageLink to the advertiser's LinkedIn company page75%
advertiserLogoAdvertiser logo image URL100%
posterAccount that published the post100%
posterTitlePosting label, for example "Promoted"67%
promotedByNamed promoter when different from the poster4%
headlineAd headline63%
descriptionAd body copy100%
ctaCall-to-action label, for example "Learn more"37%
imagePrimary creative image URL73%
videoPaid video URL23%
organicVideoOrganic variant of the video, when the ad boosts a post23%
carouselImagesArray of carousel slide images (7 per ad in this sample)100% present, non-empty on carousel ads
sponsoredMessageButtonsButtons attached to sponsored message ads75% present, empty in this sample
adTypeReadable format: Single Image Ad, Video Ad, Carousel Ad, Document Ad, Event Ad100%
creativeTypeLinkedIn's internal format code, for example SPONSORED_VIDEO75%
destinationUrlClick-through URL25%
landingPageResolved final landing page, after redirects25%
startDateFirst date the ad ran (ISO 8601)38%
endDateLast date the ad ran (ISO 8601)38%
adDurationReadable run duration38%
dateEvent start and end time, Event Ads only2%
totalImpressionsImpression bucket, for example 5k-10k or 50k-100k38%
impressionsByCountryPer-country impression share, for example [{country:"United Kingdom",impressions:"47%"}]75% present, 10% non-empty
targetingLocationTargeting location summary38%
targetingLanguageTargeting language summary38%
targetingAudienceTargeting audience summary0% - see Limitations
_searchedByFieldWhich input surfaced this ad: company, keyword or companyId100%
_searchedByValueThe value of that input100%
_sourceUrlThe URL you supplied, on ads fetched from Ad URLsAd URLs only
_scrapedAtISO timestamp when the record was written100%

Enrichment fields

These are off by default. Nothing below appears in a run unless you turn the matching input on, and a run with all enrichment off behaves exactly as it always has.

Always on, no extra cost

FieldWhat it isCoverage
daysRunningDays the ad ran, counting both end datesOnly ads that carry both startDate and endDate - 36% of a 168-ad reference run

Needs any enrichment turned on

FieldWhat it isCoverage
isLongestRunningtrue on the longest-running ad for each advertiser within this run. Not across all time - this actor keeps no history between runsOne ad per advertiser, among those with dates

isLongestRunning cannot be computed while results stream out one at a time, because the longest-running ad is only knowable once every ad for that advertiser has been seen. Enabling any enrichment makes the run hold results until the end, which is what allows it. Streaming is the default precisely so that an interrupted run still keeps everything it had already saved.

Add advertiser company profiles

Turning this on looks up each advertiser's LinkedIn company page. The lookup runs once per company, not once per ad - on the reference sample, 52 ads covered 6 advertisers, so 6 lookups rather than 52.

Added to every ad row:

FieldExample
advertiserIndustrySoftware Development
advertiserSize10,001+ employees
advertiserEmployeeCount23591
advertiserFounded2006
advertiserTypePublic Company
advertiserWebsitehttps://www.shopify.com
advertiserHeadquartersOttawa, ON
b2bIntentScore82 - see the section below

Coverage: only ads that carry advertiserLinkedinPage, which was 75% of the reference sample. An ad without it gets none of these columns.

It also creates a second table called advertisers, one row per company, carrying everything above plus description, slogan, logo, coverImage, location, specialties, funding (rounds, last round, named investors), similarPages (LinkedIn's own list of comparable companies - useful as a ready-made competitor set), b2bIntentSignals, adsInRun and longestDaysRunning.

The large values live only on the advertiser row. Repeating a 500-character company description across every ad row would multiply dataset size roughly eightfold for no added information.

Two fields are deliberately not returned. The company endpoint also exposes a list of named employees and a feed of recent organic posts. Neither is included. Named individuals who never advertised anything are people, not ad data, and attaching a staff roster to an ad record sits badly with the profiling stance in the Terms of Service below. Organic posts are not ads.

AI enrichment (your own Anthropic key)

Supplying an Anthropic API key adds:

FieldWhat it isWhere
creativeAngleOne of thought_leadership, lead_magnet, product_demo, hiring, event, brand_awareness, customer_proof, offer, otherAd row
inferredAudienceseniority, function, industry, companySize, inferred only from the ad's wording. Any field the copy does not support comes back null rather than guessedAd row
creativeAngleConfidencehigh, medium or low for the whole classification. Use it to filter out weak inferences instead of treating a guess as factAd row
advertiserStrategyOne short paragraph on what a company is promoting and who it appears to targetAdvertiser row only

This is billed to your Anthropic account, not through Apify. Ads are classified ten per request with a fixed rubric held in the prompt cache, which is roughly a tenth the cost of classifying them one at a time. Approximate cost per 1,000 ads: Haiku 4.5 ~$1.00, Sonnet 5 ~$2.03, Opus 5 ~$5.05.

If the key is wrong or the API is unavailable, the run logs a warning and saves the un-enriched ads. AI failures never fail a run.

📺 Demo videos

New to Apify? Schedule this actor to run automatically:

Connect this actor to your stack (Zapier, Make, Airtable, and more):

How the B2B intent score works

b2bIntentScore is a 0-100 number, and you should be able to audit it rather than trust it. Here is the entire formula:

b2bIntentScore = adVolume + adSustain + funding + size
adVolume 0-30 ads by this advertiser in this run
1 ad = 5 2-4 = 12 5-9 = 20 10-24 = 26 25+ = 30
adSustain 0-25 longest daysRunning for this advertiser
under 7d = 5 7-29d = 12 30-89d = 20 90d+ = 25
funding 0-25 age of the last funding round
none or unknown = 0 over 3y = 8 1-3y = 16 under 1y = 25
size 0-20 employee count
under 50 = 6 50-499 = 12 500-4999 = 17 5000+ = 20

Every component is also returned in b2bIntentSignals, together with the raw values it was calculated from:

"b2bIntentSignals": {
"adVolume": 12, "adSustain": 25, "funding": 25, "size": 20,
"basis": { "adsInRun": 2, "longestDaysRunning": 100,
"lastFundingRound": "2026-01-11T00:00:00.000Z", "employeeCount": 23591 }
}

What this score is: a measure of observable advertising and growth activity - how much a company advertises, how long it sustains campaigns, how recently it raised, and how large it is.

What it is not: a prediction that anyone intends to buy anything. Public ad-library data cannot support that claim, and a score that implied it would be dishonest. A component scores zero when its input is missing, so an advertiser with no company data attached will score lower than one with it - compare scores only between advertisers enriched the same way.

Limitations

Read this before you buy. These are real constraints measured against the 52-ad sample above, not hypotheticals.

Detail fields are partial by design. LinkedIn's Ad Library does not publish a full detail page for every ad format. In the sample, cta appeared on 37% of ads, destinationUrl on 25%, and startDate / endDate / targeting on 38%. Video Ads and Document Ads are the most sparse; Single Image Ads are the richest. Turning on Include full ad details fetches everything LinkedIn exposes - it cannot create detail LinkedIn does not publish.

targetingAudience returned nothing in this sample. It is declared in the output schema and appeared on 0 of 52 records. It is kept in the schema because removing it would break anyone already mapping that column, but do not plan a workflow around it.

Impressions are buckets, not exact counts. totalImpressions returns ranges like < 1k, 5k-10k, 50k-100k. That is the granularity LinkedIn publishes. impressionsByCountry gives percentage shares, not absolute numbers, and was non-empty on 10% of the sample.

Carousel slides have no per-slide destination links. carouselImages returns the slide images, but LinkedIn does not expose a separate click-through URL per slide, so neither this actor nor any other can return them.

Thought Leader Ads have no boolean column, but they are identifiable. There is no single true/false field, so filtering takes one extra step. Three fields give it away together: poster holds the person's name while advertiser stays the brand, promotedBy is set to "Promoted by

Company name search matches names, not companies. A company name is matched against advertiser names as text, so it returns every advertiser whose name contains your term - not one specific company. Searching make.com returns advertisers such as "Slashtec.com : Make It DONE!" and "Theo K. | PM & Automation Expert | Make.com - Zapier - N8N" alongside any genuine match. Short or common names are the worst affected. Use LinkedIn company IDs when you need exactly one advertiser, and check advertiser / advertiserLinkedinPage on each row before treating a result set as one company's ad spend.

A pasted ?accountOwner= search URL inherits that behaviour. On linkedin.com that parameter points at one specific advertiser. Pasting the URL into Ad Library URLs converts it into a company-name search, so the results are name matches rather than that one advertiser's ads. Filter the output by advertiserLinkedinPage, or search by company ID instead, when you need the exact account.

Ad URLs takes single-ad links only - paste search links into Ad Library URLs instead. The Ad URLs input expects linkedin.com/ad-library/detail/<id> and will skip anything else. To paste a filtered Ad Library search link, use the Ad Library URLs input, which reads the filters off the query string. It also accepts single-ad links, so if you are unsure which kind you have, paste it there.

Free Apify plans are capped at 50 results per run. See the Free plan limit section above.

Troubleshooting: empty or short results

A run that finishes successfully with fewer ads than you expected is almost always one of these.

You pasted a search URL into Ad URLs. That field takes individual ad detail links only, so a /ad-library/search?... URL is skipped. Paste it into Ad Library URLs instead - that input reads the filters straight off the link. Check the log either way: an unreadable link is named in a warning, and any query parameter the actor did not recognise is listed by name so you can report it.

The company name did not match. Try the LinkedIn company ID instead. Open the advertiser's LinkedIn page and take the numeric ID from the URL, then put it in LinkedIn company IDs.

Your date range excluded the ads. startDate and endDate filter on when the ad ran. Widen the window, or clear both fields to search all time.

Your country filter was too narrow. Countries filters on where the ad was targeted, not where the advertiser is based. Clear it to search all markets.

You are on a free Apify plan. Runs stop at 50 results and finish with a status message explaining the cap. This is not an error.

The advertiser genuinely has few live ads. The Ad Library only shows ads LinkedIn is currently publishing for that advertiser. Cross-check against linkedin.com/ad-library directly before assuming a scrape problem.

If none of these explain it, open an issue on the Issues tab with your run ID. Every issue filed against this actor has been answered.

FAQ

Do I need a LinkedIn account, login or cookies? No. This actor never authenticates to LinkedIn and never asks for a session cookie. It reads the publicly available Ad Library.

Can I scrape several competitors in one run? Yes. Company names, Keywords and LinkedIn company IDs all accept lists. Each value runs as its own search and the results are merged and de-duplicated by ad ID.

One competitor has thousands of ads and eats my whole budget. Can I stop that? Yes, that is exactly what Max ads per company / keyword does. Set it to 100 with 20 brands and you get at most 100 ads per brand instead of the first brand consuming everything. This input exists because a user asked for it in the Issues tab.

How do I get everything, with no limit? Set Max ads to return to 0. Zero means no limit on both cap fields. Free plans are still capped at 50.

Does it return impressions data? Where LinkedIn publishes it. totalImpressions gives a bucket such as 10k-20k, and impressionsByCountry gives per-country percentage shares. Neither is available on every ad - see Limitations for measured coverage.

Does it return video and carousel creatives? Yes. video and organicVideo carry video URLs, and carouselImages returns an array of slide images for carousel and document ads.

What is the difference between advertiser and poster? advertiser is the company paying for the ad. poster is the account the post appears under. They are usually identical, and returning both lets you tell when they are not.

Why do some ads have a headline and others do not? LinkedIn publishes different detail depending on ad format. Single Image Ads are the richest; Video Ads expose the least. Turn on Include full ad details to fetch everything available.

Can I schedule this and get alerted on new ads? Yes. Use Apify Schedules to run it on a cadence, and an Apify webhook on ACTOR.RUN.SUCCEEDED to push new ads into Slack, Airtable, Notion or Google Sheets. See the two Recipe sections above.

Can I paste an Ad Library URL straight from my browser? Yes, into the Ad Library URLs field. Filter the Ad Library on linkedin.com however you like, copy the URL out of the address bar, and paste it in - the filters are read off the URL and applied to the search. A single-ad URL (/ad-library/detail/<id>) is fetched directly instead. Anything you type into the fields above takes priority, so a URL only fills in a filter you left empty. If a URL cannot be read, it is skipped with a warning in the log and the rest of the run continues.

How do I see what my competitors are advertising on LinkedIn? Put their company names into the Company names field and run it. You get back every ad LinkedIn currently publishes for those brands, with the creative, the copy, the call-to-action and the link it points at. Add several brands to one run and the results are merged and de-duplicated, so a whole competitive set arrives as a single table.

Can I export LinkedIn ads to CSV? Yes. Every run writes to an Apify dataset, which exports as CSV, Excel, JSON, XML or RSS from the Storage tab, or through the API. Nothing extra to configure.

How do I download LinkedIn ads data in bulk? Add as many company names, keywords or company IDs as you need. Each value runs as its own search and the results land in one dataset. Set Max ads per company / keyword so one prolific advertiser cannot consume the whole run, and set Max ads to return to 0 to lift the overall cap.

Is there a LinkedIn Ad Library API? LinkedIn does not publish an official API for its public Ad Library. Its Marketing API covers campaigns you run yourself, not ads other companies are running, so it cannot answer competitor questions. This actor reads the public Ad Library and returns it as structured data over the Apify API, which is the closest equivalent.

How much does it cost? $5.00 per 1,000 results. Free Apify plans are capped at 50 results per run, as described above.

Is this affiliated with LinkedIn? No. See the Disclosure and Disclaimer sections below.

Does LinkedIn have an ad library, and is it free to use? Yes. LinkedIn publishes every ad served in the last year at linkedin.com/ad-library, free and without a login. It is built for looking up one advertiser at a time in a browser. This actor reads that same public library and returns it as structured rows, so you can search many companies or keywords at once and export the result.

How do I tell which of a competitor's ads are actually working? Run duration is the usual proxy: an ad a company keeps paying to serve is one that is performing. Every row carries daysRunning, and with enrichment on, the longest-running ad per advertiser is flagged with isLongestRunning. Sort by daysRunning and the ads at the top are the ones a competitor has decided are worth the budget. Anything past about 30 days is worth reading closely.

Does it return targeting data? Yes, as far as LinkedIn publishes it. targetingLocation, targetingLanguage and targetingAudience carry the disclosure text LinkedIn shows on the ad, and impressionsByCountry breaks impressions down by country where that is disclosed. This is disclosure text, not the advertiser's real campaign setup, so treat it as a strong hint rather than an exact audience definition.

Can I search LinkedIn ads by a competitor's company name? Yes, but read the advertiser column before trusting the results. Company names are matched as text, so partners and resellers with the brand in their own name come back too: a hubspot search returned more ads from an agency called "Systony - HubSpot Elite Partner" than from HubSpot itself. For one exact advertiser, use LinkedIn company IDs instead. The ID is the number in advertiserLinkedinPage, so one name search tells you the ID to use from then on.

Can I track competitor ads across LinkedIn, Meta, Google and Reddit? Not in one run, but across one workflow. This actor covers LinkedIn; the Meta Ad Library Scraper, Google Ads Transparency Scraper and Reddit Scraper + Ads Library cover the rest, and all four write the same kind of dataset, so they merge cleanly in Sheets, Airtable or a warehouse.

Is scraping the LinkedIn Ad Library allowed? This actor reads only the public Ad Library, which LinkedIn publishes deliberately for transparency, with no login, no cookies and no personal profile data. That is a different thing from scraping member profiles. You are still responsible for your own use of the output, including LinkedIn's terms and any data-protection rules that apply to you. See the Disclaimer and the Terms of Service sections below.

How it works

Wraps two LinkedIn Ad Library API endpoints (via ScrapeCreators):

  • GET /v1/linkedin/ads/search — search by company / keyword / companyId / countries / date range, paginated.
  • GET /v1/linkedin/ad — full details for a single ad.

Disclosure

This is an independent, community-built tool. It is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft Corporation.

The scraper accesses the publicly available LinkedIn Ad Library through the third-party ScrapeCreators API.

Use responsibly. Make sure your use complies with:

  • LinkedIn's Terms of Service and ad library usage rules
  • Applicable data-protection laws (GDPR in the EU, CCPA in California, etc.) — the data you scrape may include personal data of advertisers
  • Your jurisdiction's rules on automated data collection and competitive intelligence

The maintainer provides this tool as-is, without warranty, and is not liable for how it's used. If LinkedIn changes its public Ad Library or ScrapeCreators changes its API, this scraper may break without notice.

Example tasks

Pre-built task templates for common LinkedIn-ads workflows. Each one is one click away from running, with on-topic example inputs you can tweak before launch:

Full cross-platform ad spy — track competitors everywhere they advertise:

Go deeper on LinkedIn - pair a competitor's paid ads with the rest of their LinkedIn footprint:

  • LinkedIn company data scraper - every ad here carries the advertiser's numeric company ID in advertiserLinkedinPage. Paste those IDs in to get size, industry, headquarters, specialties and funding for each advertiser you found.
  • LinkedIn posts scraper by keyword and hashtag - see what a whole category is saying organically, not just what it pays to promote. The obvious companion to a keyword-based ad search.
  • LinkedIn company posts scraper - pull one advertiser's organic feed and set it beside the ads they are running, to see which messages they trust to paid budget.

See all 16 scrapers by unseenuser →

Changelog

0.2 - 2026-09-13 Added optional enrichment, all off by default. Add advertiser company profiles attaches industry, size, employee count, founding year, type, website and headquarters to each ad and creates a second advertisers table with the full company profile, funding history and LinkedIn's own similar-company list. Supplying your own Anthropic API key classifies each ad's creative angle and inferred audience and writes a strategy paragraph per advertiser, on the Claude model you choose. Every ad now also carries daysRunning and isLongestRunning at no extra cost. A run with no enrichment enabled behaves exactly as it did in 0.1.

0.2 - 2026-09-13 New Ad Library URLs input accepts LinkedIn Ad Library links pasted straight from the browser. A search URL has its filters read off the query string; a single-ad URL is fetched directly. An unreadable URL is skipped with a warning instead of failing the run.

0.2 - 2026-09-13 New Ad formats filter keeps only the formats you pick. Non-matching ads are dropped before any detail lookup, so they cost nothing.

0.2 - 2026-09-13 The output schema now declares every field the actor returns. Eleven fields that were already being written but never listed - including impressions, impressions by country, carousel images, video URLs and the resolved landing page - are now visible in the Output tab.

2026-07-29 Countries is now a searchable dropdown of 72 markets instead of typed ISO codes. Max ads to return and Max ads per company / keyword now accept 0 to mean "return everything".

2026-06-10 Upstream error responses are no longer echoed into run logs.

2026-05-25 Free Apify plans now return up to 50 results per run and finish with SUCCEEDED plus an explanatory status message, instead of erroring.

2026-05-20 New input Max ads per company / keyword caps ads per company, keyword or company ID, so one prolific advertiser cannot consume the whole run budget. Added in response to a user request in the Issues tab.

2026-05-12 Ad-detail lookups now run in parallel batches. Large runs with full details finish substantially faster.

2026-05-06 Empty and null fields are stripped from every record, so sparse ad formats no longer pad the dataset with blank columns.

2026-04-21 Output records normalised to a stable column order, with a derived adLibraryUrl on every row and flattened targeting columns.

2026-04-20 Company names, keywords and company IDs accept lists, so one run covers many brands with results merged and de-duplicated.

2026-04-20 Initial release.

Running locally

npm install
# create storage/key_value_stores/default/INPUT.json with your input
npm start

Requires Node.js 20+.

Disclaimer

This actor is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, express or implied, including (but not limited to) the warranties of merchantability, fitness for a particular purpose, accuracy, and non-infringement.

No liability. In no event shall the maintainer or contributors be liable for any claim, damages, or other liability — whether in an action of contract, tort, or otherwise — arising from, out of, or in connection with this actor, the data it returns, or the use of either.

No guarantee of completeness or accuracy. The data returned by this scraper is sourced from LinkedIn's public Ad Library via a third-party API (ScrapeCreators). Results may be incomplete, outdated, inaccurate, reordered, rate-limited, or unavailable at any time. Do not rely on this scraper as a source of truth for legal, financial, regulatory, investment, or any other critical decisions.

Intellectual property. All advertisements, trademarks, logos, creatives, copy, and likenesses returned by this scraper are the property of their respective advertisers, LinkedIn, or other rights holders. You are solely responsible for using the scraped data in a manner that respects those rights — including copyright, trademark, publicity, and privacy rights.

Data protection. Scraped records may include personal data (names, job titles, company affiliations). If you process this data, you are the data controller under applicable laws (GDPR, UK GDPR, CCPA, LGPD, etc.) and you alone are responsible for lawful basis, notices, retention, and subject-rights handling.

Availability. LinkedIn and/or ScrapeCreators may change, restrict, throttle, or discontinue the underlying public Ad Library and API at any time without notice. The scraper may stop working, return different fields, or return different data as a result. The maintainer is under no obligation to provide updates, fixes, or support.

Compliance is your responsibility. By using this actor, you confirm that your use complies with: LinkedIn's User Agreement and related LinkedIn policies; ScrapeCreators' Terms (where applicable); and all laws applicable to you, your users, and the individuals whose data you process.

Not legal advice. Nothing in this README, the input form, or any message associated with this actor constitutes legal advice. Consult a qualified lawyer in your jurisdiction before relying on the scraper for any use that may carry legal risk.

Permitted use. This tool is intended for lawful competitive research, market intelligence, and ad creative inspiration. Do not use it for scraping personal profiles, building spam databases, impersonation, harassment, fraud, or any purpose prohibited by the platforms referenced above or by law.

By using this actor you acknowledge and accept the terms of this disclaimer. If you do not accept these terms, do not run the actor.


Apify Actor — Terms of Service

Version: 4.0 Effective Date: May 5, 2026

0. Acceptance by Use — Important

Read this section first.

These Terms of Service ("Terms") form a binding legal agreement between you ("User," "you," "your") and UnseenUser, the Publisher of this Apify actor ("UnseenUser," "the Publisher," "we," "us," "our").

0.1 How You Accept These Terms

You accept these Terms by any of the following actions, each of which constitutes a clear, affirmative act of acceptance:

  • (a) Running the Actor — Initiating any execution of the Actor on the Apify platform
  • (b) Using any output returned by the Actor for any purpose
  • (c) Continuing to access the Actor's listing or documentation after these Terms are visible

0.2 Continuing Acceptance

Each time you run the Actor or use its outputs, you reaffirm your acceptance of the then-current Terms. If you do not agree to these Terms or any subsequent update, you must stop using the Actor immediately.

0.3 No Anonymous Acceptance

You cannot disclaim acceptance by:

  • Failing to read these Terms before running the Actor
  • Running the Actor through automated systems
  • Sharing your Apify account with others who may not have read these Terms

By the act of running the Actor on Apify, you bind yourself, your organization (if applicable), and any individuals or systems acting on your behalf or under your authority.

0.4 If You Do Not Accept

If you do not agree to these Terms, you must not run the Actor. No use is authorized without acceptance.

Preamble — Understanding the Architecture

Before using the Actor, please understand the technical architecture of the service:

The Data Flow

You (User) → Apify Platform → Actor (software) → Third-Party API → Source Platform
You (User) ← Apify Platform ← Actor (software) ← Third-Party API

What Each Party Does

  • You (the User): Run the Actor on the Apify platform with input parameters you choose.
  • Apify: Operates the cloud infrastructure that hosts and executes Actors. Apify is a Czech-incorporated company (Apify Technologies s.r.o.) governed by its own Terms of Service.
  • The Publisher (us): Publishes software code (the Actor) on Apify's platform. The Actor is a thin wrapper that translates your input into requests to a third-party API and returns the API's responses to you. The Publisher does not operate scraping infrastructure. The Publisher does not store or retain data returned by the Actor. The Publisher does not see, log, or process the personal data of any individuals returned in the Actor's outputs beyond what is incidental to passing the data through.
  • Third-Party API Provider: HarvestAPI (https://harvest-api.com) or Scrape Creators (https://scrapecreators.com). These are independent third-party companies that operate scraping infrastructure and return data from source platforms.
  • Source Platform: LinkedIn, TikTok, YouTube, Reddit, Linktree, etc. These are the platforms whose publicly visible data is accessed by the Third-Party API Providers.

Why This Matters

Your relationship with the Publisher is that of a software user to a software vendor. The Publisher has the responsibilities of a software vendor (functional code, accurate documentation) and the limits of one (the Publisher is not responsible for how you use the data you obtain).

These Terms operate alongside but do not replace:

  • Apify's Terms of Service and Acceptable Use Policy (governing your relationship with Apify)
  • HarvestAPI Terms of Service and Scrape Creators Terms of Service (governing the underlying data infrastructure)
  • Source Platform terms (LinkedIn, TikTok, etc.) governing the public data accessed
  • Applicable law in your jurisdiction and the jurisdictions of data subjects

These Terms incorporate the actor-specific addendum published in each Actor's individual listing ("Addendum"). In the event of a conflict, the more restrictive provision applies.

1. Nature of the Service

1.1 What the Actor Is

The Actor is a software program published on the Apify platform. Each Actor:

  • (a) Accepts structured input from you on the Apify platform
  • (b) Translates that input into HTTP requests to a third-party API operated by HarvestAPI or Scrape Creators
  • (c) Receives HTTP responses from that third-party API
  • (d) Returns the response data to you in a structured format on the Apify platform

The Actor's source code is hosted on Apify's infrastructure. The Actor runs in Apify's cloud, not on the Publisher's servers. The Publisher operates no servers running the Actor.

1.2 What the Actor Is Not

The Actor is not:

  • (a) A scraping tool — the Publisher does not operate scraping infrastructure, proxies, headless browsers, or fake accounts
  • (b) A direct connection to any source platform — connections to source platforms are made by HarvestAPI / Scrape Creators
  • (c) A data storage or data retention service — the Publisher does not maintain a database of any data the Actor returns
  • (d) A licensed access channel to LinkedIn, TikTok, YouTube, Reddit, X (Twitter), Meta, Linktree, or any other source platform
  • (e) Affiliated with, endorsed by, sponsored by, or authorized by any source platform

1.3 The Publisher's Limited Role

The Publisher's role is limited to:

  • (a) Designing and writing the Actor's source code
  • (b) Publishing the Actor on the Apify Store
  • (c) Maintaining the Actor (updating it when API providers change schemas)
  • (d) Providing documentation and customer support via Apify's contact mechanism

The Publisher is a software vendor, similar to a developer who publishes an app on the Apple App Store or Google Play Store. The Publisher is not a data provider, data broker, data processor, or data controller for purposes of GDPR, CCPA, Israel's Privacy Protection Law, or equivalent.

1.4 The Third-Party API Providers' Role

HarvestAPI (https://harvest-api.com) and Scrape Creators (https://scrapecreators.com) are independent third-party companies. They:

  • (a) Operate the actual data scraping infrastructure
  • (b) Maintain relationships with source platforms (or accept the operational risk of accessing public data without such relationships)
  • (c) Are themselves Apify publishers (HarvestAPI publishes 9+ actors directly; Scrape Creators publishes 10+)
  • (d) Provide their own Terms of Service governing their operations
  • (e) Are responsible for compliance obligations relating to the data collection itself

The Publisher is a customer of these providers. The Publisher is not their agent, partner, or representative.

2. Who May Use the Actor

2.1 Eligibility

You may use the Actor only if:

  • (a) You are at least 18 years old or the age of majority in your jurisdiction
  • (b) You have legal capacity to enter into binding contracts
  • (c) You are not located in or resident of a country subject to comprehensive sanctions by the United States, European Union, United Kingdom, or Israel
  • (d) You are not on any prohibited persons list

2.2 User Representations

By using any Actor, you represent and warrant that:

  • (a) Truthful identity: Information you provide about your identity and intended use is accurate
  • (b) Lawful intent: Your intended use complies with applicable law in your jurisdiction
  • (c) Source platform compliance: You will independently comply with the Terms of Service of any source platform whose data you obtain through the Actor
  • (d) Data subject rights: Where Actor outputs include personal data, you will respect data subject rights under applicable law
  • (e) No prohibited use: You will not use the Actor for any of the purposes prohibited in Section 4

These representations are continuous — they must remain true throughout your use.

3. Permitted Uses

The Actor may be used for any lawful purpose, including:

  • Market research and competitive analysis
  • Academic research
  • Journalism and investigative reporting
  • Internal business intelligence
  • Brand monitoring
  • Recruitment research where consistent with applicable employment law
  • Building products that further process publicly available information lawfully

Specific permitted uses for each Actor are described in that Actor's individual listing and Addendum.

4. Prohibited Uses

You may not use the Actor for any of the following:

4.1 Illegal Activity

Activity illegal under the law of your jurisdiction, the User's jurisdiction, or the jurisdiction of any data subjects.

4.2 Harassment, Stalking, and Personal Targeting

  • Compiling profiles for harassment, stalking, or doxxing
  • Tracking individuals' movements or activities without their knowledge
  • Building profiles of journalists, activists, dissidents, or vulnerable populations for retaliatory purposes

4.3 Discrimination

  • Using outputs for discriminatory employment, lending, housing, or insurance decisions based on protected characteristics
  • Building lists for discriminatory purposes

4.4 Spam and Unsolicited Commercial Communication

  • Sending unsolicited marketing in violation of CAN-SPAM, CASL, GDPR, PECR, Israeli Anti-Spam Law (סעיף 30א לחוק התקשורת), or equivalent laws
  • Building "lead lists" from scraped contacts without proper consent infrastructure
  • Reselling contact data for spam purposes

4.5 Fraud and Deception

  • Identity theft or impersonation
  • Generation of fake reviews, testimonials, or coordinated inauthentic behavior
  • Election interference or political disinformation
  • Securities fraud

4.6 Source Platform Abuse

  • Using outputs to circumvent technical protection measures of source platforms
  • Creating fake accounts on source platforms based on Actor outputs
  • Vote manipulation, engagement manipulation, or platform algorithm gaming
  • Building services that competitively substitute for source platforms

4.7 Reselling the Actor's Service

  • Reselling raw Actor outputs as your own data product or scraping-as-a-service
  • Sharing your Apify credentials to provide third parties indirect access
  • Building competing API services using Actor outputs

4.8 AI Training Without Authorization

Using Actor outputs as training data for commercial AI/ML models without separate licensing authority from the source platform.

4.9 Sensitive Targeting

  • Specifically targeting or profiling based on health conditions, sexual orientation, religious beliefs, political opinions, or other sensitive characteristics
  • Targeting children under 16 (or local age of consent for data processing)

4.10 Privacy Law Violations

  • Processing personal data of EU/UK/California/Israeli residents without complying with applicable privacy law
  • Failing to honor data subject access, deletion, or objection requests
  • Processing data for purposes incompatible with its publication context

5. Source Platform Terms — Your Responsibility

5.1 Acknowledgment

The Actor accesses publicly visible data on third-party platforms ("Source Platforms") through the Third-Party API Providers (HarvestAPI / Scrape Creators). Source Platforms include LinkedIn, TikTok, YouTube, Reddit, X (Twitter), Meta/Facebook, Linktree, Komi, Pillar, Linkbio, Linkme, and Amazon.

5.2 Your Sole Responsibility

You acknowledge:

5.3 Cease-and-Desist Compliance

If you receive a cease-and-desist letter or other legal demand from a Source Platform regarding your use of Actor outputs, you must:

  • (a) Cease the contested use immediately
  • (b) Notify UnseenUser within 48 hours via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser)
  • (c) Cooperate with the Publisher as needed to mitigate
  • (d) Not assert against the Publisher any claim arising from your inability to use the Actor for that Source Platform

6. Data Protection — Reflecting Actual Architecture

6.1 Roles Under Privacy Law

For purposes of GDPR, UK GDPR, CCPA, Israel's Privacy Protection Law (PPL) including Amendment 13, and equivalents:

  • You (the User) are the Data Controller of any personal data you obtain through the Actor and subsequently process for your own purposes
  • HarvestAPI and Scrape Creators are the entities that collect data from source platforms — they bear the responsibilities of data processors or controllers (depending on context) for the collection itself
  • The Publisher acts solely as a software vendor, not as a data controller or processor, because the Publisher does not store, retain, or substantively process personal data — the Actor merely passes API responses through

6.2 No Data Retention by the Publisher

The Publisher confirms:

  • (a) The Publisher does not maintain a database of personal data obtained through the Actor
  • (b) The Actor passes data from the Third-Party API directly to you on the Apify platform — data does not flow through the Publisher's infrastructure
  • (c) Apify's standard execution and operational logging may include limited information about Actor runs (input parameters, run duration, data volume) — this is governed by Apify's own privacy practices
  • (d) The Publisher does not access, view, or analyze your Actor outputs except as needed for technical support if you specifically share them with the Publisher

6.3 Your Obligations as Data Controller

Where your use of the Actor involves processing personal data, you are responsible for:

  • (a) Establishing a lawful basis for your processing (consent, legitimate interest with documented balancing test, contract, etc.)
  • (b) Providing transparent notice to data subjects as required by applicable law
  • (c) Honoring data subject access, rectification, erasure, restriction, and portability requests
  • (d) Implementing appropriate security measures
  • (e) Conducting Data Protection Impact Assessments where required
  • (f) Appointing a Data Protection Officer if your operations require one
  • (g) Registering databases with applicable supervisory authorities
  • (h) Honoring opt-out requests for direct marketing
  • (i) Cross-border transfer safeguards where data crosses borders

6.4 Israel's Amendment 13 — User Compliance

If your use of the Actor involves Israeli residents' personal data, you must comply with the Privacy Protection Law as amended (Amendment 13, effective August 14, 2025). These obligations are yours as the data controller, not the Publisher's as the software vendor.

6.5 Sensitive Data Targeting Restrictions

You will not use the Actor to specifically target, profile, or build datasets focused on:

  • Health or medical conditions
  • Religious beliefs
  • Political opinions
  • Sexual orientation or gender identity
  • Genetic or biometric data
  • Criminal history
  • Children under 16

7. Intellectual Property

7.1 Actor Code

The Actor's source code, schemas, documentation, and branding are owned by the Publisher. You receive a limited, non-exclusive, non-transferable, revocable license to use the Actor for permitted purposes during your active subscription/run with Apify.

7.2 Output Data

The Publisher claims no ownership over the public data the Actor returns. Source Platforms may have copyright, database rights, or other rights in their data; data subjects may have copyright in user-generated content. Your use of output data must respect these rights independently.

7.3 Restrictions

You may not reverse engineer, decompile, or reuse the Actor's code in a competing actor.

7.4 Feedback

Feedback you provide may be used by the Publisher to improve products without compensation to you.

8. Pricing and Payment

8.1 Apify Platform Billing

Pricing is administered through Apify's pricing models. Apify processes all payments. Apify's payment terms govern refunds and disputes.

8.2 Pricing Changes

The Publisher may change Actor pricing with at least 14 days' notice via the Actor's Apify listing.

8.3 No Refunds for Misuse

If your access is suspended or terminated for breach of these Terms, you forfeit any unused balance and are not entitled to refunds.

9. Service Availability and Changes

9.1 No Uptime Guarantee

The Actor depends on:

  • (a) The Apify platform
  • (b) Underlying API providers (HarvestAPI, Scrape Creators)
  • (c) Source Platforms' continued public accessibility

Any of these may change behavior, restrict access, or become unavailable without notice. The Publisher makes no uptime guarantees.

9.2 Service Discontinuation

The Publisher may discontinue any Actor at any time. Reasonable notice will be provided when feasible.

10. Disclaimers

10.1 "AS IS" Service

THE ACTOR IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR PURPOSE, NON-INFRINGEMENT, OR ACCURACY OF DATA.

10.2 No Representation of Lawfulness

The Publisher makes no representation that your specific use of the Actor or the data it returns is lawful in your jurisdiction or under any Source Platform's terms. The burden of determining lawfulness for your use case is yours.

10.3 No Endorsement of Source Content

Content returned by the Actor was created by third parties. The Publisher does not endorse, verify, or take responsibility for it.

11. Limitation of Liability

11.1 Aggregate Liability Cap

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL THE AGGREGATE LIABILITY OF THE PUBLISHER FOR ALL CLAIMS RELATING TO THE ACTOR EXCEED THE GREATER OF:

  • (a) ONE HUNDRED U.S. DOLLARS (US $100), OR
  • (b) THE AMOUNTS YOU PAID THROUGH APIFY FOR USE OF THE ACTOR IN THE THREE (3) MONTHS IMMEDIATELY PRECEDING THE EVENT

11.2 Excluded Damages

THE PUBLISHER IS NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR LOSS OF PROFITS, REVENUE, OR DATA, EVEN IF ADVISED OF THE POSSIBILITY.

11.3 Time Limit

Any claim must be brought within one (1) year of the event.

12. Indemnification

12.1 Your Indemnification of the Publisher

You agree to defend, indemnify, and hold harmless the Publisher from any:

  • Claims arising from your use of the Actor
  • Claims arising from your violation of these Terms
  • Claims arising from your violation of any law (including privacy law)
  • Claims arising from your violation of any Source Platform's Terms of Service
  • Claims arising from your processing of personal data obtained through the Actor
  • Reasonable attorneys' fees and costs of defending such claims

12.2 Defense

The Publisher may assume defense at your expense. You will cooperate with the Publisher's defense.

12.3 Scope

The indemnification covers reasonable, foreseeable third-party claims arising from your use. It does not extend to:

  • Claims arising from the Publisher's gross negligence or willful misconduct
  • Claims regarding the Actor's source code itself (those are the Publisher's responsibility)
  • Claims regarding the Third-Party API Provider's data collection (those are their responsibility)

13. Suspension and Termination

13.1 Termination by the Publisher

The Publisher may terminate your access for material breach, illegal use, breach of warranty, or upon credible legal demand.

13.2 Effects of Termination

Your license ends, you must cease use, and applicable provisions survive.

13.3 Termination by You

You may stop using the Actor at any time on Apify.

14. Dispute Resolution

14.1 Informal Resolution First

Send a detailed written description of the dispute via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) and wait 60 days for resolution attempt before any formal claim.

14.2 Governing Law

These Terms are governed by the substantive laws of the State of Israel, without regard to conflict of law principles.

14.3 Exclusive Jurisdiction

Any dispute shall be brought exclusively in the competent civil courts of Tel Aviv-Jaffa, Israel.

14.4 No Class Actions

You agree to bring claims only in your individual capacity.

14.5 Attorneys' Fees

The prevailing party recovers reasonable attorneys' fees.

15. Miscellaneous

15.1 Entire Agreement

These Terms (with Addendum and incorporated documents) are the entire agreement.

15.2 Severability

Unenforceable provisions are reformed to the minimum extent or severed.

15.3 Assignment

You may not assign without the Publisher's consent. The Publisher may assign to affiliates, successors, or acquirers.

15.4 Force Majeure

Neither party is liable for failure due to events beyond reasonable control, including changes by Source Platforms or Third-Party API Providers, or actions by Apify.

15.5 Third-Party Beneficiaries

Apify, HarvestAPI, and Scrape Creators are intended third-party beneficiaries of Sections 4 (Prohibited Uses), 5 (Source Platform Compliance), and 12 (Indemnification).

15.6 Survival

Sections 0 (Acceptance), 4, 5, 6, 7, 10, 11, 12, 14, and 15 survive termination.

15.7 Language

English controls. Translations are for convenience only.

The Publisher operates on the Apify platform under the username UnseenUser (https://apify.com/UnseenUser). The Publisher is a registered legal entity. Upon receipt of valid legal process (subpoena, court order, or equivalent) directed through Apify's official channels, the Publisher's full legal identity may be disclosed as required by law. This Section ensures that you have a valid path to legal recourse if needed.

16. Acknowledgment

By using any Actor, you acknowledge that:

  • (a) You have read these Terms
  • (b) You understand the architecture: you are using software (the Actor) on Apify's platform that calls third-party APIs
  • (c) You accept responsibility for your use, including for compliance with Source Platform terms
  • (d) Your indemnification obligations cover third-party claims arising from your use
  • (e) Disputes are resolved in Israeli courts
  • (f) The Publisher's identity, while not publicly disclosed in this listing, can be obtained through valid legal process via Apify

For questions, use UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) before running the Actor.

These Terms reflect best practices for anonymous Apify actor publishing as of May 2026. Not a substitute for legal advice. Consult qualified Israeli commercial counsel before deploying.


Actor-Specific Terms of Service Addendum — LinkedIn Ad Library Scraper

This addendum supplements the Master Terms of Service V4.0 above. By running this Actor, you accept both the Master ToS and this addendum.

A. Architectural Disclosure

This Actor is a software wrapper. It accepts your input parameters, calls the Scrape Creators LinkedIn Ad Library endpoints, and returns the response data to you on the Apify platform. UnseenUser does not store, log, or substantively process the data returned. The data flows from Scrape Creators through Apify's runtime directly to you.

B. Nature of Data Returned

This Actor returns: LinkedIn ads (creative, copy, CTAs), advertiser identity (company names, profiles), impression data by country, targeting parameters (segments, demographics, geo-targeting), date ranges, ad formats.

Where the Actor's output includes individual people's names, photos, contact details, or content authored by them, that data constitutes personal data subject to GDPR, CCPA, Israeli Privacy Protection Law, and equivalent privacy laws in your downstream processing — but only in your hands as the data controller, not in UnseenUser's hands as the software vendor.

C. Permitted Use Cases

You may use this Actor for the following purposes (non-exhaustive list):

  • Competitive ad intelligence — see what your competitors are spending on
  • Ad creative research — analyze hooks, headlines, and CTAs in your industry
  • Targeting analysis — understand how competitors segment audiences
  • Brand-safety monitoring — detect unauthorized use of your brand in ads
  • Agency benchmarking — show clients real competitor activity
  • Investor research — gauge marketing spend velocity of acquisition targets

D. Specifically Prohibited Uses

In addition to Master ToS Section 4 prohibitions, you may NOT:

  • Copy and republish competitor ad creative without licensing — this is copyright infringement
  • Use targeting data to build harassment lists or to identify vulnerable groups for predatory campaigns
  • Mass-clone ads with cosmetic changes to impersonate competitors
  • Cold-DM advertisers found via this Actor without complying with anti-spam laws
  • Republish ad library data as a substitute for LinkedIn's official Ad Library service

E. Platform Terms of Service Considerations

LinkedIn's Ad Library is a transparency tool LinkedIn provides voluntarily. LinkedIn restricts commercial reuse of their Ad Library content. Your downstream use must independently comply with LinkedIn's User Agreement. If LinkedIn issues a cease-and-desist regarding data obtained via this Actor, notify UnseenUser within 48 hours via the Apify profile contact form (https://apify.com/UnseenUser) and cease your use immediately.

Ad creative (images, video, copy) is copyrighted by the advertiser. You may use this content for analysis (typically fair use) but may not republish substantial portions without licensing. Aggregating screenshots of competitor ads in client reports is generally fair use; reposting them as your own is not.

G. Targeting Data Sensitivity

Targeting parameters reveal how advertisers categorize people. This data may include sensitive segments (health interests, political affiliations, financial status). You may NOT:

  • Use targeting data to discriminate against protected classes
  • Build "audience profiles" of named individuals based on aggregated targeting data
  • Cross-reference targeting data with personal data to identify specific individuals

H. Advertiser Identity

Advertiser names returned by this Actor are public information from LinkedIn's transparency tool. They are not personal data when referring to companies, but they ARE personal data when referring to individual advertisers (e.g., one-person consultancies). Treat individual advertisers as personal data subjects in your downstream processing.