Public Email Domain Verifier avatar

Public Email Domain Verifier

Pricing

from $0.38 / 1,000 item processeds

Go to Apify Store
Public Email Domain Verifier

Public Email Domain Verifier

Check email syntax, DNS mail routing, and public Gravatar presence without mailbox claims.

Pricing

from $0.38 / 1,000 item processeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Public Email Domain Verifier normalizes a batch of email addresses and returns transparent, no-login signals for lead-list cleanup, form validation, and developer workflows. It checks email syntax, public DNS mail routing, role-account patterns, provider category, and an optional public Gravatar response. It does not log in, send email, access private data, or claim that a mailbox exists, belongs to someone, or can receive mail.

What you get

Each submitted address produces one dataset row. Core fields include email, normalizedEmail, syntaxValid, localPart, domain, tld, isRoleAccount, providerCategory, mxRecords, gravatarFound, gravatarProfileUrl, dnsStatus, verificationScope, warnings, and checkedAt.

verificationScope and warnings make the boundary explicit: MX records show a domain's published mail routing only. A gravatarFound result is public profile-presence evidence, not identity or mailbox evidence.

Input recipes

Provide one to 100 email addresses in emails. Use maxConcurrency (1–10) to control parallel public DNS checks. Practical limits: availability depends on public DNS and Gravatar responding during the run. DNS routing may change after checkedAt; retry a lookup_failed row later rather than treating it as a permanent result.

Recipe: clean a small lead list

{
"emails": ["contact@apify.com", "sales@example.org", "not-an-email"],
"maxConcurrency": 3
}

Recipe: check role inboxes for routing signals

{
"emails": ["support@apify.com", "info@example.com", "hello@company.test"],
"maxConcurrency": 5
}

Recipe: export normalized addresses

{
"emails": [" Contact@Apify.com ", "admin@domain.invalid"],
"maxConcurrency": 1
}

Download the default dataset as JSON, CSV, Excel, or through the Apify API after the run completes.

Reading results

  • syntaxValid: false means the input did not match the actor's conservative email syntax check; DNS is not queried.
  • dnsStatus: mx_present means public MX records were returned for the domain.
  • dnsStatus: no_mx means public DNS returned no MX data or the domain could not be found.
  • dnsStatus: lookup_failed preserves a transient DNS failure as an output row instead of silently dropping it.
  • providerCategory is free for a small maintained list of common consumer providers, otherwise business_or_custom.
  • isRoleAccount flags common local parts such as info, support, sales, and admin.

What this verifier cannot prove

This Actor is deliberately conservative. It cannot verify inbox ownership, delivery, account access, or whether a person is associated with an address. It does not use SMTP probing, breached-data sources, password-protected sources, or private credentials. Treat its output as public DNS and normalization evidence only.

Pricing

See the live Apify Pricing tab for current start and per-item rates by plan. Invalid addresses still produce a useful result row and are charged as processed items.

Examples

Use the input recipes above as copy-paste examples in the Apify Console. For automation, pass the same JSON to fetch_cat/public-osint-email-lookup-verifier-scraper and read the default dataset. Start with a short representative batch before processing a large list.

Who is it for?

This Actor is for CRM operators, sales-operations teams, developers, and researchers who need a reproducible public-data check before routing or enriching a list. It is not a deliverability service, identity verifier, or consent record.

API usage

Run fetch_cat/public-osint-email-lookup-verifier-scraper with an emails array using the Apify API, JavaScript client, Python client, n8n, Make, or any tool that can start an Actor and download a dataset. Preserve warnings and verificationScope in downstream tables so other users understand the signal boundary.

JavaScript

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

Python

from apify_client import ApifyClient
client = ApifyClient('APIFY_TOKEN')
run = client.actor('fetch_cat/public-osint-email-lookup-verifier-scraper').call(run_input={'emails': ['contact@apify.com']})
items = client.dataset(run['defaultDatasetId']).list_items().items

cURL

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

MCP

Add the Actor to a compatible MCP client, then ask the assistant to run it with an emails array:

$claude mcp add apify -- npx -y @apify/mcp-server
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Example prompts: “Verify public DNS routing for contact@apify.com” or “Normalize these emails and retain the warnings.” In an MCP-enabled workflow, keep verificationScope and warnings with each row; they are required context for interpreting an otherwise simple boolean signal.

FAQ

Does an MX record prove an email address exists?

No. It proves only that the domain publishes mail-routing records. It does not validate an individual mailbox.

Does this Actor send an email or use SMTP verification?

No. It only performs local parsing and public DNS/Gravatar requests; it never sends an email.

Why did an invalid address still appear in the dataset?

The Actor preserves invalid input as a row with dnsStatus: not_checked, making it easy to filter or correct input without losing records.

Can I use this for a CRM import?

Yes, as a transparent pre-cleaning signal. Do not use it as proof of identity, consent, deliverability, or mailbox ownership.

Why is gravatarFound null sometimes?

The public request can time out or reject a request. null records an unavailable public observation; it is not a negative result.

How should I handle lookup_failed?

Keep the row and retry it later. The Actor does not hide a failed public DNS request behind a guessed value.

Is a free provider always a personal address?

No. providerCategory only classifies the domain from a limited common-provider list. It makes no claim about the user or their purpose.

What happens to duplicate emails?

The Actor removes exact duplicate submitted strings within a run so that a batch yields one row per unique input value.

Use this public-signal verifier alongside your own consented lead sources and exports:

Combine this verifier with your existing CRM export or lead source, then filter records by syntaxValid and dnsStatus while retaining the original email and warnings for auditability.

Support

Open an issue on this Actor's Apify page with the affected domain and observed dnsStatus. Do not include passwords, API tokens, or other sensitive information.