◉ Leads Finder - ICP scored LinkedIn leads + Verified emails avatar

◉ Leads Finder - ICP scored LinkedIn leads + Verified emails

Pricing

Pay per event

Go to Apify Store
◉ Leads Finder - ICP scored LinkedIn leads + Verified emails

◉ Leads Finder - ICP scored LinkedIn leads + Verified emails

Pay only for qualified profiles. No LinkedIn account needed. Describe your ideal customer in one sentence and get a ready-to-contact list of LinkedIn decision makers scored 0-100 against your ICP, with 45+ fields and optional real-time email verification.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Jordane Sanson

Jordane Sanson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Leads Finder: ICP-qualified LinkedIn leads from one sentence

Describe your ideal customer in one sentence. Get a ready-to-contact list of LinkedIn decision makers, each scored 0-100 against your ICP, with a plain-English reason, 45+ person and company fields, and emails verified in real time on demand. You only pay for profiles that match.

Building a prospect list usually takes several steps: search a lead database, export, scrape, enrich, then manually remove the wrong people. This Actor does all of it in one run. It handles the targeting, the search and the qualification, and returns only the people worth contacting.

Why this Actor

Leads FinderTypical lead and LinkedIn scrapers
InputOne sentence, in any languageDozens of filters, Boolean searches or Sales Navigator links
QualificationEvery profile scored 0-100 against your ICP, with the reason. Off-target profiles removedRaw results that you sort yourself
Measured accuracyMore than 8 out of 10 delivered profiles judged on target by an independent review (details)Not measured
What you pay forQualified profiles onlyEvery result, relevant or not
EmailsOptional real-time verification during your run, each email with its own status, pay only for verified onesA "verified" flag often inherited from a months-old database snapshot
Account-basedPaste a list of companies, get their decision makersRarely available
Intent signalsRecent funding, jobs being hired for, technologies, revenue, growth, written in your sentenceRarely available, or sold separately
ExclusionsIn plain language ("except IT services firms") and as lists: customers, competitors, people already contacted, previous runsFilters only
LinkedIn account or cookiesNot needed, no account at riskOften required
SpeedAbout 30 qualified profiles in 35 secondsVaries

Best fit for:

  • outbound prospect lists for cold email and LinkedIn
  • account-based marketing: decision makers inside your target accounts
  • SDR teams and lead generation agencies
  • market mapping and total addressable market estimates
  • sourcing candidates for leadership roles
  • feeding a CRM or a sequencing tool

Quick start

  1. Describe who you want to reach, for example "Founders and CEOs of B2B marketing agencies in France with 10 to 50 employees".
  2. Choose how many qualified profiles you want.
  3. Run. That's it. Everything else is optional.

How it works

  1. Your description becomes precise search filters. An AI reads your sentence and works out the target companies' activity, the countries, the roles, the company size, the exclusions and any intent signal you mention.
  2. Intent signals are checked against a second data source when you ask for them (recent funding, jobs being hired for): only companies that really show the signal are kept, matched with care so a signal is never attributed to a homonym.
  3. The Actor searches a database of hundreds of millions of B2B profiles. It first matches your description semantically against company descriptions, which surfaces the closest companies, then adds keyword and industry searches for volume.
  4. Off-target profiles are removed before scoring, at no cost to you: companies outside your exact size range, generic titles that are not a role (self-employed, on leave, open to work), and everything you excluded.
  5. Every remaining candidate is scored against your ICP. A decision model checks the person's current role and current company. The score is the calibrated probability, out of 100, that the person fits. Missing company data lowers the score instead of being guessed.
  6. Only profiles scoring 50 or more are delivered, best scores first, with a one-line reason. You are charged only for those.

Input

Only the first field is required.

FieldDescription
icpDescriptionRequired. Who you want to reach: the role of the people and what their companies do. Any language. Can include country, company size, exclusions and intent signals.
maxResultsNumber of qualified profiles you want, from 10 to 2000 (default 50, 100 maximum on the free Apify plan).

Optional sections

SectionFields
EmailsverifyEmails (paying users only): verify every delivered email in real time.
Refine your targetingcountries, jobTitles, companySizes: replace what is deduced from your description. maxPerCompany: cap people per company (1 for one contact per company).
Target specific companiescompanies: one per line, as a domain (acme.com), a LinkedIn company URL or an exact company name. Only people working at these companies are returned, filtered by the roles in your description.
ExclusionsexcludeCompanies (customers, competitors), excludeLinkedinUrls (people already contacted), excludePreviousResults (datasets of your previous runs: nobody is delivered twice).

Examples

The simplest run:

{
"icpDescription": "Founders and CEOs of B2B marketing agencies in France with 10 to 50 employees",
"maxResults": 100
}

Exclusions in plain language, one contact per company, verified emails:

{
"icpDescription": "Heads of sales at B2B software companies in Germany, 50 to 500 employees, except IT consulting firms",
"maxResults": 200,
"maxPerCompany": 1,
"verifyEmails": true
}

Account-based: decision makers inside your target accounts:

{
"icpDescription": "Sales leaders: VP sales, heads of sales, sales directors",
"companies": ["stripe.com", "https://www.linkedin.com/company/datadog", "Notion"],
"maxPerCompany": 3
}

Never deliver the same people twice, and skip your customers:

{
"icpDescription": "CFOs of industrial SMEs in France, 50 to 500 employees",
"maxResults": 300,
"excludeCompanies": ["customer-one.com", "customer-two.fr"],
"excludePreviousResults": ["<dataset ID of a previous run>"]
}

Writing a good description

  • Describe what the companies do and who they sell to, not just an industry label. "Accounting firms serving restaurants" works better than "accounting".
  • Name the role if it is not the founder or CEO, for example "head of procurement" or "HR director".
  • Add country and company size when they matter. The size is checked against each company's real headcount.
  • Add exclusions in plain words: "except freelancers", "no IT services firms".
  • One target per run. For two different targets, launch two runs.

Intent signals

Reach companies at the right moment by adding intent signals to your description:

  • recent funding: "that raised funding in the last 6 months", "VC-backed startups"
  • jobs they are hiring for: "that are hiring account executives", "recruiting data engineers" (job posts from the last 30 days)
  • technologies used: "that use HubSpot", "running on Shopify"
  • revenue: "with $5M to $50M in revenue"
  • fast growth: "fast-growing companies"

Signals combine with everything else: "Founders of French SaaS startups that raised funding in the last 6 months and are hiring salespeople".

Recent funding and hiring signals come with an intentSignal column on every profile, ready to use as the opening line of your message. For hiring, it is the actual job post (title and posting date), with its link in jobPostUrl; recruitment agencies and job boards, which post jobs for their clients, are left out. They add $10 per 1,000 profiles found through them (see Pricing). Technologies, revenue and growth are included in the base price.

Each signal reduces the number of results, because only companies showing the signal can match, and some companies have no data on it. Revenue data in particular is sparse outside the United States. The run tells you when a signal is applied and when it limits your results. Start broad, then add a signal when you want timing on your side.

Output

One row per qualified profile. The columns appear in the same order everywhere: the console table, the CSV and Excel exports, and the JSON.

GroupFields
QualificationicpScore (0-100), qualificationReason, intentSignal, jobPostUrl, roleMatch, companyMatch
PersonfullName, firstName, lastName, linkedinUrl, email, emailStatus
Current roleheadline, jobTitle, seniority, department, jobStartDate, timeInRole, jobDescription
Locationlocation, region, country
CompanycompanyName, companyWebsite, companyDomain, companyLinkedinUrl, companyIndustry, companySubIndustry, companyEmployees, companySizeRange, companyFounded, companyType, companyMarket (B2B / B2C), companyHqCity, companyHqCountry, companyDescription, companyFollowers, companyNewHires6m, companyTechnologies, companyLogoUrl
Backgroundabout, yearsOfExperience, pastExperiences, education, skills, languages, connections
TechnicallinkedinUsername, profilePictureUrl, profileUpdatedAt

Some fields are empty when the person or the company has not filled them in.

Output example

{
"icpScore": 95,
"qualificationReason": "Strong match (95/100): Head of Sales at Example SaaS (Software Development, 85 employees, France). Role matches your ICP, company matches your ICP.",
"intentSignal": "Raised funding in the last 6 months",
"jobPostUrl": null,
"roleMatch": true,
"companyMatch": true,
"fullName": "Claire Martin",
"firstName": "Claire",
"lastName": "Martin",
"linkedinUrl": "https://www.linkedin.com/in/claire-martin-example",
"email": "claire.martin@example-saas.fr",
"emailStatus": "verified",
"headline": "Head of Sales at Example SaaS",
"jobTitle": "Head of Sales",
"seniority": "Department Leadership",
"department": "Sales",
"jobStartDate": "March 2022",
"timeInRole": "3 years 7 months",
"jobDescription": "Building and leading the mid-market sales team.",
"location": "Lyon, Auvergne-Rhone-Alpes, France",
"region": "Auvergne-Rhone-Alpes",
"country": "France",
"companyName": "Example SaaS",
"companyWebsite": "https://example-saas.fr",
"companyDomain": "example-saas.fr",
"companyLinkedinUrl": "https://www.linkedin.com/company/example-saas",
"companyIndustry": "Technology, Information and Media",
"companySubIndustry": "Software Development",
"companyEmployees": 85,
"companySizeRange": "51-200",
"companyFounded": 2014,
"companyType": "Privately Held",
"companyMarket": "B2B",
"companyHqCity": "Lyon",
"companyHqCountry": "France",
"companyDescription": "Example SaaS publishes a planning platform for field service teams.",
"companyFollowers": 4200,
"companyNewHires6m": 6,
"companyTechnologies": ["HubSpot", "Google Workspace", "Stripe"],
"companyLogoUrl": "https://media.licdn.com/...",
"about": "15 years in B2B software sales...",
"yearsOfExperience": "More than 10 years",
"pastExperiences": ["Account Executive @ Previous Software Co (January 2016 - February 2022)"],
"education": ["Master in Management, Example Business School (2008 - 2010)"],
"skills": ["SaaS", "B2B sales", "team management"],
"languages": ["English - Full professional proficiency"],
"connections": 500,
"linkedinUsername": "claire-martin-example",
"profilePictureUrl": "https://media.licdn.com/...",
"profileUpdatedAt": "2026-09-12 07:03:15 UTC"
}

The run's OUTPUT record contains the search plan that was used (the deduced filters), the number of candidates reviewed and removed, the companies of your list that were not found, and the reason the run stopped.

Accuracy

We measure accuracy instead of claiming it. In October 2026 we reviewed 240 delivered profiles across 8 different target profiles in France, the United States, the United Kingdom and Germany (CFOs of industrial SMEs, heads of IT at law firms, sales leaders at software companies, founders of cleaning companies, and more). An independent AI reviewer, separate from the scoring model, checked each profile against the target role and companies.

More than 8 out of 10 delivered profiles were judged on target. The remaining ones are mostly borderline cases: a company just outside the size range, or an adjacent role. Every miss we found fed the filters described in How it works.

Intent signals are checked too. On a run targeting French startups that raised funding in the last 6 months, 10 out of 10 delivered companies had a real fundraising round in that window (seed to Series C, acquisitions and debt excluded). For hiring signals, every profile comes with the actual job post and its link, so the signal can be checked in one click.

Pricing

This Actor uses pay-per-event pricing:

EventPriceWhen it is charged
Qualified profile$5 per 1,000For each profile delivered (score 50+). Candidates that were reviewed and rejected cost you nothing.
Verified email$8 per 1,000Only when verifyEmails is on, and only for emails that come back verified. Catch-all, invalid and unknown emails are never charged.
Intent signal$10 per 1,000Only for profiles found through a funding or hiring signal you asked for. Each of these profiles comes with its intentSignal.

Your Apify spending limit is respected: the run stops cleanly as soon as the limit is reached.

Email statuses

emailStatusMeaning
verifiedThe mailbox exists and accepts email. Safe to send.
catch-allThe domain accepts every address, so the mailbox cannot be confirmed. Send with care.
invalidThe mailbox does not exist. The email is removed from the row.
unknownThe mail server did not answer in time.
unverifiedverifyEmails was off: the email is the best guess available, not checked.

Free Apify plan

You can try the Actor on the free Apify plan with up to 100 qualified profiles per run. Email verification is reserved for paid plans: on the free plan, emails are delivered with the status unverified. These limits are set by the Actor developer, not by Apify, and the run tells you when one applies.

Send your leads anywhere

Use Apify integrations to send every new list to your CRM, your sequencing tool, a Google Sheet or a webhook: Make, Zapier, n8n, Google Sheets, Slack, HubSpot and more, from the Integrations tab of the Actor.

For AI agents and automations

Use this Actor when the task is to find people to contact who match a target customer profile. Examples: build a prospect list, find decision makers in a given type of company, find the right people inside a list of target accounts, generate leads for an outbound campaign.

  • Main input: icpDescription, a natural-language description of the target. Pass the user's own wording: there is no need to translate it into filters. Exclusions and signals can stay in the sentence.
  • Target accounts: pass domains or LinkedIn company URLs in companies.
  • No duplicates across runs: pass the dataset IDs of previous runs in excludePreviousResults.
  • Output: a dataset of already-qualified profiles, no post-filtering needed. Each has a LinkedIn URL, the current role, company data, a 0-100 fit score and its reason. Sort by icpScore to prioritize.
  • Emails: set verifyEmails to true when the list will be used for cold email, and keep rows where emailStatus is verified.
  • Volume: maxResults from 10 to 2000, and maxPerCompany to cap contacts per company.
  • Access: the Apify API, the Apify MCP server, the Apify CLI, and the Make, Zapier and n8n integrations.

Call through the API:

curl -X POST "https://api.apify.com/v2/acts/jordanesanson~icp-leads-finder/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"icpDescription": "Founders of B2B marketing agencies in France, 10 to 50 employees", "maxResults": 50}'

FAQ

Do I need a LinkedIn account, cookies or Sales Navigator? No. Nothing runs on your LinkedIn account, so it cannot be restricted.

What does the score mean? It is the probability, out of 100, that the person matches your ICP on role and company. Only profiles scoring 50 or more are delivered. qualificationReason explains each score in one sentence, and roleMatch and companyMatch tell you which side matched.

Why is the threshold fixed at 50? You pay per qualified profile, so the definition of "qualified" has to be the same for every run and every user. To work on the strongest matches first, sort by icpScore and start with the 80+.

Are the emails verified? Only if you turn on verifyEmails. Each delivered email is then checked in real time during your run, invalid ones are removed, and every email gets a status. You pay only for verified ones. With the option off, email is the best guess available and emailStatus is unverified. Phone numbers are not provided.

What share of profiles get a verified email? It depends a lot on the target. In our tests on French B2B companies, between 3 and 8 profiles out of 10 had an email (founders of very small companies have fewer), and about 6 emails out of 10 came back verified.

How do I find decision makers inside a list of companies? Put the companies in companies, one per line, and describe the roles in icpDescription ("heads of sales and sales directors"). Domains and LinkedIn company URLs are matched exactly. Names are matched exactly too, so prefer domains when a name is ambiguous. Companies that were not found are listed in the OUTPUT record.

How do I avoid contacting the same people twice? Pick the datasets of your previous runs in excludePreviousResults, and add your customers or competitors in excludeCompanies. Excluded people are removed before scoring and never charged.

What if my target is very niche? The Actor delivers every matching profile it can find. If it has reviewed about 10 times the requested volume and still has not filled your request, it stops and says so in the status message. You only pay for what was delivered. To get more volume, broaden the description: more countries, adjacent industries, more company sizes, fewer intent signals.

Can I target companies that just raised money or are hiring? Yes, write it in your description: "that raised funding in the last 6 months", "that are hiring account executives". Only companies showing the signal are kept, each profile says which signal it carries in intentSignal, and the run tells you how many companies it found. These profiles cost $15 per 1,000 in total ($5 base + $10 signal).

Can I limit the number of people per company? Yes. Set maxPerCompany to 1 for one contact per company, or to any number up to 50. Highest-scored people are picked first.

Which languages and countries are supported? The description can be written in any language, and prospects can be in any country.

What are the minimum and maximum per run? 10 to 2000 qualified profiles per run on paid Apify plans, 10 to 100 on the free plan.