Email Finder & Verifier avatar

Email Finder & Verifier

Pricing

Pay per event

Go to Apify Store
Email Finder & Verifier

Email Finder & Verifier

Find and verify business email addresses using SMTP verification, pattern matching, and catch-all detection. Three modes: verify emails, find by name+domain, discover domain emails. Includes confidence scoring, disposable/free detection, and provider identification.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

9

Monthly active users

11 days ago

Last modified

Share

Find and verify business email addresses using SMTP-level verification, pattern matching, disposable/role detection, and provider identification. Provide a person's name and company domain to find their email, verify existing email lists, or discover all emails on a domain.

What does Email Finder & Verifier do?

Email Finder & Verifier is an Apify Actor that finds and validates email addresses through multi-layer verification powered by MillionVerifier. It supports three modes: find emails from a person's name + company domain, verify existing email addresses, and discover all emails on a domain. Every result includes a confidence score (0-100), catch-all detection, and provider identification.

The Actor performs up to 9 verification layers: syntax validation, disposable domain detection, free provider detection, role account detection, MX record verification, provider identification, catch-all detection, SMTP mailbox verification, and confidence scoring.

Use cases

  • Sales prospecting - Find decision-maker emails by providing their name and company domain. The Actor tests 14 common corporate email patterns and verifies each one at the SMTP level.
  • Email list cleaning - Verify existing email lists before sending campaigns. Remove invalid, disposable, and risky addresses to protect your sender reputation and reduce bounce rates.
  • CRM enrichment - Enrich your CRM contacts with verified email data, confidence scores, provider detection, and deliverability signals.
  • Lead generation - Find contact emails for target companies. Discover role-based addresses (info@, sales@, support@) across domains.
  • Recruitment - Find candidate email addresses from company domains to reach potential hires directly.

Why use Email Finder & Verifier?

  • Three modes in one tool - Find by name+domain, verify existing emails, or discover domain emails
  • 9-layer verification - Syntax, disposable, free, role, MX, provider, catch-all, SMTP, confidence scoring
  • Real SMTP verification - Verifies at the mailbox level to confirm the email actually exists
  • Confidence scoring - Every result gets a 0-100 quality score based on verification depth
  • Smart detection - Flags disposable, free, catch-all, and role-based email addresses
  • 14 email patterns - Tests the most common corporate email formats, covering 95%+ of businesses
  • Provider identification - Detects Google Workspace, Microsoft 365, Yahoo, Zoho, ProtonMail, and more
  • Pay per result - Only charged for emails with confidence >= 50

What data can you extract?

FieldTypeDescription
emailstringThe email address (verified or best guess)
firstNamestringFirst name (when finding emails for contacts)
lastNamestringLast name (when finding emails for contacts)
domainstringEmail domain
isValidFormatbooleanWhether the email passes RFC 5322 syntax validation
hasMxRecordsbooleanWhether the domain has valid MX (mail server) records
isVerifiedbooleanWhether SMTP verification confirmed the mailbox exists
isCatchAllbooleanWhether the domain accepts all emails (catch-all)
isDisposablebooleanWhether the domain is a disposable/temporary email provider
isFreeProviderbooleanWhether the domain is a free email provider (Gmail, Yahoo, etc.)
isRoleAccountbooleanWhether the local part is a role account (admin, support, info, etc.)
confidenceScorenumberQuality score from 0-100 based on verification results
verificationMethodstringDeepest verification performed: format, mx, or smtp
mvResultstringMillionVerifier result: ok, catch_all, invalid, disposable, unknown, or error
mvQualitystringMillionVerifier quality: good, risky, or bad
mxHoststringMail server hostname used for verification
providerstringDetected provider (google_workspace, microsoft_365, yahoo, etc.)
patternsTriednumberNumber of email patterns tested (contact finder mode)
verificationTimeMsnumberTime taken for verification in milliseconds

How much does it cost?

Email Finder & Verifier uses pay-per-event pricing. You pay a small start fee per run plus a per-email fee for each result with confidence >= 50.

EventPrice
Actor start$0.001
Email verified (confidence >= 50)$0.008

Confidence score thresholds:

Verification resultTypical confidenceCharged?
SMTP verified (non catch-all)95Yes
Catch-all domain60Yes
Catch-all + role account50Yes
MX verified (no API key)45No
Role account (MX only)35No
Format only30No
Disposable email0-10No
Invalid email0-5No

Cost examples:

ScenarioEmailsCost
Verify 100 emails (80% valid)100$0.001 + (80 × $0.008) = $0.641
Verify 1,000 emails (70% valid)1,000$0.001 + (700 × $0.008) = $5.601
Find 50 contacts by name50$0.001 + (~40 × $0.008) = $0.321
Discover emails on 10 domains~140$0.001 + (~80 × $0.008) = $0.641

How to find and verify emails

Mode 1: Verify existing emails

  1. Open Email Finder & Verifier on Apify Console
  2. Enter email addresses in the "Email addresses to verify" field
  3. Set verification level (default: smtp)
  4. Click "Start"
  5. Each email is checked for syntax, MX records, provider, disposable/role status, and SMTP mailbox verification

Mode 2: Find emails by name + domain

  1. Enter contacts as JSON in the "Contacts to find emails for" field:
    [
    { "firstName": "John", "lastName": "Smith", "domain": "example.com" },
    { "firstName": "Jane", "lastName": "Doe", "domain": "company.io" }
    ]
  2. The Actor generates up to 14 common email patterns per contact
  3. Each pattern is verified via SMTP until a valid one is found
  4. Results include the best-match email and confidence score

Mode 3: Discover domain emails

  1. Enter domains in the "Domains to discover emails for" field
  2. The Actor tests common role addresses (info@, contact@, support@, admin@, sales@, etc.)
  3. All verified addresses are returned with confidence scores

Input parameters

ParameterTypeDefaultDescription
emailsstring[][]List of email addresses to verify
contactsobject[][]List of contacts with firstName, lastName, and domain
domainsstring[][]List of domains to discover emails for
verificationLevelstring"smtp"Verification depth: format, mx, or smtp
detectCatchAllbooleantrueWhether to detect catch-all domains
maxPatternsToTestinteger8Max email patterns to test per contact (1-14)

Output examples

SMTP-verified email:

{
"email": "hello@apify.com",
"domain": "apify.com",
"isValidFormat": true,
"hasMxRecords": true,
"isVerified": true,
"isCatchAll": false,
"isDisposable": false,
"isFreeProvider": false,
"isRoleAccount": true,
"confidenceScore": 85,
"verificationMethod": "smtp",
"mxHost": "aspmx.l.google.com",
"provider": "google_workspace",
"mvResult": "ok",
"mvQuality": "good",
"verificationTimeMs": 169
}

Invalid email:

{
"email": "nonexistent@gmail.com",
"domain": "gmail.com",
"isValidFormat": true,
"hasMxRecords": true,
"isVerified": false,
"isCatchAll": false,
"isDisposable": false,
"isFreeProvider": true,
"isRoleAccount": false,
"confidenceScore": 5,
"verificationMethod": "smtp",
"mxHost": "gmail-smtp-in.l.google.com",
"provider": "google_workspace",
"mvResult": "invalid",
"mvQuality": "bad",
"verificationTimeMs": 238
}

Contact finder result:

{
"email": "ondra@apify.com",
"firstName": "Ondra",
"lastName": "Urban",
"domain": "apify.com",
"isValidFormat": true,
"hasMxRecords": true,
"isVerified": true,
"isCatchAll": false,
"isDisposable": false,
"isFreeProvider": false,
"isRoleAccount": false,
"confidenceScore": 95,
"verificationMethod": "smtp",
"mxHost": "aspmx.l.google.com",
"provider": "google_workspace",
"patternsTried": 3,
"mvResult": "ok",
"mvQuality": "good",
"verificationTimeMs": 1482
}

Tips for best results

  • Use SMTP level - The default smtp level gives the most accurate results with confidence scores up to 95.
  • Batch contacts by domain - The Actor caches MX records per domain, so grouping contacts by company domain is more efficient.
  • Understand catch-all domains - Some domains accept all emails regardless of the local part. The isCatchAll flag and mvResult: "catch_all" let you decide how to handle them.
  • Check isDisposable - Disposable email addresses (Mailinator, Guerrilla Mail, etc.) are detected and scored near 0. Filter these out for sales and marketing use cases.
  • Use maxPatternsToTest - For large batches, reduce patterns to test (default: 8) to speed up processing. For high-value targets, increase to 14 for maximum coverage.
  • Filter by confidence - Use confidenceScore >= 50 as a threshold for reliable emails. Scores below 50 indicate unverified or problematic addresses.

Integrations

Email Finder & Verifier works with all major automation platforms:

  • Make (Integromat) - Trigger email verification from Make scenarios
  • Zapier - Connect to 5,000+ apps
  • n8n - Self-hosted workflow automation
  • GitHub Actions - CI/CD email verification
  • Slack - Get notifications when runs complete

Using the Apify API

You can start Email Finder & Verifier programmatically using the Apify API.

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
// Verify emails
const run = await client.actor('automation-lab/email-enrichment').call({
emails: ['john@company.com', 'jane@startup.io'],
verificationLevel: 'smtp',
detectCatchAll: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
# Find emails for contacts
run = client.actor("automation-lab/email-enrichment").call(run_input={
"contacts": [
{"firstName": "John", "lastName": "Smith", "domain": "company.com"},
{"firstName": "Jane", "lastName": "Doe", "domain": "startup.io"},
],
"verificationLevel": "smtp",
"detectCatchAll": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
for item in items:
print(f"{item['email']}: {item['confidenceScore']}/100")

FAQ

What verification levels are available? The Actor supports three levels: format (syntax only), mx (MX record check), and smtp (full SMTP-level mailbox verification via MillionVerifier API). Default is smtp.

What does the confidence score mean? The score ranges from 0 to 100. Score 95 means SMTP-verified on a non-catch-all domain. Score 60 means catch-all domain. Score 45 means MX records verified but no SMTP check. Score 30 means only format was validated. Disposable emails score near 0, and role accounts get a 10-point penalty.

What is a catch-all domain? A catch-all domain is configured to accept emails sent to any address, even if the mailbox doesn't exist. MillionVerifier detects this automatically. Catch-all results get a confidence of 60 because the email might exist but can't be confirmed.

How many emails can I verify per run? There is no hard limit. The Actor processes emails sequentially with each verification taking 100-500ms via the MillionVerifier API.

What does mvResult mean? The mvResult field shows the MillionVerifier verification result: ok (mailbox exists), catch_all (domain accepts everything), invalid (mailbox doesn't exist), disposable (temporary email service), unknown (couldn't determine), or error (verification failed).