Email Finder & Verifier – Company Emails by Domain avatar

Email Finder & Verifier – Company Emails by Domain

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Email Finder & Verifier – Company Emails by Domain

Email Finder & Verifier – Company Emails by Domain

Find company emails by domain or person name and verify them (syntax, MX, disposable). Scrapes contact pages for emails & phones. For lead gen, cold outreach & recruiting.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

15 days ago

Last modified

Share

Email Finder & Verifier – Find Company Emails by Domain (No API Key)

Email Finder & Verifier turns a list of company domains into business email addresses with a deliverability check for each one. In Discover mode it scans a company's homepage and contact, about, team and imprint pages for published emails (including mailto: links and obfuscated name [at] domain [dot] com addresses) and tel: phone numbers. In Guess mode it builds the 7 most common corporate email patterns for a person (john.doe@, jdoe@, john@, …). Every email is checked for valid syntax, MX records (via Google DNS-over-HTTPS) and disposable providers. No API key, no subscription, and you pay only per result.

Ideal for sales teams, SDRs, recruiters, growth marketers and agencies who need a cheap, scriptable alternative to Hunter.io-style email finders for B2B lead generation and cold outreach.

What data can you extract?

FieldExampleDescription
typeemailemail or phone row
emailhello@apify.comEmail address found or guessed (lowercased)
sourcediscovereddiscovered (found on a web page) or guessed (pattern)
statusmx_okmx_ok = valid syntax and the domain accepts mail, no_mx = domain has no MX records, invalid_syntax
mx_foundtrueDomain publishes MX records
mx_hostaspmx.l.google.comHighest-priority mail server (shows Google Workspace, Microsoft 365, …)
syntax_validtrueAddress passes strict syntax validation
disposablefalseDomain is a known throwaway provider (Mailinator, Yopmail, …)
domainapify.comEmail domain
found_on_urlhttps://apify.com/contactPage where the email or phone was found (Discover mode)
pattern{first}.{last}Pattern used to build the address (Guess mode)
personJohn DoePerson the address was guessed for (Guess mode)
phone+14155550100Phone number from a tel: link (phone rows only)
scraped_at2026-10-15T18:04:25+00:00UTC timestamp

How to use the Email Finder

  1. Enter one or more company domains (stripe.com, https://www.apify.com/about – scheme, www. and path are stripped automatically).
  2. Pick a mode:
    • Discover – scrape the pages listed in Pages to scrape (default /, /contact, /about, /impressum, /team) for real emails and phone numbers.
    • Guess – enter a first name and/or last name to generate and MX-check the common corporate patterns at each domain.
  3. Click Start and download the results as CSV, Excel or JSON, or push them to Google Sheets, your CRM, Make, Zapier or n8n.

Example input (Discover):

{
"mode": "discover",
"domains": ["stripe.com", "apify.com"],
"pages": ["/", "/contact", "/about", "/impressum", "/team", "/kontakt"],
"maxItems": 100
}

Example input (Guess):

{
"mode": "guess",
"domains": ["stripe.com"],
"firstName": "John",
"lastName": "Doe"
}

Output example

Real output from local test runs – a discovered email and a guessed email:

[
{
"email": "hello@apify.com",
"source": "discovered",
"pattern": null,
"domain": "apify.com",
"mx_found": true,
"mx_host": "aspmx.l.google.com",
"syntax_valid": true,
"disposable": false,
"status": "mx_ok",
"found_on_url": "https://apify.com/contact",
"person": null,
"scraped_at": "2026-10-15T18:04:25.701904+00:00",
"type": "email"
},
{
"email": "john.doe@stripe.com",
"source": "guessed",
"pattern": "{first}.{last}",
"domain": "stripe.com",
"mx_found": true,
"mx_host": "aspmx.l.google.com",
"syntax_valid": true,
"disposable": false,
"status": "mx_ok",
"found_on_url": null,
"person": "John Doe",
"scraped_at": "2026-10-15T18:04:38.672540+00:00",
"type": "email"
}
]

Phone rows look like {"type": "phone", "phone": "+4930123456", "domain": "…", "found_on_url": "…", "scraped_at": "…"}. Discover mode reports every email published on the page, so you may also see third-party or placeholder addresses (e.g. @example.com, marked no_mx) – filter on domain and status to keep only the ones you need.

How verification works

Many "verifiers" try an SMTP RCPT TO handshake, which is routinely blocked, greylisted or answered by catch-all servers when run from cloud IPs. This actor uses clean, reproducible signals instead:

  • MX lookup via Google DNS-over-HTTPS – proves the domain is configured to receive email. No MX means the address cannot receive mail (no_mx).
  • Strict syntax validation of the local part and domain.
  • Disposable-domain detection for common throwaway providers.

The target mail server is never contacted. mx_ok means valid address on a domain that accepts mail – it does not prove that a specific mailbox exists, so guessed addresses remain candidates.

Pricing

This actor uses pay-per-event pricing – you pay only for rows delivered to the dataset:

  • $0.001 per result (one email or phone row)
  • $1.00 per 1,000 results
  • $0.00005 per actor start
ScenarioCost
Discover emails on 2 domains (≈ 8 rows, like the default input)≈ $0.01
Guess 7 patterns for 100 people at their companies (700 rows)≈ $0.70
Discover mode on 250 domains, ~4 rows each (1,000 rows)≈ $1.00
10,000 email rows per month≈ $10.00

No proxies or paid APIs are used, so there are no hidden extra costs. Use Max results (maxItems, up to 1,000 per run) and Apify's maximum cost per run to cap spending.

Use cases

  • B2B lead generation – turn a list of target company domains into contact emails with an MX check.
  • Cold outreach & sales prospecting – generate the likely address of a decision-maker when you know their name and employer.
  • Recruiting & talent sourcing – reach candidates or hiring managers when only a name and company are known.
  • CRM enrichment – append published emails and phone numbers to accounts in HubSpot, Salesforce or Pipedrive.
  • List hygiene – flag addresses on dead domains (no_mx) and disposable providers before a campaign.
  • Email provider research – see from mx_host whether a company uses Google Workspace, Microsoft 365 or another mail host.

Integrations and API

Run the email finder from the Apify API, CLI or any integration: Make, Zapier, n8n, Google Sheets, Slack, Airbyte or webhooks – for example, add a domain to a sheet, run the actor, and write mx_ok emails back to your CRM.

Python example with the official apify-client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("ninhothedev/email-finder-scraper").call(
run_input={"mode": "discover", "domains": ["stripe.com", "apify.com"], "maxItems": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["type"] == "email" and item["status"] == "mx_ok":
print(item["email"], item["found_on_url"])

FAQ

Is it legal to find and verify emails? Discover mode reads only emails that companies publish on their public websites, and verification uses public DNS records. Business emails of named people can still be personal data under GDPR, CCPA and similar laws – process them only with a legitimate purpose and follow anti-spam rules (CAN-SPAM, ePrivacy). The actor never sends email.

Does mx_ok guarantee delivery? No. It confirms valid syntax and that the domain accepts mail. It cannot confirm that a specific mailbox exists, which is why no SMTP probing is done.

How many results can I get per run? maxItems caps output rows (emails + phones) at 1–1,000 per run. For larger lists, split them across several runs or tasks.

Why did a run fail with "Produced 0 items"? No emails or phones were found on the given pages (Discover), or no name was provided (Guess). Try more pages (/contact-us, /legal, /privacy) or another domain.

Does it render JavaScript or use proxies? No. Pages are fetched with a browser-like HTTP client, which is fast and cheap. Emails that only appear after JavaScript runs, or behind bot protection, can be missed. Pages that return 404 are simply skipped.

Can I schedule it? Yes. Save your input as a task and attach an Apify Schedule to refresh your lead lists daily, weekly or monthly.

Something does not work? Open an issue on the actor's Issues tab with the run ID and an example domain – we usually respond within a day.