Email Verifier, Finder & Deliverability Checker avatar

Email Verifier, Finder & Deliverability Checker

Pricing

from $0.60 / 1,000 email or domain results

Go to Apify Store
Email Verifier, Finder & Deliverability Checker

Email Verifier, Finder & Deliverability Checker

Verify email syntax and domains, find publicly listed business contact addresses, and export transparent deliverability and authentication signals.

Pricing

from $0.60 / 1,000 email or domain results

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Verify known emails, find publicly listed business contact emails, and audit domain email authentication in one batch. The Actor exports transparent MX, SPF, DMARC, DKIM, provider, disposable, role-account, and confidence signals without treating MX records as proof that a mailbox exists.

Who is it for?

Sales operations teams, lead-generation agencies, recruiters, founders, and developers can use this Actor to qualify public business-contact data and diagnose domain email setup before outreach.

What you can do

  • Clean CRM and lead-list emails before outreach.
  • Find a named person's email when it is publicly listed on the supplied company website.
  • Audit company domains for mail routing and authentication gaps.
  • Separate invalid, risky, ready, not-found, and domain-only results.
  • Process up to 10,000 deduplicated targets with bounded concurrency and resumable cutoff evidence.

Example input

{
"emails": ["sales@example.com", "person@company.com"],
"contacts": [{ "firstName": "Ada", "lastName": "Lovelace", "domain": "example.org" }],
"domains": ["example.net"],
"maxConcurrency": 10,
"maxRuntimeSecs": 270
}

Example output

{
"email": "sales@example.com",
"firstName": null,
"lastName": null,
"domain": "example.com",
"isValidFormat": true,
"syntaxErrors": [],
"hasMxRecords": true,
"isVerified": null,
"isCatchAll": null,
"isDisposable": false,
"isFreeProvider": false,
"isRoleAccount": true,
"confidenceScore": 85,
"verificationMethod": "mx",
"mxHost": "mail.example.com",
"provider": "other",
"patternsTried": 0,
"sources": ["public-dns"],
"verificationTimeMs": 120,
"deliverabilityGrade": "A",
"deliverabilityScore": 85,
"spfExists": true,
"spfValid": true,
"dmarcExists": true,
"dmarcPolicy": "reject",
"dkimFound": false,
"deliverabilityIssues": ["COMMON_DKIM_SELECTOR_NOT_FOUND"],
"status": "READY",
"checkedAt": "2026-09-07T07:00:00.000Z"
}

Input settings

KeyTypeDescription
emailsstring[]Known email addresses to check.
contactsobject[]Objects with firstName, lastName, and domain; only publicly evidenced matches are returned.
domainsstring[]Domains to audit without inventing an email address.
csvTextstringComma, whitespace, or newline-separated email addresses.
maxConcurrencyintegerConcurrent independent targets, from 1 to 25.
maxRuntimeSecsintegerRuntime budget from 60 to 270 seconds.

At least one target is required. Inputs are deduplicated before network work.

Output fields

FieldDescription
emailSubmitted or publicly evidenced email; null for domain-only/not-found rows.
firstName, lastNameSubmitted contact identity when using finder mode.
domainNormalized ASCII mail/company domain.
isValidFormat, syntaxErrorsLocal syntax result and explicit issue codes.
hasMxRecords, mxHostPublic mail-routing result and preferred host.
isVerifiedConclusive mailbox result; null when no authorized mailbox probe was performed.
isCatchAllConclusive catch-all result; null when not tested.
isDisposable, isFreeProvider, isRoleAccountAddress risk classifications.
confidenceScoreDeterministic 0–100 confidence for the supplied/evidenced address.
verificationMethodDeepest supported check: domain, format, or mx.
providerProvider inferred from the preferred MX hostname.
patternsTried, sourcesFinder work count and public evidence routes.
verificationTimeMsProcessing time for the row.
deliverabilityGrade, deliverabilityScoreDomain authentication grade and 0–100 score.
spfExists, spfValidSPF publication and basic version validity.
dmarcExists, dmarcPolicyDMARC publication and policy.
dkimFoundWhether one of several common public selector records was found.
deliverabilityIssuesExplicit mail/authentication issue codes.
statusREADY, RISKY, INVALID, NOT_FOUND, DOMAIN_ONLY, or FAILED.
checkedAtISO timestamp for freshness.

Input recipes

Verify a pasted list

{ "csvText": "hello@example.com\nsales@example.org" }

Audit domains

{ "domains": ["google.com", "microsoft.com"] }

Find a public contact email

{ "contacts": [{ "firstName": "Jane", "lastName": "Smith", "domain": "example.com" }] }

Pricing

The Actor uses pay-per-event pricing: one small start charge per run and one result charge after each dataset row is saved. See the live Actor Pricing tab for current account-tier rates. Failed targets that produce no row are not charged as results.

Limits and data availability

  • The maximum batch size is 10,000 unique targets; finder mode checks a bounded set of public company pages.
  • Results depend on public DNS and website availability. Missing public evidence produces NOT_FOUND rather than a guessed address.
  • A valid format and MX record do not prove that a specific mailbox exists.
  • isVerified: null and isCatchAll: null mean the claim was not conclusively tested, not false.
  • DKIM selectors are chosen by each sender; common-selector discovery is useful but not exhaustive.
  • Public contact discovery returns only an address found on the supplied company's public pages and textually matching a conventional person pattern.
  • DNS changes can take time to propagate; use checkedAt when comparing runs.
  • Large workloads may stop before the platform cutoff and preserve pending targets in the run key-value store.

API usage

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~email-enrichment-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"emails":["hello@example.com"]}'

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/email-enrichment-scraper').call({ emails: ['hello@example.com'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/email-enrichment-scraper').call(
run_input={'emails': ['hello@example.com']}
)
items = client.dataset(run['defaultDatasetId']).list_items().items

Use with MCP and AI agents

Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/email-enrichment-scraper"

Desktop, Cursor, or VS Code MCP configuration:

{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=fetch_cat/email-enrichment-scraper" } } }

FAQ

Does this send email?

No. It analyzes supplied/public addresses and domain mail configuration.

Does an MX result prove the mailbox exists?

No. The Actor reports mailbox-only claims as null unless conclusively supported.

Why is DKIM false when a domain sends signed mail?

The domain may use a custom selector not included in the bounded common-selector check.

Can I combine all modes?

Yes. emails, contacts, domains, and csvText can be submitted together.

Support

Open an issue from the Actor page with a sanitized input example, run ID, expected result, and observed result. Do not include private lead lists or credentials.