Decision makers from company domains — verified email or phone avatar

Decision makers from company domains — verified email or phone

Pricing

from $50.00 / 1,000 domain results

Go to Apify Store
Decision makers from company domains — verified email or phone

Decision makers from company domains — verified email or phone

Rising star

Turn company domains into named decision makers — CEO, founder, VP — with SMTP-verified named-DM or generic-inbox email, phones and LinkedIn. B2B database + AI research. $0.06/domain + $0.14 per verified contact; plan discounts to 20%, 50% off beyond 250 contacts/run. No API keys.

Pricing

from $50.00 / 1,000 domain results

Rating

5.0

(3)

Developer

Pequod

Pequod

Maintained by Community

Actor stats

4

Bookmarked

174

Total users

111

Monthly active users

5 days ago

Last modified

Share

B2B Decision Maker Email & Phone Finder

Apify slug: pequod-labs/company-decision-maker-finder

A decision maker email finder that starts from company domains only. Give it a list of company websites and it returns the named decision maker — CEO, founder, VP, director, ops lead — with an SMTP-verified work email, a phone number and a LinkedIn profile. B2B database lookup first, AI web research for the misses, a phone waterfall (EU imprint + website crawl), and a strict deliverability gate before anything is marked sendable. Pay per delivered result — no third-party API keys required from you.

Apify free trial (platform)

On the Apify platform, free-plan users get the full product (verifyEmails + MV + full enrichment) with tight caps so upstream verification costs stay sustainable:

LimitFree planPaid Apify plan
Domains per run5 max (extra domains dropped)600 max
Domains per UTC day5 across runsNo cap

When the daily domain quota is used up, the run exits with an upgrade message. Upgrade at Apify pricing for unlimited usage.

InputCompany domains via domainList (paste) or domains (JSON with country)
OutputNamed decision maker, role, verified DM email or generic inbox, company/direct phone, LinkedIn
VerificationSMTP-level strict gate — decision_maker.email_sendable or generic_email_sendable when quality is good. Phone line-type + HLR — company_phone_sendable / decision_maker.phone_sendable
Pricing$0.06 per domain result + $0.14 for any SMTP-verified email contact; Store-tier discounts (Scale −10%, Business −20%) and an automatic 50% volume discount beyond 250 verified contacts per run
API keysNone required from the user (operator-side credentials)
Best forBulk decision maker enrichment from domain lists — any B2B vertical
Not forName-only email lookup (no domain), LinkedIn-URL-only input

Key facts

AttributeValue
Input formatdomainList (simple paste) or domains (plain strings / {domain, country}) — mutually exclusive
Max domains per run600 (certified by the 2×100 live soak; 1000 remains a dry-run stretch target)
Roles targetedCEO, founder, co-founder, VP sales, VP operations, CFO, CTO, HR director, procurement lead, ecommerce owner
Email verificationSMTP-level check on every candidate before delivery
Sendable definitiondecision_maker.email_sendable: true for named DM work emails; generic_email_sendable: true for generic inboxes
Phone fieldscompany_phone = imprint/website company line; decision_maker.phone / mobile = person-linked database numbers when sourced
Phone sourcesB2B database, EU legal notice / imprint, website contact crawl
Pricing modelPay per event — no subscription, no per-seat licence
Price$0.06 per domain result; +$0.14 (verified-contact) when best_contact_email contains a verified DM or generic email. Scale plan −10%, Business plan −20%; verified contacts beyond 250 in a run are 50% off
API key required from userNo — all upstream credentials are operator-side
Geographic coverageGlobal, with localized handling for IT, DE, FR, NL, ES, GB, US, IE
IntegrationsApify API, webhooks, MCP, Python and JavaScript clients, CSV/JSON/Excel export
Alternative toZoomInfo, Clearbit, Lusha, RocketReach, Snov.io, UpLead for domain-to-contact enrichment

Use this actor when

  • You have a list of company website domains (CRM export, lookalike discovery, conference list, etc.)
  • You need a named decision maker — CEO, founder, sales leader, ops/logistics buyer, director — not just info@
  • You want verified work emails and company phone numbers in one run
  • You want SMTP-verified sendable emails safe for cold outreach
  • You prefer pay-per-delivered-result pricing with no seat license
  • You want persona targeting (founder, sales, marketing, operations, procurement…)

Do not use this actor when

  • You only have a person name without a company domain → use a name-to-email finder instead
  • Your input is LinkedIn profile URLs only without domains
  • You want the cheapest bulk email list with no named decision maker → pattern-only finders may cost less

How it works

  1. Input — Provide company domains in one of two ways (never both):
    • domainList — paste one domain per line; set defaultCountry to apply the same country to all of them.
    • domains — advanced JSON: plain strings or {"domain": "acme.de", "country": "DE"} objects when countries differ per row. Set need to email, phone, or both (default both). Email-only skips the phone waterfall and Twilio/HLR; phone-only skips SMTP verification. Store billing is unchanged ($0.06/domain + $0.14 per verified email). Set targetPersona to match your sale (default: founder_ceo).
  2. B2B database lookup — Searches professional databases for senior contacts matching the persona.
  3. AI web research (when enabled) — For domains the database misses, searches the public web and extracts named decision makers with AI. Names are never invented — every person must appear in a public source.
  4. Email verification — SMTP-level verification on every candidate when need includes email. Pattern inference (first.last@domain, etc.) when needed.
  5. Generic inbox fallback — Localized info@, contact@, kontakt@, contatti@ when no named DM email verifies (email channel only).
  6. Phone waterfall — When need includes phone: EU legal-notice lookup and website phone crawl when there is no sendable number yet (including a database 800 / green number). Line type (Twilio) and, for mobiles, HLR reachability: up to two unique numbers; a dead or toll-free hit does not stop the cascade. Skipped entirely on need=email.
  7. Output — One row per domain with best contact, evidence, alternates (legacy single-persona) or decision_makers (buying committee), and run summary metrics. Set targetPersonas for a multi-role committee; see Buying committee.

Decision maker email finder from company domains

Unlike bulk email verifiers that take name + domain, this actor starts from domain only and discovers who the decision maker is. The waterfall ranks candidates by persona fit, verifies deliverability, and marks only top-quality addresses as sendable.

Supported persona presets include founder_ceo, sales_leader, marketing_leader, ops_logistics, procurement, finance_cfo, it_security, hr_people, and ecommerce_owner. Custom title keywords are supported via targetPersona.

Buying committee

Use targetPersonas when one domain should return several distinct roles — for example CEO, sales leader and operations — instead of a single best contact.

  • Ordered list of 1–5 persona objects. Order is priority.
  • Each slot returns at most one person. The same person never occupies two slots.
  • A miss stays in the array with decision_maker: null, so the caller sees which role failed.
  • Still one dataset row per domain. Legacy views flatten the first filled slot; the Buying committee view shows the full decision_makers array.
  • Pricing is unchanged: $0.06 per domain plus at most one verified-contact ($0.14) on best_contact_email, even if more members have a verified email.

targetPersonas takes precedence over targetPersona, maxContactsPerDomain and returnAlternates. Those last two remain the legacy way to return extra ranked contacts of the same persona in alternates. Buying committee is different: one distinct person per requested role.

{
"domainList": ["acme.com"],
"targetPersonas": [
{"mode": "preset", "preset": "founder_ceo", "executiveFallback": true},
{"mode": "preset", "preset": "sales_leader", "executiveFallback": false},
{"mode": "preset", "preset": "ops_logistics", "executiveFallback": false}
]
}

Compact output shape (one row):

{
"domain": "acme.com",
"decision_maker": {"full_name": "Ada Founder", "role": "CEO", "email": "ada@acme.com"},
"best_contact_email": "ada@acme.com",
"decision_makers": [
{"slot": 1, "target_persona": "founder_ceo", "has_decision_maker": true, "decision_maker": {"full_name": "Ada Founder", "email": "ada@acme.com"}},
{"slot": 2, "target_persona": "sales_leader", "has_decision_maker": true, "decision_maker": {"full_name": "Bea Sales", "email": "bea@acme.com"}},
{"slot": 3, "target_persona": "ops_logistics", "has_decision_maker": false, "decision_maker": null}
]
}

Legacy fields (decision_maker, send_decision, target_persona) always describe the first filled slot. Row-level best_contact_email is the first sendable member email (or the generic inbox if none of the members verify).

Domain input: domainList vs domains

Two ways to pass company domains — mutually exclusive. Fill exactly one; leave the other empty.

InputEditorWhen to use
domainListOne domain per line (string list)CRM exports, bulk paste, free-trial runs (prefilled with 5 sample domains)
domainsJSON arrayPer-domain country hints: {"domain": "acme.de", "country": "DE"}

defaultCountry applies to every domain in domainList, and to plain-string entries in domains that do not specify their own country. Per-domain country in domains overrides it.

Ready-to-copy examples live under examples/ in this actor folder (bulk-domain-list.json, domains-with-country.json, …).

Schema limit: Apify input schema cannot enforce “fill one, not both” in the UI. The run rejects input when both fields are populated or when both are empty. API callers may use either field; use domains only when individual rows need different countries.

Verified decision-maker email vs generic inbox

The actor returns two distinct email channels — do not treat them as the same for outreach or billing.

ChannelOutput fieldsMeaningPremium charge
Decision-maker work emaildecision_maker.email, decision_maker.email_sendableNamed person's verified work address — safe for persona-specific cold outreach$0.14 (verified-contact) when email_sendable: true
Generic inbox fallbackgeneric_email, generic_email_sendableLocalized, SMTP-verified info@, contact@, kontakt@, … when no DM email verifies$0.14 (verified-contact) when sendable

best_contact_email is the verified address delivered for outreach routing (DM first, generic as fallback). A populated value triggers verified-contact; use contact_kind and the separate counters to distinguish its value and source.

Use the dataset views DM verified emails and Generic inboxes to review each channel; filter exports on decision_maker.email_sendable vs generic_email_sendable.

Send routing (send_decision)

Every dataset row includes an additive send_decision object that recommends what to do next in outbound — without changing billing. best_contact_email and the verified-contact event behave exactly as before.

FieldMeaning
send_decision.actionSEND_NOW, VERIFY_FIRST, ENRICH_MORE or SKIP
send_decision.risk_levellow, medium or high
send_decision.reasonsOrdered machine-readable reasons behind the action
send_decision.confidence0–1 confidence in the action (corroboration + identity)

Decision table

ActionWhen it firesTypical reasons
SEND_NOWNamed DM with SMTP-sendable work email, coherent identity, persona fit ≥ 0.40, positive public evidence, and corroboration (≥2 independent sources or recent on-domain evidence)dm_email_sendable, positive_evidence, identity_coherent, on_domain_recent, independent_sources
VERIFY_FIRSTSendable email exists but needs human review before a persona-specific sequencegeneric_inbox_only, identity_suspect, no_positive_evidence, below_persona_threshold, weak_corroboration
ENRICH_MOREPartial lead — DM without sendable email, phone-only, or persona below threshold with best_available auditdm_email_not_sendable, phone_present, below_persona_threshold
SKIPNo usable outbound path or company quarantinedcompany_excluded, no_contact_channel, identity_incoherent, no_usable_outbound_path

Proof-of-presence rule (Apify Academy): SEND_NOW requires corroborating evidence from a public page. A deliverable B2B-database email alone is not enough — those rows get VERIFY_FIRST with no_positive_evidence until a snippet or source link is present.

Send-gate v2: one off-domain mention is not enough to cold-send. SEND_NOW needs two independent sources (different hosts, or database + public page) or a recent on-domain page (evidence.observed_at inside the role TTL). Identity mismatch never becomes SEND_NOW, even with SMTP green.

Use the dataset view Send routing to filter on send_decision.action = SEND_NOW for proof-backed DM emails, or sort by outreach_score within each action bucket.

outreach_score (0–100) remains a composite utility score; send_decision is the explicit go/no-go layer on top.

Find CEO and founder emails from a company domain

To find a CEO email address when all you have is the company website, set targetPersona to the founder_ceo preset and paste the domains. The actor identifies the person holding the role, infers or retrieves the work email, and runs SMTP verification before returning it.

Executive fallback is on by default: on larger accounts where the CEO is unreachable, a senior functional leader is returned instead, flagged with its actual role. Set executiveFallback to false inside targetPersona to always prefer the functional leader.

Bulk B2B email finder from a domain list

Paste up to 600 domains per run. Every domain is processed independently, so a partial failure never blocks the batch. Domains with no billable deliverable are excluded from the dataset by default and listed for free in the FAILED_DOMAINS record of the key-value store — you never pay for a gap.

Export results as CSV, JSON, Excel or XML, or pull them straight from the Apify dataset API into your CRM or sequencer.

Capacity and reliability

The published 600-domain ceiling is tied to the current shard topology (25 domains per shard, up to 3 shards in parallel) and the one-hour Actor timeout. The 1,000-domain case remains a stretch target until a live soak proves its p95 wall time with safe headroom.

The current prior comes from two consecutive 100-domain runs: both succeeded with exact billing and no log leaks; p95 wall time was 747 seconds and the slowest observed shard was about 369 seconds.

Operators can reproduce the capacity model without spending anything:

$python3 scripts/reliability_soak.py --sizes 100,250,600,1000

Live mode is opt-in and refuses synthetic domains. It requires a real JSON domain file, an explicit size, and a spend ceiling:

python3 scripts/reliability_soak.py --live --size 100 --runs 3 \
--domains-file domains.json --max-spend-usd 50

The report records success rate, p50/p95 wall time, shard work vs wall timing, billing invariants, proxy/block counters, and log-leak checks under reports/. The harness never raises live shard concurrency automatically.

SMTP-verified work email finder with a deliverability gate

Every candidate email passes through a strict send gate: only addresses with verification result ok and quality good receive decision_maker.email_sendable: true (named DM) or generic_email_sendable: true (generic inbox). Catch-all, risky, and invalid addresses are flagged but not marked sendable, so you can filter them out of a campaign before they damage your sender reputation.

When mustHaveVerifiedEmail is enabled, ranking prioritizes decision makers with verified sendable emails. Generic inbox fallback still applies when no DM email verifies.

Contact identity checks

Name, role, email and LinkedIn URL come from different sources, so a partial match can otherwise arrive looking complete: a real person's name paired with a different person's LinkedIn profile, or a company page URL where a profile should be. identityStrictness cross-checks them — email local part and LinkedIn slug against the name, /in/ vs /company/ URLs, and the email domain against the one you asked for.

Default flag adds identity_status (coherent, suspect, incoherent) plus identity_flags, and lowers confidence when a check fails, so contradictory contacts rank last. Set enforce to discard them outright when mailing the wrong person costs more than a missing row. Legitimate group aliases are preserved: an address on the same brand under another TLD is not treated as a mismatch, and a holding-company domain only raises a soft flag.

Excluding companies you never want to contact

companyFilters.excludeCompanyTypes: ["recruitment_agency"] keeps recruitment and staffing intermediaries out of the results. This matters when you sell to employers: any list seeded from job ads is dense with agencies advertising on behalf of clients, and their names rarely give them away, so the actor reads the company's own pages instead of matching a blocklist.

companyFilters.requireCountryMatch: true drops domains whose suffix belongs to a different country than the one you gave for that row — a .edu or .de domain in a UK campaign — before any paid lookup runs.

Excluded companies never carry a contact email, so they cannot leak into your primary list — and they are not billed as results. Every verdict, with its reason, score and the signals behind it, lands in the EXCLUDED_COMPANIES record of the key-value store, free of charge. They enter the dataset only if you turn on pushEmptyResults, in which case they carry excluded: true, exclusion_reason and excluded_decision_maker for auditing.

company_type_verified: false means no page from the company could be read, so the verdict is "not checked" rather than "checked and clean". RUN_SUMMARY counts those under companyTypeUnverified.

Decision maker phone finder from company domains

When a named decision maker is found without a phone number, the actor runs a phone waterfall: EU imprint/legal-notice extraction first, then website contact-page crawl. Output distinguishes:

FieldTypical sourceUse
company_phoneEU imprint or same-site legal/contact pageCompany-level line — never claimed as the named person's direct number
company_phone_sendableTwilio line type + HLR (mobiles)Working switchboard / company line after live checks
decision_maker.phoneB2B database when linked to the personPerson-linked business phone; inspect source/confidence
decision_maker.mobileB2B database when exposedDirect mobile when available; often absent
decision_maker.phone_sendableTwilio + HLRPerson-linked number passed line-type and reachability
decision_maker.best_phoneDecision-maker recordBest person-linked number; does not include company_phone

verifyPhones (default on) checks up to two unique candidates per company and keeps searching if the first number is dead, toll-free or otherwise not sendable. A sendable company_phone is a working company line, not the CEO's personal mobile.

This is what separates the actor from email-only finders: for European companies in particular, the legally mandated imprint page is a reliable source of a working company number. It is returned separately as company_phone, because a switchboard is not the decision maker's direct mobile.

LinkedIn email finder from company domains

Input is company domains only — this is not a LinkedIn-URL scraper. When the B2B database or public web research exposes a LinkedIn profile for the selected decision maker, it is returned in decision_maker.linkedin_url alongside the SMTP-verified work email in decision_maker.email. Unlike LinkedIn-based email finders, you do not need LinkedIn profile URLs, logins, cookies or sessions — no LinkedIn page is scraped behind authentication.

European B2B contact finder — Italy, Germany, France, UK

Country handling is localized. Set defaultCountry, or attach a country per domain with {"domain": "acme.de", "country": "DE"}, and the actor adapts:

CountryLocalized behaviour
Italy (IT)contatti@ inbox patterns
Germany (DE)kontakt@ patterns, Impressum legal-notice phone and company data
France (FR)contact@ patterns, mentions légales lookup
Netherlands, Spain, IrelandLocalized inbox prefixes and EU legal-notice parsing
United Kingdom, United StatesStandard English inbox patterns and website contact crawl

How this compares to ZoomInfo, Clearbit, Lusha and RocketReach

This actorSeat-based B2B databases (ZoomInfo, Lusha, RocketReach)Enrichment APIs (Clearbit, Snov.io, UpLead)
PricingPay per delivered result, no subscriptionAnnual contract or monthly seatMonthly credit bundle
InputCompany domain onlyDomain, company name or personDomain or email
Names the decision makerYes, with role and seniorityYesPartially — often firmographics only
SMTP verification before deliveryYes, strict gateVariesVaries
Phone from EU legal noticeYesNoNo
Requires your own API keyNoYesYes
Minimum commitmentOne runAnnual / monthly planMonthly plan

Use this actor when you need domain-to-decision-maker enrichment in bursts without signing a seat contract. Use a full B2B database when you need a searchable universe of contacts, intent data and CRM-native workflows.

Pay-per-result alternative to subscription email finders

Subscription email finder tools — including Snov.io, Skrapp, Wiza, Findymail, Prospeo and Anymailfinder — charge monthly plans. Some support domain-only search, but those modes typically return multiple emails per domain without persona-based decision-maker selection. You pay for seats and lookups whether or not every contact verifies.

This actor is pay-per-delivered-result with no monthly seat. It is domain-first by design: it identifies the named decision maker by persona fit, applies a strict SMTP send gate, and runs a phone waterfall when needed. No third-party API keys are required from the user.

CapabilitySubscription email findersThis actor
Pricing modelMonthly subscription + per-lookup creditsPay per delivered domain result (+ verified-contact only for DM email)
InputPerson name + domain, LinkedIn URL, or domain searchCompany domain only — no name or LinkedIn URL required
Decision-maker selectionOften a list of emails per domain to sort yourselfNamed decision maker ranked by persona fit
SMTP verification gateVaries by tool; often pattern or catch-all tolerantStrict gate — email_sendable: true only when SMTP quality is good
Phone waterfallOften not includedEU imprint + website crawl when phone is missing
API keys neededUsually required (your account)None from the user (operator-side credentials)

Company domain to named B2B contact

Simple bulk paste (domainList):

{
"domainList": ["velasca.com", "satispay.com", "barilla.com"],
"defaultCountry": "IT",
"verifyEmails": true,
"aiDiscovery": true,
"targetPersona": {"mode": "preset", "preset": "founder_ceo"},
"includeGenericInbox": true
}

Advanced JSON with per-domain country (domains):

{
"domains": ["velasca.com", {"domain": "celonis.com", "country": "DE"}],
"verifyEmails": true,
"aiDiscovery": true,
"targetPersona": {"mode": "preset", "preset": "founder_ceo"},
"includeGenericInbox": true
}

Output fields match the dataset schema (snake_case). Key fields: has_decision_maker, decision_maker, decision_maker.email_sendable, generic_email_sendable, best_contact_email, contact_kind, send_decision, outreach_score, evidence, company_phone, decision_maker.phone, decision_maker.mobile, decision_maker.best_phone, has_contact.

B2B contact enrichment with verified email and phone

The run summary (key-value store RUN_SUMMARY) reports withDecisionMaker, withDmVerifiedEmail, withGenericVerifiedEmail, withVerifiedContactEmail, withContactChannel, paidRows and verifiedContactCharges. esr is deliberately email-only (verified DM or generic inbox over in-scope domains); phone-only rows count under withContactChannel, not ESR. Quality counters include excludedCompanies, companyTypeUnverified and identityIncoherent. Domains with no billable deliverable are listed in FAILED_DOMAINS, and companies quarantined by companyFilters in EXCLUDED_COMPANIES — both at no charge when pushEmptyResults is false.

Work email and phone finder with deliverability check

Decision maker email + phone enrichment from domain lists — any industry, any country. Database-first, AI web research for misses, SMTP verification, phone waterfall for gaps.

No third-party enrichment API keys are required from the user — all upstream credentials are operator-side.

Ready-to-run examples

Each example is a pre-configured task you can run without touching the input schema.

ExampleWhat it does
Find CEO and founder emails from Italian company domainsItalian B2B domains, founder_ceo persona
Find founder and CEO emails from German company domainsGerman domains, Impressum phone lookup
Verify decision maker emails with SMTPStrict deliverability mode for outbound teams
Find CEO email from a company domainThe core use case, global coverage
Find VP Sales email from company domainssales_leader persona for sales-tool vendors
Find operations and logistics decision makersops_logistics persona for supply-chain vendors
Find company phone numbers from domainsPhone waterfall focus
Bulk B2B email finder from a domain listBatch enrichment with verified-email ranking

Browse them all in the Examples tab of this actor.

Use from Claude, ChatGPT and AI agents (MCP)

Connect the Apify MCP server in Claude, ChatGPT, or another MCP-capable agent, then call this actor with natural language. Example prompt: "Find CEO emails and phones for these company domains: acme.com, globex.io, initech.com — only include rows where decision_maker.email_sendable is true." Results arrive as structured JSON matching the dataset schema (has_decision_maker, decision_maker.email_sendable, generic_email_sendable, and related fields).

Automate with n8n, Make and Zapier

Run this actor from n8n or Make using the native Apify nodes — trigger on a new domain list, run the actor, and route verified contacts to any CRM or outreach tool. You can also connect via Apify's Zapier integration. A typical n8n flow: spreadsheet of domains → run this actor → filter rows where decision_maker.email_sendable is true for persona-specific outreach, or generic_email_sendable is true for company-level fallback → send to outreach.

Typical workflow

StepActorWhen
1. Discover domainsLookalike Discovery or Social LeadsYou need store/company domains first
2. Enrich contactThis actorYou have domains and need decision maker email + phone
3. Enrich shippingShipping IntelligenceYou also need carriers, returns portal, free-shipping threshold

Use via Python API, JavaScript API, or MCP.

Example output

{
"domain": "example-b2b.com",
"country": "US",
"has_decision_maker": true,
"has_contact": true,
"best_contact_email": "jane.smith@example-b2b.com",
"outreach_score": 87,
"send_decision": {
"action": "SEND_NOW",
"risk_level": "low",
"reasons": ["dm_email_sendable", "positive_evidence", "identity_coherent"]
},
"evidence": [
{
"type": "web_snippet",
"url": "https://example-b2b.com/about",
"snippet": "Jane Smith, CEO"
}
],
"decision_maker": {
"full_name": "Jane Smith",
"role": "CEO",
"seniority": "c_suite",
"email": "jane.smith@example-b2b.com",
"email_sendable": true,
"email_status": "ok",
"email_quality": "good",
"best_phone": "+1 555 0100",
"linkedin_url": "https://linkedin.com/in/janesmith",
"source": "b2b_database",
"confidence": "high"
}
}

How to use it step by step

  1. Click Try for free and paste your company domains into domainList (one per line), or use the advanced domains JSON when countries differ per row.
  2. Pick your buyer with targetPersonafounder_ceo for CEO and founder emails, sales_leader for VP Sales, ops_logistics for supply-chain buyers.
  3. Leave Verify email deliverability and AI web research enabled for the best coverage.
  4. Optionally set Default country so localized inbox patterns and EU legal-notice lookups apply.
  5. Run the actor and watch the dataset fill, one row per domain.
  6. Export as CSV, JSON or Excel, or read the dataset from the Apify API, webhook or MCP integration.

Cost estimate

Pay-per-event on Apify Console — you pay for what is delivered, not for a seat.

EventFree / StarterScale (−10%)Business (−20%)Charged when
Domain result$0.06$0.055$0.05A domain row is delivered to the dataset
Verified email contact$0.14$0.125$0.11best_contact_email contains a verified DM work email or verified generic company inbox
Actor start$0.00005 per GBThe run starts

Billing contract: the verified-contact event applies whenever a row carries a verified, sendable email in best_contact_email — either a decision-maker work email or a verified generic company inbox. Phone-only rows (company line or direct mobile, no sendable email) bill the base rate only.

Store discounts: prices follow your Apify plan automatically — Scale plans pay ~10% less and Business plans ~20% less on both result events. Nothing to configure.

Automatic volume discount: within a single run, the first 250 verified contacts bill at list price; beyond that, every second verified contact is free — a 50% discount on all additional contacts. The discount is applied by charging fewer verified-contact events, so it shows up directly on your run bill.

A domain with any verified email contact therefore costs $0.20 ($0.06 + $0.14) on Free/Starter plans, $0.16 on Business. A 100-domain run with a 40% DM-verified rate and 50% generic-inbox-only rate costs roughly $0.06 × 100 + $0.14 × 90 = $18.60. A 415-domain run with 350 verified contacts costs $0.06 × 415 + $0.14 × 300 = $66.90 ($73.90 without the volume discount). Empty domains are excluded from the paid dataset by default and listed free of charge in FAILED_DOMAINS. Companies quarantined by companyFilters are also excluded from the paid dataset by default (listed free in EXCLUDED_COMPANIES) — you do not pay for the rows you asked us to reject. companyFilters.excludeCompanyTypes adds one search per domain to read the company's own pages; requireCountryMatch costs nothing and saves lookups by rejecting off-market domains first. There is no monthly seat fee and no minimum commitment.

FAQ

How can I find a CEO's email address if I only have the company domain? Paste the domain into domainList (one per line) or the domains JSON array and set targetPersona to the founder_ceo preset. The actor searches B2B databases and the public web to identify the person holding the role, infers or retrieves their work email, and verifies it over SMTP before returning it with decision_maker.email_sendable: true.

How do I find decision makers in a company from just a website domain? Domain-only input is the design of this actor. It resolves the company behind the domain, ranks the senior people it can evidence in public sources against your target persona, and returns the best match with role, seniority and confidence.

How can I verify that a decision maker's email is valid and deliverable? Keep verifyEmails enabled. Every candidate goes through an SMTP-level check, and only addresses with status ok and quality good come back with decision_maker.email_sendable: true. Generic inboxes use generic_email_sendable separately.

What does SMTP-verified email mean and why does it matter for cold outreach? SMTP verification asks the receiving mail server whether the mailbox exists before you send anything. It filters out invalid and risky addresses, which keeps bounce rates low and protects your sending domain reputation.

How can I find a company's phone number from their domain? The phone waterfall runs when there is no sendable number yet — including when the database phone is an Italian 800 / green number or otherwise not usable for outbound. EU imprint plus the internal same-site crawler, then Exa only for residual misses. Read company_phone for the company line and decision_maker.mobile / decision_maker.phone only for person-linked database numbers.

What is the best way to enrich a list of 500 company domains in bulk? Paste all 500 in one run (the certified ceiling is 600). Enable verifyEmails and aiDiscovery, leave pushEmptyResults off so you are not charged for gaps, and export the dataset when the run finishes.

How much does it cost to process 1,000 company domains? Split them into two runs of 500 to maximise the volume discount. Pricing is $0.06 per delivered domain plus $0.14 for every row with a verified email in best_contact_email — and within each run, verified contacts beyond the 250th bill only every second one. Across 1,000 delivered domains with 900 verified email contacts (450 per run), the result events cost $60 + $0.14 × (250 + 100) × 2 = $158 instead of $186 at list price (plus the negligible Actor-start events). Scale and Business plans pay 10–20% less on top.

Do I need my own API key or a third-party subscription to use this actor? No. You provide domains only. Verification and research credentials are configured server-side by the operator, so there is nothing to sign up for beyond Apify.

How is this different from a cheap bulk email finder? Bulk finders often verify email patterns without identifying the decision maker. This actor discovers the named person, role, email and phone first, then verifies email deliverability, so you know who you are writing to.

Which decision maker personas can I target? CEO/founder, sales, marketing, operations/logistics, procurement, finance, tech, HR, ecommerce owner — or custom title keywords via targetPersona.

Does it work outside ecommerce? Yes — any B2B company domain worldwide. The persona presets cover general B2B roles across SaaS, manufacturing, logistics, professional services, retail and healthcare.

How many domains can I process per run? Up to 600 domains per input. The actual count may be capped further by your Apify spending limit.

What happens when no contact is found for a domain? The domain is listed in FAILED_DOMAINS in the key-value store. A company you asked us to quarantine via companyFilters is not a failure, so it goes to EXCLUDED_COMPANIES instead, with the reason and the evidence. Neither is charged as a dataset item unless pushEmptyResults is true. A non-sendable generic inbox alone (for example info@ that failed SMTP verification) is treated as empty and is not billed.

Can I get a decision maker's direct phone number? Sometimes. decision_maker.mobile is a direct mobile when the person-data source exposes one; decision_maker.phone is a person-linked business number. Imprint and website numbers are deliberately kept separate in company_phone and must not be presented as the decision maker's direct line.

Does it verify emails with SMTP before returning them? Yes, whenever verifyEmails is true, which is the default.

Can I use it as an alternative to a ZoomInfo, Lusha or Clearbit subscription? For domain-to-contact enrichment, yes — you get the named decision maker, verified email and phone without a seat licence or annual contract. For searchable contact universes and intent data, a full B2B database remains the better fit.

What happens if the actor cannot find the CEO of a large company? Executive fallback returns the most senior reachable functional leader instead, labelled with their real role. Disable it in targetPersona if you only want exact-persona matches.

Are the names and emails invented or inferred? Names are never invented: every person returned must appear with their role in a public source. Email addresses may be pattern-inferred when no address is published, but they are only marked sendable after passing SMTP verification.

How do I get the results into my CRM or sequencer? Export CSV, JSON, Excel or XML from the dataset, call the Apify dataset API, subscribe to a run webhook, or connect the actor through MCP or the Python and JavaScript clients.

Do I need a paid Apify plan to run this actor? Free-plan users on the Apify platform can run a limited free trial: up to 5 domains per run and 5 domains per UTC calendar day, with the full product (verifyEmails + enrichment). Paid Apify plans have no trial caps. Upgrade at Apify pricing for unlimited usage.

Is scraping business contact data legal? The actor only reads publicly available business information. You remain responsible for how you use it, including compliance with GDPR, CAN-SPAM and local outbound marketing rules in the countries you contact.

Is there a pay-per-result alternative to subscription email finder tools like Snov.io or Skrapp? Yes. This actor charges per delivered result with no monthly plan. You provide company domains only; it identifies the named decision maker by persona fit and applies a strict SMTP send gate before marking an address sendable. Verified generic inboxes remain clearly labeled through contact_kind.

Can I run this from n8n, Make or Zapier? Yes. Use the native Apify nodes in n8n or Make to trigger runs from domain lists and route output to your stack, or connect via Apify's Zapier integration.

Can AI agents like Claude or ChatGPT use this actor? Yes. Connect the Apify MCP server and ask the agent to find decision maker emails for a list of domains; results return as structured JSON matching the dataset schema.

This actor collects publicly available business contact information — the kind published on company websites, legal-notice pages and professional directories. It does not access private accounts and requires no login credentials from you.

You are the data controller for anything you export. Before running an outbound campaign, check that you have a lawful basis under GDPR (or the equivalent local regime), honour opt-out requests, and follow the anti-spam rules of the countries you contact.

Pequod ecommerce pipeline

Related: Discover offline/local prospects with the Google Maps lead scraper with website emails.

StepActorWhen
1. DiscoverInstagram TikTok Shop LeadsHashtag-driven social sellers
1. DiscoverLookalike DiscoveryDomain/niche-based stores
2. Enrich contactDecision Maker FinderName, role, verified email & phone
3. Enrich shippingShipping IntelligenceCarriers, returns, thresholds