◉ Leads Finder - ICP scored LinkedIn leads + Verified emails
Pricing
Pay per event
◉ 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
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 Finder | Typical lead and LinkedIn scrapers | |
|---|---|---|
| Input | One sentence, in any language | Dozens of filters, Boolean searches or Sales Navigator links |
| Qualification | Every profile scored 0-100 against your ICP, with the reason. Off-target profiles removed | Raw results that you sort yourself |
| Measured accuracy | More than 8 out of 10 delivered profiles judged on target by an independent review (details) | Not measured |
| What you pay for | Qualified profiles only | Every result, relevant or not |
| Emails | Optional real-time verification during your run, each email with its own status, pay only for verified ones | A "verified" flag often inherited from a months-old database snapshot |
| Account-based | Paste a list of companies, get their decision makers | Rarely available |
| Intent signals | Recent funding, jobs being hired for, technologies, revenue, growth, written in your sentence | Rarely available, or sold separately |
| Exclusions | In plain language ("except IT services firms") and as lists: customers, competitors, people already contacted, previous runs | Filters only |
| LinkedIn account or cookies | Not needed, no account at risk | Often required |
| Speed | About 30 qualified profiles in 35 seconds | Varies |
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
- Describe who you want to reach, for example "Founders and CEOs of B2B marketing agencies in France with 10 to 50 employees".
- Choose how many qualified profiles you want.
- Run. That's it. Everything else is optional.
How it works
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
| Field | Description |
|---|---|
icpDescription | Required. 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. |
maxResults | Number of qualified profiles you want, from 10 to 2000 (default 50, 100 maximum on the free Apify plan). |
Optional sections
| Section | Fields |
|---|---|
| Emails | verifyEmails (paying users only): verify every delivered email in real time. |
| Refine your targeting | countries, jobTitles, companySizes: replace what is deduced from your description. maxPerCompany: cap people per company (1 for one contact per company). |
| Target specific companies | companies: 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. |
| Exclusions | excludeCompanies (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.
| Group | Fields |
|---|---|
| Qualification | icpScore (0-100), qualificationReason, intentSignal, jobPostUrl, roleMatch, companyMatch |
| Person | fullName, firstName, lastName, linkedinUrl, email, emailStatus |
| Current role | headline, jobTitle, seniority, department, jobStartDate, timeInRole, jobDescription |
| Location | location, region, country |
| Company | companyName, companyWebsite, companyDomain, companyLinkedinUrl, companyIndustry, companySubIndustry, companyEmployees, companySizeRange, companyFounded, companyType, companyMarket (B2B / B2C), companyHqCity, companyHqCountry, companyDescription, companyFollowers, companyNewHires6m, companyTechnologies, companyLogoUrl |
| Background | about, yearsOfExperience, pastExperiences, education, skills, languages, connections |
| Technical | linkedinUsername, 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:
| Event | Price | When it is charged |
|---|---|---|
| Qualified profile | $5 per 1,000 | For each profile delivered (score 50+). Candidates that were reviewed and rejected cost you nothing. |
| Verified email | $8 per 1,000 | Only 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,000 | Only 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
emailStatus | Meaning |
|---|---|
verified | The mailbox exists and accepts email. Safe to send. |
catch-all | The domain accepts every address, so the mailbox cannot be confirmed. Send with care. |
invalid | The mailbox does not exist. The email is removed from the row. |
unknown | The mail server did not answer in time. |
unverified | verifyEmails 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
icpScoreto prioritize. - Emails: set
verifyEmailstotruewhen the list will be used for cold email, and keep rows whereemailStatusisverified. - Volume:
maxResultsfrom 10 to 2000, andmaxPerCompanyto 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.