Decision Maker Finder - C-Suite Contacts with Verified Emails
Pricing
from $15.00 / 1,000 decision maker (full profile)s
Decision Maker Finder - C-Suite Contacts with Verified Emails
Turn a list of companies into their decision makers - founders, C-suite, VPs and directors - with name, title, LinkedIn URL and a work email the company's mail server has confirmed, plus the company inbox and phone. Pay for emails only when confirmed. No LinkedIn login, zero ban risk.
Pricing
from $15.00 / 1,000 decision maker (full profile)s
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
39
Total users
13
Monthly active users
a day ago
Last modified
Categories
Share
Paste a list of companies. Get back the people who sign the checks - founders, CEOs, CTOs, CFOs, VPs and directors - each with a LinkedIn profile URL, seniority, location, and a work email the company's own mail server has confirmed.
No LinkedIn login, no cookie, no session to lose. One row per person, billed per delivered row, and work emails billed only when the mail server accepts the exact mailbox.
Why Use This Scraper?
- Company list in, named decision makers out - one row per person, not a company summary
- Work emails confirmed over SMTP by the company's own mail server, not pattern guesses
- Current employees only - ex-employees, namesake companies and wrong-seniority profiles are dropped before delivery and never billed
- The company's published contact email and phone attached to every row
- No LinkedIn account, cookie or session anywhere in the pipeline
- 151 of 157 public runs finished successfully over the last 30 days
- Pay per result: around $0.065 for one decision maker with a confirmed work email
Overview
Decision Maker Finder is built for outbound sales teams, founders doing their own prospecting, recruiters, and agencies that deliver contact lists to clients. It turns a list of companies into the named people at the top of each org chart.
The output is person-shaped rows. One company in the input can produce several rows, one per decision maker found, and every row repeats the company fields so the dataset works directly in a CRM import or a spreadsheet.
Two different emails ride on each row, and they are not the same thing:
emailis the person's work address. The standard corporate patterns (first.last@,flast@,first@and so on) are ranked for that name and domain, then asked of the company's mail server over SMTP until one is accepted. Confirmed addresses come back withmailboxConfirmed: true.contactEmailis the company inbox (hello@,support@,info@) discovered on the company's own website. One per company, stamped on every row of that company.
Supported Inputs
Company entries
| Entry type | Examples | Notes |
|---|---|---|
| Website (best results) | stripe.com, https://notion.so | The search is more precise and the email lookup goes straight to that domain |
| Company name | Airtable, Acme Inc. | Legal suffixes (Inc, LLC, GmbH, Ltd, S.A.) are stripped before searching |
{"companies": ["stripe.com", "notion.so", "Airtable"],"seniorityLevels": ["CXO", "Owner"],"maxResultsPerCompany": 5}
A website always beats a bare name. One-word names such as Apple or Notion attract namesake companies; the guards drop them, but notion.so never needs guarding in the first place.
Bulk lists and exclusions
For a list out of a spreadsheet, paste it into companiesText, one company per line, instead of filling the row editor. Both fields are merged and deduplicated, so you can mix them.
excludeCompanies is the never-contact list: your own company, current customers, competitors. It matches on the name and on the host, so Acme and acme.com block the same company however the main list spells it.
{"companiesText": "stripe.com\nairtable.com\nnotion.so\nlinear.app","excludeCompanies": ["notion.so"],"includeEmptyCompanies": true}
Narrowing who comes back
targetPersonasis the shortcut for a seat at the table. Each persona expands into the seniority levels, the function and the titles it implies, sofinancesearches CFO, finance director and head of finance at every company. Pick several to cover a committee:founder-ceo,finance,marketing,sales,engineering,product,it-security,people,operations.seniorityLevelsdecides what counts as a decision maker. The default is the buying committee: CXO, Owner/Founder, VP and Director.jobFunctionsnarrows to a department, soMarketingreturns CMOs, VPs of Marketing and Marketing Directors.titleis a custom title searched first at every company, for exampleHead of Partnerships.locationis a keyword added to the search, useful for companies with offices in several countries:Berlin,Milano,Paris,London,New York.
Unsupported inputs
- LinkedIn profile URLs or LinkedIn search URLs as input - use LinkedIn People Search for those
- Personal addresses (gmail, outlook and similar) - never looked up, work domains only
- Anything behind the LinkedIn login wall
- Per-person phone numbers - the phone on each row is the company's published number
Use Cases
| Audience | Use case |
|---|---|
| Outbound sales / SDRs | Turn a target-account list into named contacts with sendable work emails |
| Founders | Reach the person who owns the budget at 50 companies without a data subscription |
| Recruiters | Map the leadership of a hiring client or a competitor |
| Agencies | Deliver client-ready contact lists with per-row costs you can quote |
| RevOps | Fill missing contact rows in the CRM for accounts that already exist |
| Market research | Build a who-runs-what picture of an industry from a company list |
How It Works

- Input - one entry per company, a name or a website.
- Role-targeted public search - queries run top of the org chart first (
"CEO" "Stripe","founder" "Stripe","director" "Stripe"), anchored on the company so results from other companies never enter the run. - Public profile read - each profile page and its structured data give the current employer, location, schools, languages and about text.
- Current-employee guards - three checks run before anything is delivered or billed: a profile naming another current employer is dropped, "Ex Stripe" and "former CFO at Stripe" are dropped, and namesake companies are dropped, because the CEO of Stripe Media Inc. is not a Stripe decision maker.
- Emails - each person's work email is ranked and then confirmed with the company's mail server, and the company's own contact email and phone are discovered from its website.
- Output - one row per decision maker, exportable as JSON, CSV or Excel, or straight into a CRM through the API.
Input Configuration
Input fields
| Field | Type | Required | Notes |
|---|---|---|---|
companies | array<string> | yes, or companiesText | One entry per company, a name (Notion) or a website (stripe.com) |
companiesText | string | optional | Bulk alternative: one company per line, merged with companies |
excludeCompanies | array<string> | optional | Never-contact list, matched on name and host |
targetPersonas | array<string> | optional | founder-ceo, finance, marketing, sales, engineering, product, it-security, people, operations |
seniorityLevels | array<string> | optional | CXO, Owner, VP, Director, Partner, Manager, Senior, Entry, Intern. Default: CXO, Owner, VP, Director |
jobFunctions | array<string> | optional | Sales, Marketing, Engineering, Data, Product, Design, Finance, Human Resources, Operations, Legal, IT, Customer Success, Consulting, Education, Healthcare |
title | string | optional | A custom title searched first at every company |
location | string | optional | Location keyword added to the search |
identityStrictness | string | optional | balanced (default) or strict, which keeps only profiles whose structured data names this company as the current employer |
maxResultsPerCompany | integer | optional | Default 5, maximum 50 |
includeEmptyCompanies | boolean | optional | Default false. One free noResults: true row per company that produced nobody |
findWorkEmails | boolean | optional | Default true. Rank the corporate patterns and confirm one with the mail server |
mustHaveVerifiedEmail | boolean | optional | Default false. Deliver and bill only people whose mailbox the server confirmed |
returnAlternates | boolean | optional | Default false. Add up to five runner-up addresses per person |
enrichEmails | boolean | optional | Default true. Discover the company's own contact email and phone |
proxy | object | optional | Leave empty; the actor routes through its own residential proxy |
Common scenarios
1. Founders and CEOs at a target-account list
{"companies": ["stripe.com", "notion.so", "airtable.com"],"seniorityLevels": ["CXO", "Owner"],"maxResultsPerCompany": 3}
2. Marketing leadership in one country
{"companies": ["zalando.de", "aboutyou.de", "otto.de"],"seniorityLevels": ["CXO", "VP", "Director"],"jobFunctions": ["Marketing"],"location": "Berlin","maxResultsPerCompany": 5}
3. One specific title, no company inbox lookup
{"companies": ["hubspot.com", "intercom.com"],"title": "Head of Partnerships","enrichEmails": false,"maxResultsPerCompany": 2}
4. A buying committee, sendable rows only
{"companies": ["ramp.com", "brex.com"],"targetPersonas": ["finance", "it-security"],"mustHaveVerifiedEmail": true,"returnAlternates": true,"identityStrictness": "strict"}
Output Overview
Each dataset item is one decision maker at one company:
- Identity - name, headline, LinkedIn profile URL, profile image
- Role - job title, derived seniority level, derived job function, current company
- Context - location, schools, languages, about text
- Person email - the work address plus its confirmation status, confidence and pattern
- Company contact - the company's published email, website, and phone with its line type, carrier and city
- Provenance - the exact input entry the row came from, and a timestamp
Rows come in two shapes. A full row carries the parsed public profile. A partial row (partial: true) appears when LinkedIn serves a block for that member's page from every address: the person is still identified by name, headline and profile URL recovered from the search result, and bills at the lower basic price.
Send routing
Every row carries the verdict a sending sequence can route on, so the same rules do not have to be rebuilt in your automation:
sendDecision | Meaning | What sendReason says |
|---|---|---|
send | The mail server accepted that exact mailbox | the mail server accepted this exact mailbox |
review | An address exists but nobody confirmed it | catch-all domain, or no clear answer from the server |
skip | Nothing to send to | every candidate refused, or the lookup did not run |
Dataset views
The console shows three views of the same dataset, and each one exports to CSV on its own:
- Decision makers - the people, their titles and the send verdict
- Emails and deliverability - every email field, the SMTP status, the mail provider, the phone's line type and carrier, and why the verdict came out that way
- Coverage by company - which input entry produced whom, including the
noResultsmarkers
Output Samples
Full row, work email confirmed by the mail server
{"company": "Apify","companyInput": "apify.com","name": "Marek Trunkát","jobTitle": "CTO","summary": "Marek Trunkát - CTO at Apify | Building the largest marketplace of tools for AI.","currentCompany": "Apify","seniorityLevel": "CXO","jobFunction": "Engineering","location": "Hlavní město Praha, Česko","profileUrl": "https://cz.linkedin.com/in/marektrunkat","schools": ["Charles University in Prague", "University of Ljubljana"],"languages": ["english", "czech"],"about": "I am an engineering leader with a passion for technology...","email": "marek.trunkat@apify.com","mailboxConfirmed": true,"emailStatus": "confirmed","emailConfidence": "high","emailPattern": "first.last","emailProvider": "google-workspace","mxValid": true,"sendDecision": "send","sendReason": "the mail server accepted this exact mailbox","contactEmail": "hello@apify.com","contactWebsite": "https://apify.com","contactPhone": "","partial": false,"scrapedAt": "2026-10-01T08:28:10.565Z"}
Partial row, LinkedIn blocked the profile page
{"company": "Stripe","name": "Ricardo Davis","summary": "Managing Director at Stripe","seniorityLevel": "Director","profileUrl": "https://www.linkedin.com/in/ricardo-davis-b71b07236","contactEmail": "support@stripe.com","partial": true}
Stripe's mail server accepts every address it is asked about (a catch-all domain), so work emails there stay ranked guesses with mailboxConfirmed: false and are not billed. Most companies answer per mailbox, which is where "emailStatus": "confirmed" comes from.
Key Output Fields
Person
name,jobTitle,summary,profileUrl,imageUrlseniorityLevel(CXO,Owner,VP,Director, …),jobFunctionlocation,schools[],languages[],about
Company
company,companyInput,currentCompanycontactEmail,contactPhone,contactWebsitephoneE164,phoneType(mobile,fixed-line,voip, …),phoneCarrier,phoneLocation,phoneCountry- classified from the number's own prefix, with no lookup fee. The US and Canada share one numbering plan, so numbers there readfixed-line-or-mobile
Work email
email- the person's work address, ornullwhen every likely mailbox was refusedmailboxConfirmed-trueonly when the mail server accepted that exact mailboxemailStatus-confirmed,catch-all,rejected,unknownorskippedemailConfidence-high,mediumorlowemailPattern- which corporate pattern produced the address, e.g.first.lastemailProvider- mail provider behind the domain (google-workspace,microsoft-365, …)mxValid- whether the domain accepts mail at allemailAlternates[]- runner-up addresses with their pattern and SMTP answer, whenreturnAlternatesis onsendDecision-send,revieworskip, andsendReasonwith the one-line why
Row metadata
partial-truefor the search-result-only shapenoResults-trueon the free marker row for a company that produced nobody, whenincludeEmptyCompaniesis onscrapedAt- ISO timestamp
How This Compares to Subscription Databases
| This actor | ZoomInfo, Apollo, Lusha, RocketReach, Clearbit | |
|---|---|---|
| Commitment | None, pay per delivered row | Annual seat or monthly credit plan |
| Work email | Ranked patterns confirmed with the company's mail server at run time | Database record, as fresh as the last refresh |
| Coverage shape | Any company with public profiles, including small and non-US firms | Strong on large US firms, thinner elsewhere |
| What you pay for | Delivered people, confirmed emails | Credits whether or not the record lands |
| Data age | Fetched during the run | Varies by vendor and record |
A credit-based tool is the better buy for thousands of lookups a month against large US companies. This actor is the better buy for a target list you want contacted this week, with addresses tested while the run happens.
FAQ
Do I need a LinkedIn account or cookie?
No. Only public profile pages and public search results are read, so there is no session to ban.
What does a run cost?
20 companies at 5 decision makers each is about 100 rows. If 40 parse as full rows, 60 as basic, 50 work emails come back confirmed and 12 companies yield a contact email: 0.005 + 40x0.015 + 60x0.005 + 50x0.05 + 12x0.05 = $4.01. Per-contact tools charging $0.06 to $0.20 a row put the same list at $6 to $20.
What am I never charged for?
Ex-employees, namesake-company people and wrong-seniority profiles, because they are dropped before delivery. Work emails the mail server did not confirm. Companies where no contact email was found. Failed lookups.
Why is mailboxConfirmed sometimes false?
Some mail servers accept any address (catch-all domains), so no answer is meaningful for a single mailbox. The ranked address still ships for free with emailStatus: "catch-all". A confirmed first@ or last@ keeps emailConfidence: "medium": the mailbox exists, but at a large company it may belong to a namesake.
Why do some rows have only a name and a profile URL?
LinkedIn shows full public profiles for a subset of members and blocks the rest from every address, permanently. Those people arrive as partial: true rows at the basic price rather than being dropped.
Can I pay only for rows I can actually send to?
Yes. Set mustHaveVerifiedEmail: true and anyone whose mailbox the server did not confirm is dropped before delivery, so nothing unsendable is delivered or billed. Expect fewer rows, and none at catch-all domains.
Can I get personal email addresses or direct dials?
No. Work addresses on company domains only, plus the phone number the company publishes on its own site.
How many companies can one run take?
As many as you paste. On the Apify free plan a run processes the first 5 companies and up to 10 people per company; paid plans have no such cap. A run also trims its own plan to fit the "Maximum cost per run" you set, before any searching starts.
Will the yield always match maxResultsPerCompany?
No. A ten-person startup may have two findable decision makers, not five. Billing is per delivered row, so thin companies cost less.
How is this different from a LinkedIn people search?
A people search takes one query. This actor takes a company list, runs the role ladder per company, applies the current-employee guards, dedupes, confirms work emails and attaches company contact details.
Is this legal?
The actor collects publicly available business information, the same pages a logged-out visitor sees. You are responsible for using the data in line with GDPR, CCPA and your own outreach obligations.
Support
Found a bug or need a field that is missing? Open an issue on the actor's Issues tab - answered within a day.
Additional Services
Need a different export shape, a scheduled run that only reports new people, or a bulk list processed for you? Say so in an issue and it gets built.
Explore More Scrapers
- B2B Email Finder & Verifier - emails for people or whole domains, with SMTP verification
- Email Verifier & Validator - bulk SMTP and catch-all checks on a list you already have
- LinkedIn People Search - free-form people search by keyword, title, company or school
- Website Email Scraper - emails, phones and payment signals from any website
Full list at apify.com/memo23.
🤖 For AI Agents & LLM Apps
Compact reference for agents calling this actor through the Apify MCP server or the Apify API (actor: memo23/decision-maker-finder).
Purpose: company names or domains in, named decision makers out, each with a work email confirmed by the company's mail server at run time.
Minimal input:
{ "companies": ["apify.com"], "seniorityLevels": ["CXO"], "maxResultsPerCompany": 3 }
Output: one row per person - company, companyInput, name, jobTitle, summary, currentCompany, seniorityLevel, jobFunction, location, profileUrl, imageUrl, schools[], languages[], about, email, mailboxConfirmed, emailStatus, emailConfidence, emailPattern, emailProvider, mxValid, emailAlternates[] (opt-in), sendDecision (send / review / skip), sendReason, contactEmail, contactPhone, contactWebsite, phoneE164, phoneType, phoneCarrier, phoneLocation, phoneCountry, partial, scrapedAt.
Behaviors an agent should know:
- Cap the run with
maxResultsPerCompany(default 5, max 50); rows scale as companies x cap. - Pass domains rather than names whenever you have them; one-word names pull in namesake companies.
companiesTexttakes a newline-separated list for bulk runs;excludeCompaniesblocks accounts by name or host.targetPersonas(founder-ceo,finance,marketing,sales,engineering,product,it-security,people,operations) expands into seniority, function and titles, so it replaces hand-built filters.mustHaveVerifiedEmail: truereturns only rows with a mail-server-confirmed address;includeEmptyCompanies: trueadds a freenoResultsrow per empty company.- Delivered rows always match the requested
seniorityLevels; non-matching and ex-employee profiles are filtered out before billing. - Billing: per delivered person (full or basic), plus a per-person event when a work email is mailbox-confirmed, plus one per company when a contact email is found. Dropped rows, unconfirmed emails and failed lookups are free.
emailcan benullandpartialcan betrue; treat both as normal, not as errors.- No login-gated LinkedIn data, no personal email addresses, no per-person phone numbers.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation, Microsoft Corporation, or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.
The actor accesses only publicly available profile pages, public search results and the companies' own websites - no authenticated endpoints, paid features, or content behind the LinkedIn login wall. Mail-server checks ask whether an address exists and never send a message. Users are responsible for ensuring their use complies with the relevant Terms of Service, applicable data-protection law (GDPR, CCPA and similar), and any contractual obligations of their own organization.
SEO Keywords
decision maker finder, find decision makers, c-suite contact finder, ceo email finder, founder email finder, cto email lookup, b2b contact finder, company to contact enrichment, work email finder, smtp verified email finder, linkedin decision makers without login, buying committee data, outbound prospecting data, sales lead enrichment, account based marketing contacts, zoominfo alternative, apollo alternative, lusha alternative, rocketreach alternative, pay per result lead data, recruiter leadership mapping, agency lead list building