Email Verifier, Finder & Deliverability Checker
Pricing
from $0.60 / 1,000 email or domain results
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
Maintained by CommunityActor 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
| Key | Type | Description |
|---|---|---|
emails | string[] | Known email addresses to check. |
contacts | object[] | Objects with firstName, lastName, and domain; only publicly evidenced matches are returned. |
domains | string[] | Domains to audit without inventing an email address. |
csvText | string | Comma, whitespace, or newline-separated email addresses. |
maxConcurrency | integer | Concurrent independent targets, from 1 to 25. |
maxRuntimeSecs | integer | Runtime budget from 60 to 270 seconds. |
At least one target is required. Inputs are deduplicated before network work.
Output fields
| Field | Description |
|---|---|
email | Submitted or publicly evidenced email; null for domain-only/not-found rows. |
firstName, lastName | Submitted contact identity when using finder mode. |
domain | Normalized ASCII mail/company domain. |
isValidFormat, syntaxErrors | Local syntax result and explicit issue codes. |
hasMxRecords, mxHost | Public mail-routing result and preferred host. |
isVerified | Conclusive mailbox result; null when no authorized mailbox probe was performed. |
isCatchAll | Conclusive catch-all result; null when not tested. |
isDisposable, isFreeProvider, isRoleAccount | Address risk classifications. |
confidenceScore | Deterministic 0–100 confidence for the supplied/evidenced address. |
verificationMethod | Deepest supported check: domain, format, or mx. |
provider | Provider inferred from the preferred MX hostname. |
patternsTried, sources | Finder work count and public evidence routes. |
verificationTimeMs | Processing time for the row. |
deliverabilityGrade, deliverabilityScore | Domain authentication grade and 0–100 score. |
spfExists, spfValid | SPF publication and basic version validity. |
dmarcExists, dmarcPolicy | DMARC publication and policy. |
dkimFound | Whether one of several common public selector records was found. |
deliverabilityIssues | Explicit mail/authentication issue codes. |
status | READY, RISKY, INVALID, NOT_FOUND, DOMAIN_ONLY, or FAILED. |
checkedAt | ISO 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_FOUNDrather than a guessed address. - A valid format and MX record do not prove that a specific mailbox exists.
isVerified: nullandisCatchAll: nullmean the claim was not conclusively tested, notfalse.- 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
checkedAtwhen 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 osfrom apify_client import ApifyClientclient = 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.
Related Actors
- Email MX & Deliverability Verifier
- Public B2B Email Finder & MX Verifier
- Google Maps Email Extractor & Lead Finder
- Decision-Maker Public Email Finder
- Public Email Domain Verifier
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.