Email Finder Bulk — Lists of Domains or People to Emails avatar

Email Finder Bulk — Lists of Domains or People to Emails

Pricing

from $4.75 / 1,000 email founds

Go to Apify Store
Email Finder Bulk — Lists of Domains or People to Emails

Email Finder Bulk — Lists of Domains or People to Emails

Find published contact emails from company websites and work-email candidates from names and company domains. Get source, confidence, status, and role fields. Run with domains or people input; no API key or login. Pricing: $0.0049 per email-found event.

Pricing

from $4.75 / 1,000 email founds

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

176

Total users

11

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

Bulk Email Finder for Domains and People

Email Finder Bulk uses Mode A (people) to find work-email candidates from a name and company domain, and Mode B (domains) to harvest published emails from company websites. Free-plan accounts process 10 people and 3 domains per run, up to 2 pages per domain, at $0.0049 per email-found event on Free.

  • Harvest emails from contact pages, mailto links, and page footers.
  • Return a best candidate with ranked alternatives, source, and confidence.
  • Build outreach lists, enrich CRM records, and research leads.
  • No third-party API key or website login is needed; runs start from your Apify account. Cross-list deduplication is enabled by default.
  • Mode A tries SMTP verification and falls back to a ranked unverified_guess when port 25 is unavailable or verifySmtp is false.

What you get

The Actor returns one flat dataset row per email. A field is null when its source does not provide it.

FieldTypeWhat it containsMode or values
domainstringMode A normalized domain; Mode B supplied entry, trimmed and lowercased, so a URL remains a URL. Never null or emptyBoth
emailstringFound or generated address; never null or emptyBoth
first_namestringAssociated first name; null for Mode BPeople; null for Mode B
last_namestringLast name, or null when absent, not derived, or Mode BPeople or null
email_sourcestringHow the email was reached; never null or emptymailto, contact_page, website_body, name_pattern, smtp_verified
confidencenumberScore from 0 to 1. Mode A: verified 0.90–1.0, accept_all ≤0.55, unverified_guess ≤0.45, no_valid_pattern ≤0.10, no_mx ≤0.05. Never nullBoth
duplicate_flagbooleanWhether a repeat is emitted when deduplication is disabledtrue or false
statusstringResult state; never null or emptyverified, accept_all, unverified_guess, no_valid_pattern, no_mx, harvested
is_role_accountbooleanWhether the address is shared, such as info@ or support@Both
is_disposablebooleanDisposable-address flagBoth
mx_foundbooleanWhether an MX record was found; null for harvested rowsMode A boolean; Mode B null
verification_methodstringVerification approachsmtp for verified, accept_all, no_valid_pattern; mx_pattern for unverified_guess; none for Mode B and no_mx
on_domainbooleanWhether the email domain matches the site domainBoth
alternative_emailsarray of objectsRanked person candidates; empty for Mode B, or up to maxAlternatives for Mode Aemail, pattern, confidence, smtpStatus, smtpCode
parse_confidencenumberAcquisition reliability. Mode B: 0.95 mailto, 0.85 contact_page, 0.70 website_body. Mode A: 1.0, 0.9 when port 25 cannot connect, 0.5 on no_mx. Never nullBoth
input_modestringMode that produced the rowpeople or domains
scraped_atISO 8601 stringUTC run-processing timestamp, shared by all rowsTimestamp string

Sample output

Example dataset record (Mode B, input_mode domains). Each charged row is one email-found event; see Pricing.

{
"domain": "diverxo.com", "email": "info\u0040diverxo.com",
"first_name": null, "last_name": null,
"email_source": "mailto", "confidence": 0.92,
"duplicate_flag": false, "status": "harvested",
"is_role_account": true, "is_disposable": false,
"mx_found": null, "verification_method": "none",
"on_domain": true, "alternative_emails": [],
"parse_confidence": 0.95, "input_mode": "domains",
"scraped_at": "2026-10-30T01:23:32Z"
}

Pricing

  • Mode A: one email-found event per row with an email and status verified, accept_all, unverified_guess, no_valid_pattern, or no_mx, including guesses.
  • Mode B: one event per row with confidence of at least 0.5; harvested rows score 0.59–0.95.
  • Rows without an email and repeats collapsed while deduplicateEmails is true are not charged.
  • With deduplicateEmails set to false, repeats are kept with duplicate_flag=true and charged.

You pay only for the events below. This Actor does not use Pay per event + usage, so platform usage for runs (compute, proxy traffic, and storage) is not billed separately.

PlanPrice
Free$0.0049 per email-found event
Bronze$0.004851 per email-found event
Silver$0.004802 per email-found event
Gold$0.004753 per email-found event
Platinum$0.004704 per email-found event
Diamond$0.004655 per email-found event

Examples: 1,000 results cost $4.90 on Free; 10,000 results cost $49.00 on Free.

A Free-plan run is capped at 10 people and 3 domains, so totals like these take several runs.

The Apify Free plan includes $5 of monthly platform usage credit; the $5 credit covers 1,020 email-found events at $0.0049 per email-found event on Free ($4.998 on Free).

How to use

  1. Prepare a domains list, a people list, or both.
  2. Add options for deduplication, domain limits, SMTP verification, alternatives, and output limits.
  3. Configure proxyConfiguration for Mode B; the default uses Apify Proxy with the RESIDENTIAL group.
  4. Start the Actor run from your Apify account.
  5. Review email_source, confidence, status, and verification_method.
  6. Repeat the run through Apify Schedules; weekly is a reasonable starting point for refreshing lead lists.
{
"domains": ["stripe.com", "notion.so"],
"people": [{"firstName": "Patrick", "lastName": "Collison", "domain": "stripe.com"}],
"deduplicateEmails": true,
"maxPerDomain": 3,
"verifySmtp": true,
"maxAlternatives": 5,
"maxItems": 0,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Export the dataset as JSON or CSV, or read it through the Apify dataset API.

Input parameters

ParameterWhat it doesDefault
domainsMode B domains or website URLs for harvesting published emails—
peopleMode A people; each needs domain and firstName or fullName; lastName or surname is optional—
deduplicateEmailsCollapses the same email across inputs; repeats receive duplicate_flag=true when disabledtrue
maxPerDomainCaps harvested emails per domain; integer from 1 to 503
verifySmtpAttempts live SMTP verification in Mode A; otherwise uses MX and pattern rankingtrue
maxAlternativesRanked candidates per person; integer from 0 to 125
smtpTimeoutSecsTimeout for each SMTP connection; integer from 2 to 20 seconds5
maxItemsTotal output cap; 0 means no limit0
proxyConfigurationProxy used to reach Mode B websitesApify Proxy with RESIDENTIAL
disableUsageStatsTurns off the run summary described in Usage statistics when truefalse

Values outside the ranges for maxPerDomain, maxAlternatives, or smtpTimeoutSecs are clamped to the nearest bound; the run does not fail.

Limits and edge cases

ConditionWhat you seeWhat to do
Neither mode has valid inputThe no_input run writes OUTPUT {"error":"no_input"}, ends as Succeeded, and has an empty datasetProvide valid input
A Mode A entry lacks domain or a name, or a Mode B domain is empty or has no dotThe entry is dropped; the log shows Dropped N invalid people or Dropped N invalid domainsSupply valid input
A Mode A domain has no dotThe entry is not dropped at input. It returns invalid_input with no email, no row, no charge, and no warning; skipped in OUTPUT includes itUse a dotted domain
More than 5,000 people or domains are suppliedEach list is capped at 5,000; the cap is applied firstSplit the workload
Free plan receives more than 10 people or 3 domainsOnly the first 10 people and 3 domains are processedKeep within the limits
A harvested domain has no eligible publicly available emailNo row or chargeCheck the domain
A use involves publicly available contact informationThe Actor extracts public data from company websites and uses domain mail records for Mode A checksCheck the target site's ToS and applicable law for your use case
A Mode B page fetch fails or is blockedThe page is skipped and the run continues. If no fetched page has an eligible email, the log shows <domain>: no emails found. and the run still ends as Succeeded. If the homepage fails, no other page is tried. The reason is not recorded; OUTPUT contains counts only—
SMTP is enabled but port 25 is unavailable, or verifySmtp=falseMode A returns unverified_guess with mx_pattern, confidence at most 0.45, and one charged eventCheck alternative_emails
A Mode A domain accepts any addressReturns accept_all, confidence at most 0.55, verification_method smtp, and one charged eventUse alternative_emails
SMTP works but no candidate is acceptedReturns no_valid_pattern, confidence at most 0.10, verification_method smtp, and one charged eventUse alternative_emails
A person's domain has no resolvable mail serverReturns a charged no_mx row with the top pattern as email; no MX and no A record was found, or DNS failed or timed outCheck the domain
A normal run endsOUTPUT contains only totalItems, peopleProcessed, domainsProcessed, duplicatesCollapsed, skipped, and scrapedAtRead the dataset
Rows are saved during a runRows reach the dataset in batches of 100 and once more at the end; each batch is charged after it is pushedRead saved batches
A run is aborted, times out, or fails after rows are pushedPushed rows remain. Up to 99 rows waiting in the current batch are not saved or charged, and OUTPUT is not writtenCheck saved batches
Mode B runs on the Free planUp to 2 pages per domain are used; paying accounts can use up to 4. maxPerDomain still limits returned rowsAdjust the account or split the workload

FAQ

How much does it cost to scrape company domains?

Free costs $0.0049 per email-found event; 1,000 results cost $4.90 on Free. See Pricing for all plan-labelled rates.

What happens when no email is found?

A Mode B domain with no published email produces no row and no charge. A Mode A person whose domain has no resolvable mail server gets a charged no_mx row with the top-ranked pattern as email.

Why might SMTP verification not work?

Mode A falls back to MX and pattern ranking when outbound port 25 is unavailable or verifySmtp is false; see Limits and edge cases.

The Actor extracts publicly available contact information published on company websites and uses domain mail records for Mode A checks. Whether a use is legal or allowed depends on applicable law, the target site's ToS, and your use case.

Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.

To opt out, set disableUsageStats to true in the input. Nothing is sent then.

Full list of collected fields

⌂ 换网址