LinkedIn Leads Scraper with Work Emails | No Cookies avatar

LinkedIn Leads Scraper with Work Emails | No Cookies

Pricing

from $1.50 / 1,000 verified leads

Go to Apify Store
LinkedIn Leads Scraper with Work Emails | No Cookies

LinkedIn Leads Scraper with Work Emails | No Cookies

Filter by title, seniority, location and company size. Get B2B leads with a work email matched to the company domain and emailStatus per row. No login, free audience preview, phones on request. Pay per lead, spend cap. JSON/CSV, Clay, n8n, Zapier. Free plan: 100 leads per run.

Pricing

from $1.50 / 1,000 verified leads

Rating

0.0

(0)

Developer

Open Enrich

Open Enrich

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

2

Monthly active users

8 days ago

Last modified

Features

Limited permissions

Share

Pay per result: $1.963/1k on the Free plan down to $1.496/1k on Gold. Free Apify plan: up to 100 per run, as many runs as your credit covers. Misses and notices are free.

Filter by job title, seniority, location and company size. Get back a B2B lead list with the person, the current company and a work email on that company's domain, plus an emailStatus on every row so you know which emails passed the deliverability check. No LinkedIn account, no cookies, no ban risk.

No login | Title, seniority, country, city, company size filters | Work email per lead | Up to 2,000 leads per run | JSON/CSV export

Not a scraper. We never touch linkedin.com. Results come from a profile and company database. Not affiliated with LinkedIn.

See all 10 actors by b2bdata


💳 Pricing and plans

Pay per result, see the Pricing tab. Free Apify plan: up to 100 leads per run, as many runs as your Apify credit covers. Paid plans have no per-run limit. Normal Apify platform usage applies.

A lead with an email that passed the deliverability check is billed at the standard lead rate. A lead whose email was found but not confirmed is billed at a lower rate. The emailStatus column on every row shows which one you got. Preview mode costs nothing.

Success-only billing

You pay for delivered rows only. A failed lookup, an empty search or a notice row is free: failed lookups are free. Each delivered lead is one event, charged right after the row is saved: verified-lead when the email passed the deliverability check, lead when it was found but not confirmed. Higher Apify plans pay less per result: Bronze 5% off, Silver 10% off, Gold and above 15% off. Exact numbers are on the Pricing tab.

Add-ons (charged extra)

There are two events, not a surprise bill: verified-lead for a lead whose email passed the deliverability check, and lead for a lead whose email was found but not confirmed. The emailStatus column tells you which one each row was billed as. Any further add-on is an opt-in input, off by default, and charged only when it returns data for that row.

Lead score and minLeadScore

Every row gets a leadScore from 0 to 100, built only from signals that are really on the row: email verification status, job-title match against your seniority filter, email domain matching the company domain, and whether company size is present. The formula is written out in AGENTS.md. Set minLeadScore (default 0) and rows below it are not pushed and not charged.

Delta mode

Set deltaMode to true for scheduled runs. We keep a hash of each row in a named key-value store in your own account (deltaStoreName, default linkedin-leads-verified-work-emails-delta). Only new or changed rows are pushed and charged. The OUTPUT summary reports newRows, changedRows and skippedUnchanged.

Compatible output

Set outputFormat to compatible to get common LinkedIn scraper field names instead of ours, so existing pipelines keep working. The default is default, unchanged. The mapping table is in AGENTS.md.


⚖️ This vs. the alternatives

This actorCookie-based scrapers (PhantomBuster, Dux-Soup)B2B lead database subscriptions
LinkedIn account neededNoYes (your cookies)No
Account ban riskNoneRealn/a
FiltersTitle, seniority, country, city, company size, industry, company domainVariesYes
Work email per leadYes, matched to the company domainRarelyYes
Free audience-size previewYes (previewOnly)RarelyVaries
Skip leads you already boughtYes (excludeProfileIds)NoVaries
OutputFlat JSON/CSV via APIVariesExport or seat
Cost per resultPay per result, see Pricing tabSubscription or per-resultPer-seat subscription

We do not claim the biggest database and we do not race on the lowest price. We compete on filter precision and on honest email status: every email is matched to the company domain, and emailStatus tells you which ones passed the check. You get a clean path from an ICP description to to a list you can load into a CRM, without a login and without a seat.


⚡ Why this actor?

  • No login, no cookies. Nothing of yours is exposed. Nothing to get banned.
  • Email matched to the company. Every candidate email is checked against the target company's own domain first. That rejects stale prior-employer and personal addresses.
  • Honest email status. We deliver every domain-matched email and tell you in emailStatus whether it passed the SMTP check. Pricing follows that status.
  • Free preview. Set previewOnly: true to see the estimated audience size before you spend anything.
  • No double paying. Pass excludeProfileIds from a previous run and those leads are skipped.
  • Phone filter. Set requirePhone: true to keep only leads with a phone number on file.

🎯 Use cases

  • SDR outbound. Build a call and email list by ICP in minutes, no manual scrolling.
  • Agency lead lists. Deliver client-ready lists without a per-client Sales Navigator seat.
  • Recruiting. Find people by title and seniority at target companies.
  • Account-based sales. Put target domains in companyDomains and get the people at those companies.
  • Market sizing. Run previewOnly over several filter sets and compare audience sizes for free.
  • Phone-first campaigns. Turn on requirePhone and keep only reachable leads.

🔗 Pipeline guide: from ICP to a verified phone number

This actor starts the chain when you have an ICP and no names yet. If you already have a company or a person, start further down.

ICP: "VP Sales", us, 51-200 employees
|
v
[1] linkedin-leads-verified-work-emails -> person, company, domain, work email
|
v
[2] company-firmographics-by-domain -> firmographics for each companyDomain
|
v
[3] email-phone-finder -> phone numbers for each email

Step 1 already returns email and phoneNumbers (when requirePhone is on). Steps 2 and 3 are optional add-ons. Step 3 takes the email column straight into its emails input. All of them are on the publisher page: See all 10 actors by b2bdata. A Make or n8n scenario can chain them without code.


🚀 Quick start

Open the actor, fill the form, press Start. Or send JSON. Four examples:

1. Size the audience first (free)

{
"jobTitles": ["VP Sales"],
"countries": ["us"],
"companySizeMin": 51,
"companySizeMax": 200,
"previewOnly": true
}

2. Pull 100 leads

{
"jobTitles": ["VP Sales"],
"countries": ["us"],
"companySizeMin": 51,
"companySizeMax": 200,
"maxLeads": 100
}

3. Founders in one city, with a phone number

{
"seniority": ["founder"],
"cities": ["San Francisco"],
"requirePhone": true,
"maxLeads": 50
}

4. People at named companies

{
"jobTitles": ["Head of Growth"],
"companyDomains": ["stripe.com"],
"maxPerCompany": 3,
"maxLeads": 20
}

⚙️ Inputs

At least one of jobTitles, seniority, countries, cities or companyDomains is required.

ParameterTypeRequiredDefaultDescription
jobTitlesstring listSee above[] (prefill VP Sales)Current job title contains any of these, for example VP Sales, Head of Growth.
titleMatchstringNo"broad""broad" is substring match. "exact_words" is whole-word match, fewer false positives.
senioritylistNo[]Any of cxo, vp, director, manager, founder.
countriesstring listSee above[] (prefill us)Lowercase ISO country codes, max 5. Many profiles have this blank, so leave it empty when you target specific companies with companyDomains.
citiesstring listNo[]City or region, substring match, for example San Francisco.
companySizeMinintegerNononeMinimum employees. Blank means no minimum.
companySizeMaxintegerNononeMaximum employees. Blank means no maximum.
includeUnknownSizebooleanNofalseOnly applies when a min or max size is set.
industriesstring listNo[]Exact LinkedIn industry name, case-insensitive, for example Computer Software. Not free text. A wrong name fails the run with no charge.
companyDomainsstring listSee above[]Restrict to these companies, bare domains such as stripe.com.
excludeTitleWordsstring listNo[]Drop candidates whose title contains any of these, for example Intern.
excludeHeadlineWordsstring listNo[]Drop candidates whose headline contains any of these, for example open to work.
maxLeadsintegerNo100 (prefill 10)Leads to deliver, 1 to 2000. A lead has a domain-matched email. Free Apify plans: up to 100 per run.
maxPerCompanyintegerNononeCap leads from one company. Blank means no cap.
includeCompanyDetailsbooleanNotrueLook up each company's LinkedIn URL. Off leaves companyLinkedinUrl blank. Same price.
requirePhonebooleanNofalseDeliver only leads with a phone number on file. Slower, may deliver fewer than maxLeads.
excludeProfileIdsJSON listNo[]profileId values from a previous run to skip.
previewOnlybooleanNofalseReturn only the estimated audience size. Charges nothing.

Tip: country plus title is enough to start. Add company size and industry to narrow.


Advanced inputs (API users)

These fields are hidden in the Console form and meant for API and automation use.

FieldTypeDefaultWhat it does
maxChargeUsdnumber0 (off)Stops the run when this run's charges reach the amount. The run ends SUCCEEDED with the rows already delivered and one free explanation row (max_charge_reached). The check runs after each charge, so a run can exceed the amount by one result.
sourceTagstring, up to 100 charactersemptyCopied onto every result row as sourceTag and into the OUTPUT record, so a CRM or Clay table can match results to the request that produced them. Explanation rows never carry it.

📤 Output

One dataset row per lead. Illustrative values, not a real person:

{
"fullName": "Jane Example",
"firstName": "Jane",
"lastName": "Example",
"jobTitle": "VP Sales",
"seniority": "vp",
"linkedinUrl": "https://www.linkedin.com/in/example",
"city": "Princeton Junction",
"country": "us",
"companyName": "Example Group LLC",
"companyDomain": "example.com",
"email": "<work email on the company domain>",
"emailStatus": "valid",
"phoneNumbers": null,
"companySize": 120,
"profileId": 123456,
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Full column list: fullName, firstName, lastName, jobTitle, seniority, headline, linkedinUrl, city, country, companyName, companyDomain, companyLinkedinUrl, companySize, industry, email, emailStatus, phoneNumbers, personalEmailAvailable, tenureStartYear, profileId, sourceQuery, scrapedAt.

Export as JSON, CSV, Excel, XML or HTML from the Output tab, or read the dataset over the API. scrapedAt is when your run pulled the row, not when the underlying profile last changed.

Preview mode output

With previewOnly: true you get the estimated audience size for your filters and no lead rows.

Column notes

  • emailStatus is the real SMTP check result: valid when confirmed deliverable, another value when not. Every row has an email either way.
  • companyLinkedinUrl is filled only when includeCompanyDetails is on and the company matched exactly one name. Domains are sometimes shared by unrelated companies, so we leave the field empty rather than guess.
  • phoneNumbers is a list when a number is on file. It is null when requirePhone is off. Numbers are as listed in the database, not verified, and some are company switchboard lines.

What is NOT returned

  • ❌ Personal email addresses (the actor only reports whether one exists, in personalEmailAvailable)
  • ❌ Posts, jobs, connections or private profile data
  • ❌ Revenue or funding (use company-firmographics-by-domain for firmographics)
  • ❌ Leads without a domain-matched email
  • ❌ Real-time profile changes: data refreshes on the provider's own cadence, typically weeks

We do not strip nulls from rows: a field with no value is returned as null, so the columns stay stable for a CRM import. Clean the nulls in your own mapping step if you prefer.


🛡️ Reliable results

Our data promise. We work to keep every contact current, and we stand behind it. If a record is outdated, an email bounces or a person has moved on, open the Issues tab with your run link. We review every report and sort it out with you, case by case.

  • Every lead is saved as it is delivered. A run that stops keeps what it found.
  • Bounded scan. The actor scans up to 15 times maxLeads candidates (50 times with requirePhone) and then stops, so runs stay predictable.
  • Domain match before delivery. Wrong-company and personal emails are rejected before they reach your dataset.
  • Failed email check is not a dropped lead. An unconfirmed email is still delivered, marked in emailStatus, and billed at the lower rate.
  • Wrong industry name fails early. The run stops with no charge instead of returning an empty list silently.

🤖 For AI agents

This section is written for an LLM agent that calls this actor as a tool, through the Apify MCP server or the API. Humans: it doubles as a one-screen contract.

When to use this actor, and when to use a sister actor

Input contract

FieldTypeDefaultNotes
jobTitlesstring[][]Title contains any value.
titleMatch"broad" or "exact_words""broad"Use exact_words to cut false positives.
senioritystring[] of cxo, vp, director, manager, founder[]
countriesstring[][]Lowercase ISO codes, max 5.
citiesstring[][]Substring match.
companySizeMin, companySizeMaxintegernoneEmployees.
industriesstring[][]Exact LinkedIn industry names only.
companyDomainsstring[][]Bare domains.
maxLeadsinteger 1-2000100
maxPerCompanyintegernone
requirePhonebooleanfalse
excludeProfileIdsinteger[][]From earlier profileId values.
previewOnlybooleanfalseFree sizing run.

Required: at least one of jobTitles, seniority, countries, cities, companyDomains. Send only the fields you need.

Output contract

Each item has fullName, firstName, lastName, jobTitle, seniority, headline, linkedinUrl, city, country, companyName, companyDomain, companyLinkedinUrl, companySize, industry, email, emailStatus, phoneNumbers, personalEmailAvailable, tenureStartYear, profileId, sourceQuery, scrapedAt. Many can be null. Nothing else is returned. Always read emailStatus before you send mail to email.

Cost per call

You pay per delivered lead, plus Apify platform usage. A confirmed-deliverable email is billed at the standard lead rate, anything else at a lower rate. previewOnly: true charges nothing. Start with a preview, then a run with maxLeads of 10. Free Apify plans get up to 100 leads per run; paid plans have no per-run limit.

Idempotency and rate advice

Same filters can return the same people again, and the database changes over time, so do not assume two runs match. Pass excludeProfileIds from the last run to avoid paying for the same lead twice. Do not run the same filter set in a loop. Do not run more than a few runs at once.

Chaining

Take email and emailStatus from each row. Only mail rows where emailStatus is valid unless you accept the risk. To get phone numbers for the rest, send the email values to email-phone-finder in its emails input. To get firmographics, send companyDomain values to company-firmographics-by-domain.

Error cases and what to do

SituationWhat you seeWhat to do
No filtersRun rejected: at least one of the main filters is requiredAdd jobTitles, seniority, countries, cities or companyDomains.
Wrong industry nameRun fails with no chargeUse an exact LinkedIn industry name, for example Computer Software, not Software. Check with previewOnly first.
Fewer leads than maxLeadsShort datasetNot every profile has a discoverable email. Widen the filters. Retry once with looser filters, not more than twice.
requirePhone returns few rowsShort datasetAbout 1 in 6 people has a phone on file. Expect fewer than maxLeads.
Zero rows with countries plus companyDomainsEmpty resultMany profiles have no country. Drop countries when you set companyDomains.
Free Apify plan, 100 leads per run reachedRun SUCCEEDED with the first 100 leads and one free explanation row (free_plan_limit)Not an error. Run again for more; a paid Apify plan removes the limit. Do not loop.

Minimal call

{
"jobTitles": ["VP Sales"],
"countries": ["us"],
"maxLeads": 5
}

🔌 Integrations: send results anywhere

Every run writes to an Apify dataset. Dataset items from LinkedIn Lead Generation carry fullName, jobTitle, companyName, companyDomain, email, emailStatus, phoneNumbers, linkedinUrl. Actor id for all recipes: b2bdata/linkedin-leads-verified-work-emails (in API URLs, write it as b2bdata~linkedin-leads-verified-work-emails). Everything below uses the public Apify API and your own Apify token. Native means an Apify integration exists; CSV and automation routes are marked as such.

1. Fetch results over the API (native)

Send the token in a header, never in the URL. Latest successful run, as JSON, CSV or Excel:

curl -H "Authorization: Bearer $APIFY_TOKEN" "https://api.apify.com/v2/acts/b2bdata~linkedin-leads-verified-work-emails/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED"

Swap format=json for format=csv or format=xlsx (jsonl also works). clean=true drops empty items and hidden fields. Pick fields with jq:

curl -s -H "Authorization: Bearer $APIFY_TOKEN" "https://api.apify.com/v2/acts/b2bdata~linkedin-leads-verified-work-emails/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED" | jq '.[] | {name, url}'

Replace name and url with any field names from the output list above. For a specific run, use https://api.apify.com/v2/datasets/<datasetId>/items?format=json.

One-shot call (start a run and wait for its items, limited to 300 seconds): POST https://api.apify.com/v2/acts/b2bdata~linkedin-leads-verified-work-emails/run-sync-get-dataset-items?format=json&clean=true with the Actor input as the JSON body and the same Authorization header. For longer runs, start the run normally and fetch the dataset afterwards.

2. Webhook on run success (native)

In the Actor's Integrations tab (or via the API) add a webhook with event type ACTOR.RUN.SUCCEEDED and your own endpoint as the request URL. Apify sends a POST with the default payload, which contains the run under resource. Your endpoint reads resource.defaultDatasetId and calls the dataset items URL from recipe 1 with it. To send a smaller body, set a custom payload template: a JSON object whose values are Apify variables in double curly braces (resource, eventType, userId, createdAt, eventData), with nested values by dot, for example the run id as resource.id and the dataset id as resource.defaultDatasetId. Switch on "Interpolate variables in string fields" in Apify Console when you quote them.

3. n8n (native node)

Apify node, operation "Run an Actor and get dataset" (or "Run an Actor", then "Get dataset items" from the Datasets resource). Select b2bdata/linkedin-leads-verified-work-emails, paste the Actor input as JSON, and connect your Apify token as a credential. Each dataset item becomes one n8n item, so map fullName, jobTitle, companyName, companyDomain, email, emailStatus, phoneNumbers, linkedinUrl straight into the next node. The Apify node also has an "On new Apify event" trigger for run-finished events.

4. Make (native app)

Apify app: module "Run an Actor" with b2bdata/linkedin-leads-verified-work-emails (or the trigger "Watch Actor Runs" for scheduled or manual runs), then the search module "Get Dataset Items" using the run's default dataset id. Each returned bundle is one row, so map fullName, jobTitle, companyName, companyDomain, email, emailStatus, phoneNumbers, linkedinUrl into your destination module.

5. Zapier (native app)

Apify app: trigger "Finished Actor run" (or action "Run Actor" with b2bdata/linkedin-leads-verified-work-emails), then the search "Fetch dataset items" with the run's default dataset id. Map fullName, jobTitle, companyName, companyDomain, email, emailStatus, phoneNumbers, linkedinUrl into your destination step. Add a Looping or similar step if your Zap needs one action per item.

6. Google Sheets

Apify's Store has a "Google Sheets Import & Export" Actor that you add on this Actor's Integrations tab, then choose append or replace mode and paste your spreadsheet URL. This needs a one-time Google login. Alternative with no extra Actor: Make or Zapier recipes above with their own Google Sheets module.

7. Clay (HTTP API)

In Clay, create an HTTP API request with method GET, URL https://api.apify.com/v2/acts/b2bdata~linkedin-leads-verified-work-emails/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED, and a header Authorization: Bearer <your Apify token>. Treat each returned item as a row and chain your enrichment columns after it.

8. Airtable, HubSpot, Salesforce

No native Apify connector is used here. Two routes:

  • CSV: download with format=csv (recipe 1) or from the dataset's Export button, then use the tool's own import (Airtable CSV import, HubSpot Import, Salesforce Data Import Wizard or Data Loader). Use a unique field such as the URL as the dedupe key.
  • Automation: use the n8n, Make or Zapier recipe above and the CRM's module there. Their setup and field limits are theirs to define.

9. Map the fields

LinkedIn Lead Generation returns fullName, jobTitle, companyName, companyDomain, email, emailStatus, phoneNumbers, linkedinUrl. Typical placement in a CRM (create custom properties where your CRM has no match):

Output field typeTypical CRM placement
Person nameContact name (first and last)
Job title or roleContact job title
Company nameCompany or account name
Website or domainCompany website or domain
Profile or page URLCustom text field, also your dedupe key
Location (city, country)Contact or company location fields
Email, phone (if returned)Contact email, phone
Industry, size (if returned)Company industry, employee count
Run dateCustom date field ("Sourced on")

All recipes use the public Apify API; nothing is stored by the publisher.


🕐 Schedule examples

Use Apify Schedules (cron) on a saved task.

  • Weekly fresh leads: 0 6 * * 1, your ICP filters, maxLeads 100, and excludeProfileIds from the last run. Send results to your CRM through a webhook.
  • Monthly audience check: 0 6 1 * *, previewOnly: true. Free. Track how your audience size moves.
  • Daily small pull: 0 8 * * *, maxLeads 20 with maxPerCompany 2 for a steady outbound drip.

Keep scheduled runs small and always pass excludeProfileIds. A schedule you forget is still billed.


More from the publisher: See all 10 actors by b2bdata


❓ FAQ

Data & coverage

Q: Do I need a LinkedIn account or Sales Navigator? A: No. The actor never logs in to LinkedIn. No account, no cookies.

Q: How do you check emails? A: Every candidate is matched to the target company's domain first. That rejects stale prior-employer and personal addresses. Then it gets an SMTP-level check. We deliver every domain-matched email and emailStatus tells you whether it was confirmed.

Q: Why did I get fewer leads than maxLeads? A: Only candidates with a real, domain-matched email count as leads, and not every profile has one. The scan is bounded to 15 times maxLeads (50 times with requirePhone). Widen your filters if you hit that often.

Q: How fresh is the data? A: Records refresh on the data provider's own cadence, typically weeks, not real time. scrapedAt is when your run pulled the row.

Q: Can I only get leads with phone numbers? A: Yes. Set requirePhone: true. About 1 in 6 people has a number on file. Numbers are not verified and some are switchboard lines.

Q: What does previewOnly do? A: It returns the estimated audience size for your filters and charges nothing. Use it before a real run.

Q: How do I avoid paying twice for the same lead? A: Pass the profileId values from an earlier run in excludeProfileIds.

Q: Am I charged for failed lookups? A: No. Failed lookups are free. You pay one event per delivered lead (verified-lead or lead, depending on the email status); empty results and notice rows cost nothing.

Q: What are add-ons and are they on by default? A: Add-ons are opt-in inputs, off by default. Each is its own billed event, charged only when it returns data for that row.

Q: What is the lead score and can I filter on it? A: leadScore is 0 to 100, built from signals really on the row. Set minLeadScore and lower-scoring rows are not pushed and not charged.

Q: How do I only pay for new or changed rows on a schedule? A: Turn on deltaMode. We compare each row to a hash in a store in your account and push only new or changed ones. The summary shows newRows, changedRows, skippedUnchanged.

Q: Can I keep my existing field names? A: Yes. Set outputFormat to compatible for common LinkedIn scraper field names. Default output is unchanged.

Legality & compliance

Q: Is this legal? A: We are not lawyers and this is not legal advice. The actor never signs in and works only from publicly available data, and it shows an emailStatus on every row so you know what was verified. Compliance with outreach and privacy law in your market remains with you. For any legal claim, use Apify support (https://apify.com/contact); they forward it to us.

Q: Does it break LinkedIn's terms of service? A: The actor works without any LinkedIn account, which means it makes no deal with LinkedIn when it runs. Your use of the leads must follow the laws and terms that cover you.

Q: Does it collect personal data? A: Yes. Leads are people: names, titles, work emails and sometimes phone numbers. This is B2B professional contact data. You act as the data controller of what you download.

Q: Is it GDPR and CCPA compliant? A: The compliance duties sit with you as controller: lawful basis, notices, opt-outs, deletion, and spam rules such as CAN-SPAM for each place you contact. The Master Terms below explain who does what.

Q: Do you store my results? A: No. We keep no copy of your result data. It lives in your Apify account.

Q: Can I use the output for cold email? A: Only if you follow anti-spam and privacy rules for each place you contact, including opt-out handling. Check emailStatus first.

Q: Can I be blocked or banned? A: Your LinkedIn account cannot be, because it is never used. Your Apify account can be limited if you break the Terms below.


🛟 Support

Use the Issues tab on this actor's Apify page for bugs, questions and feature requests. We answer within 24 hours on working days. Please include the run ID and the input you used.


Use for B2B prospecting only. Comply with all applicable laws including GDPR, CCPA, and CAN-SPAM.

Not affiliated with LinkedIn. The LinkedIn name belongs to its respective owner. This actor builds lead lists from a profile and company database. It does not log in, use cookies, access private pages or bypass authentication. Published on Apify by b2bdata as proprietary software.

📜 Master Terms of Service

Publisher: b2bdata (the "Publisher"), an independent developer publishing on the Apify platform. Applies to: LinkedIn Lead Generation (the "Actor"). Version: 1.0.

Acceptance by use

By running the Actor, calling it through the Apify API, the Apify MCP server or any integration, or letting a schedule or an AI agent run it for you, you accept these Terms. This is acceptance by use. No signature is needed.

If you run the Actor on behalf of a company, you confirm you may bind that company. If you do not accept these Terms, do not run the Actor. Continued use after we update the Terms is acceptance of the update. Anonymous or automated use does not remove your responsibility: the Apify account that starts the run is the accountable party.

Preamble: how the Actor is built

The Actor is a thin wrapper over an independent search index. It does not log in to anything, does not use cookies or accounts, and does not fetch pages from the source platform. We are a software vendor. We ship code that turns a query into a structured result. We do not own, host or curate the underlying data.

You / your agent
| input (query, filters)
v
The Actor (the Publisher's code, runs on Apify)
| search request
v
An independent search index of publicly indexed data
| public result rows
v
The Actor (normalises, deduplicates, saves to your dataset)
|
v
Your Apify dataset (you control it)

Each party has one job. The index holds publicly indexed data. The Actor reshapes it. You decide what to search for, what to keep and what to do with it. We keep no copy of your queries or your results once the run ends, beyond what Apify itself stores in your account and what we need for billing and abuse prevention.

1. Nature of the service

1.1 What the Actor is

A software tool that searches publicly indexed data and returns structured rows to your Apify dataset. It is a data-discovery utility, nothing more.

1.2 What the Actor is not

It is not a scraper of the source platform, not an official integration, not a credit bureau, not a background-check service, not an employment or tenant screening tool, and not a source of legal, financial or compliance advice. Results are leads and pointers. They are not verified facts.

1.3 The publisher's limited role

We write and maintain the code. We do not review individual runs, individual results or individual users. We do not guarantee that a result is accurate, current, complete or lawful to use for your purpose.

1.4 Third-party infrastructure

The Actor depends on the Apify platform and on an independent search index. We do not control either. Their availability, rules and changes can affect the Actor at any time.

2. Who may use the Actor

2.1 Eligibility

You must be at least 18, have the legal capacity to contract, and not be barred from using the Apify platform or from receiving services under applicable sanctions or export laws.

2.2 Your representations

By running the Actor you represent that you have a lawful purpose, that you will follow the laws that apply to you and to the people whose data you handle, and that the information on your Apify account is accurate.

3. Permitted uses

Lawful business uses, including market research, account and lead discovery, competitive analysis, recruiting research done in line with local law, investment research, data enrichment of records you are entitled to hold, and building your own internal tools. Any use must comply with Section 4 and Section 6.

4. Prohibited uses

4.1 Illegal activity

Any use that violates a law or regulation that applies to you, to us or to the people in the data.

4.2 Harassment, stalking and personal targeting

Locating, monitoring, intimidating or pressuring a private individual.

4.3 Discrimination

Using results to exclude or disadvantage people on a protected characteristic, including in hiring, lending, housing or insurance decisions.

4.4 Spam and unsolicited commercial communication

Sending bulk messages in breach of anti-spam, e-privacy or telemarketing rules (for example CAN-SPAM, PECR, CASL, GDPR consent rules).

4.5 Fraud and deception

Phishing, impersonation, social engineering, fake profiles or any scheme to mislead.

4.6 Source platform abuse

Using the Actor to evade a block, rate limit or enforcement action by the source platform, or to build a service that competes with the source platform by copying its data wholesale.

4.7 Reselling the Actor's service

Reselling or sub-licensing access to the Actor, or republishing raw output as a competing data product, without our written permission.

4.8 AI training without authorization

Using raw output to train a model that identifies or profiles individuals, without a lawful basis and without checking the source platform's terms.

4.9 Sensitive targeting

Building lists based on health, religion, ethnicity, political opinion, sexual orientation, union membership, immigration status, criminal history or any other special category of data.

4.10 Privacy law violations

Any processing of personal data without a lawful basis, without required notices, or in breach of a data subject's rights.

5. Source platform terms: your responsibility

5.1 Acknowledgment

The source platform named in the Addendum has its own terms. We have no contract with you about them and we do not interpret them for you.

5.2 Your sole responsibility

You alone are responsible for checking whether your use of results is allowed under the source platform's terms and under the law of your jurisdiction. Running the Actor is not a statement by us that your use is allowed.

5.3 Cease-and-desist compliance

If the source platform, a rights holder or a regulator sends us a valid cease-and-desist or takedown notice about specific use of the Actor, we will act on it. If we forward such a notice to you, you must stop the named use within 48 hours of receipt and confirm in writing. We may suspend your access immediately while we assess the notice.

6. Data protection

6.1 Roles under privacy law

For the data you collect with the Actor, you are the data controller (or business, under CCPA). Apify and its infrastructure act for you as processor or service provider under their own terms. We, as the publisher of the code, do not decide the purposes or means of your processing and do not receive your result data.

6.2 No data retention by the publisher

We do not retain your result data. We do not build a database from your runs. We keep only what is needed for billing, security and abuse prevention, such as run metadata and support correspondence.

6.3 Your obligations as data controller

You must have a lawful basis (GDPR, UK GDPR), give required notices, honour access, deletion and objection requests, respect opt-outs and "do not sell or share" rights (CCPA/CPRA), keep records, protect the data, and delete it when you no longer need it.

6.4 Sensitive data targeting

You must not use the Actor to target special-category data (see 4.9). If sensitive data appears in results, you must delete it or handle it under the stricter rules that apply.

6.5 Data subject requests

If a person contacts us about data you collected, we will refer them to you and may ask you to confirm you have handled the request.

7. Intellectual property

7.1 Actor code

The Actor, its code, schemas, documentation and branding belong to the Publisher. This is proprietary software. No licence is granted except the right to run the Actor under these Terms.

7.2 Output data

We claim no ownership of the output. Rights in underlying data belong to their owners. You are responsible for how you use it.

7.3 Restrictions

No reverse engineering, copying of the Actor, or removal of notices, except where the law gives you that right regardless.

7.4 Feedback

If you send feedback or bug reports, we may use them freely to improve the Actor, without payment, and without crediting you.

8. Pricing and payment

8.1 Apify platform billing

Charges are set on the Actor's Pricing tab and billed by Apify. Platform usage costs may also apply, as shown by Apify. We do not handle your payment details.

8.2 Pricing changes

We may change prices. For any increase we give at least 14 days' notice through the Apify platform's change-notification process before it takes effect.

8.3 No refunds for misuse

Results delivered as described are billable. Charges for runs you configured wrongly, repeated by a schedule you forgot, or started by an agent you control are your responsibility. Refund requests for platform or Actor faults go through Apify support or to us.

9. Service availability and changes

9.1 No uptime guarantee

We give no uptime, latency, volume or coverage guarantee. Runs can return fewer results than you asked for, or none, because the underlying index changes.

9.2 Service discontinuation

We may change, limit or stop the Actor at any time. We will try to give notice on the Actor page when practical.

10. Disclaimers

10.1 "As is" service

The Actor is provided "as is" and "as available", without warranties of any kind, including merchantability, fitness for a particular purpose, accuracy and non-infringement.

10.2 No representation of lawfulness

We do not represent that your intended use is lawful.

10.3 No endorsement of source content

Results are not endorsed, verified or vouched for by us. Names can be wrong, profiles can be outdated and similarly named entities can be mixed up.

11. Limitation of liability

11.1 Aggregate cap

To the maximum extent the law allows, our total liability for all claims relating to the Actor is limited to the greater of USD 100 or the fees you paid for the Actor in the 3 months before the event that gave rise to the claim.

11.2 Excluded damages

We are not liable for indirect, incidental, special, consequential or punitive damages, or for lost profit, lost revenue, lost data or lost goodwill, even if advised of the possibility.

11.3 Time limit

Any claim must be brought within 1 year after it arose.

12. Indemnification

12.1 Your indemnification of the publisher

You will indemnify and hold harmless the Publisher, its owners and contractors from claims, losses and reasonable legal costs arising from your use of the Actor or its output, your breach of these Terms, or your violation of any law or third-party right.

12.2 Defense

We will tell you promptly about a claim. You may control the defense, but you may not settle in a way that admits fault for us without our written consent.

12.3 Scope

This applies whatever the legal theory, and survives termination.

13. Suspension and termination

13.1 Termination by the publisher

We may suspend or end your access at any time, with or without notice, especially for a breach of Section 4 or a valid notice under 5.3.

13.2 Effects of termination

Rights to run the Actor stop. Sections that by nature survive (IP, disclaimers, liability, indemnification, disputes) continue.

13.3 Termination by you

Stop running the Actor and delete your schedules and integrations.

14. Dispute resolution

14.1 Informal resolution first

Before any formal action, raise the dispute through Apify support or the Actor's issue tab on Apify, and allow 60 days for a good-faith resolution. The Issues tab is for product questions only and is not a channel for legal notices.

14.2 Apify's process next

If the informal step fails, raise the matter through Apify's dispute and support channels. Your contractual relationship for payment, refunds and platform access is with Apify, under Apify's Terms of Service.

14.3 No chosen court

These Terms do not select a governing law or a court. Any claim that survives 14.1 and 14.2 is subject to the law and forum that apply by default to a dispute between you and an individual software developer reached through Apify.

14.4 No class actions

Claims may be brought only on an individual basis, not as a plaintiff or class member in a class, collective or representative action.

14.5 Attorneys' fees

The prevailing party may recover reasonable attorneys' fees where the law allows.

15. Miscellaneous

15.1 Entire agreement

These Terms, with the Addendum, are the whole agreement about the Actor. Apify's own terms continue to apply to the platform.

15.2 Severability

If a provision is unenforceable, the rest stays in force.

15.3 Assignment

You may not assign these Terms. We may assign them in a merger, sale or reorganisation.

15.4 Force majeure

Neither party is liable for delay caused by events beyond reasonable control, including outages of the platform or of upstream infrastructure.

15.5 Third-party beneficiaries

There are none, except that the Publisher's owners, contractors and affiliates may enforce the protections in Sections 10 to 12.

15.6 Survival

Sections 5, 6, 7, 10, 11, 12 and 14 survive termination.

15.7 Language

The English text controls.

All legal notices, takedown requests, cease-and-desist letters, regulator enquiries and data-subject requests must be directed to Apify (https://apify.com/contact), which forwards them to the Publisher. The Publisher operates on Apify under the username b2bdata. The Publisher's identity is held by Apify for billing and is provided to courts and authorities through valid legal process directed via Apify's official channels. We do not publish personal details on the Actor page.

16. Acknowledgment

By running the Actor you confirm you have read these Terms, that you understand you act as the data controller of what you collect, and that you are responsible for lawful use.


🛡️ Actor-Specific ToS Addendum: LinkedIn Lead Generation

A. Architectural disclosure

The actor sends your filters to an independent profile and company database, receives matching profile rows, matches candidate emails to the company domain, runs an SMTP-level check, and saves the result to your dataset. It does not call LinkedIn, does not log in and does not use cookies.

B. Source platform

The source platform is LinkedIn. LinkedIn is not affiliated with, and has not endorsed, this actor. Your use of LinkedIn-derived data is governed by LinkedIn's terms and by the law that applies to you (Section 5 of the Master Terms).

C. Output and accuracy

Titles, companies and emails can be out of date. An email marked other than valid was not confirmed. Phone numbers are not verified. Treat output as leads to check, not as verified facts.

D. Personal contact data

This actor returns work emails and, optionally, phone numbers. You act as the data controller of them. You must have a lawful basis, honour opt-outs and follow anti-spam and calling rules for every place you contact. If you combine its output with other actors, you take on the duties for the combined data.

E. Limits

Up to 2,000 leads per run. Free Apify plans get up to 100 leads per run; paid plans have no per-run limit.

F. Feedback

You can report a problem by running b2bdata/supporter-feedback (free, no rewards) or by posting in the Issues tab.

G. Takedown

If a person, a company or LinkedIn asks that specific use of this actor stop, send the request through Apify (https://apify.com/contact) or the actor's issue tab. Section 5.3 of the Master Terms (48 hours) applies.