Email Validator & Verifier - Bulk Email Checker avatar

Email Validator & Verifier - Bulk Email Checker

Pricing

from $0.80 / 1,000 verified emails

Go to Apify Store
Email Validator & Verifier - Bulk Email Checker

Email Validator & Verifier - Bulk Email Checker

Clean any email list in seconds. Every address comes back valid, risky or invalid with a 0-100 score and a plain-English reason. Fixes typos, flags disposable and shared inboxes, shows the mail provider and SPF/DMARC behind each domain, and checks emails straight from a lead scraper's dataset.

Pricing

from $0.80 / 1,000 verified emails

Rating

0.0

(0)

Developer

VeroAPIs

VeroAPIs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Share

Email Validator & Verifier — bulk email checker that cleans your list before you send

Check any list of email addresses and get back a clear verdict for each one: valid, risky, or invalid. Catch typos, dead domains, throwaway addresses, and shared team inboxes before they cost you a campaign.

It is a fast, domain-level list cleaner: thousands of addresses in minutes, nothing ever sent to them, and you pay only for the addresses it checks.

What you can do

  • Score every address from 0 to 100 with a plain-English reason.
  • Catch typos automatically — jane@gmial.com comes back as jane@gmail.com.
  • Remove dead addresses: domains that don't exist or don't accept email come back invalid.
  • Spot disposable addresses from a list of 120,000+ throwaway domains, including every subdomain of services like Mailinator.
  • Flag shared inboxes like info@ and support@ that no single person reads.
  • See who runs the mailbox: Gmail, Google Workspace, Microsoft 365, Outlook.com, Proton, Zoho, and nearly 40 more.
  • Separate business addresses from free consumer ones like Gmail and Yahoo.
  • See each domain's SPF and DMARC setup — a quick read on how well a company runs its email.
  • Add public profile photos as proof a real person is behind an address.
  • Check the emails a lead scraper just collected, straight from its dataset.

Who uses it

  • Sales teams cleaning cold-outreach lists before a sequence goes out.
  • Marketers keeping newsletter and CRM lists free of dead and junk addresses.
  • Product teams screening signups for throwaway and mistyped addresses.
  • Growth and data teams cleaning leads collected with other Apify Actors.

How to use it

  1. Paste your email addresses — one per line. Names, angle brackets, and duplicates are cleaned up for you. Or pick a dataset from another run under Check emails from another run, and clear the sample addresses if you only want the dataset's emails checked.
  2. Click Start.
  3. Download your results as JSON, CSV, or Excel.

Input example

{
"emails": ["jane.doe@gmail.com", "info@microsoft.com", "test@mailinator.com", "jane@gmial.com"],
"checkGravatar": false
}

To check the emails another Actor collected, pass its dataset instead of (or as well as) a pasted list. emailField is the field that holds the addresses; a field that holds a list of addresses works too.

{
"inputDatasetId": "<DATASET_ID>",
"emailField": "email"
}

What you get

One row per address, ready to filter in a spreadsheet:

emailstatusscorereasonmailProviderdidYouMean
jane.doe@gmail.comvalid90Domain accepts mail (Gmail)Gmail
info@microsoft.comrisky60Shared team address, not a personMicrosoft 365
jane@gmial.comrisky45Domain looks like a typo — did you mean jane@gmail.com?jane@gmail.com
test@mailinator.comrisky20Disposable, throwaway addressMailinator
jane@no-such-domain-x9.cominvalid0Domain does not exist
nobody@example.cominvalid0Domain does not accept email
{
"email": "jane.doe@gmail.com",
"status": "valid",
"isValid": true,
"score": 90,
"reason": "Domain accepts mail (Gmail)",
"username": "jane.doe",
"domain": "gmail.com",
"hasMxRecords": true,
"mxRecords": ["gmail-smtp-in.l.google.com", "alt1.gmail-smtp-in.l.google.com"],
"mailProvider": "Gmail",
"isFreeProvider": true,
"isDisposable": false,
"isRoleAccount": false,
"hasSpf": true,
"hasDmarc": true,
"dmarcPolicy": "none",
"checkedAt": "2026-10-25T10:00:00.000Z"
}

The Output tab has two ready-made tables: Overview for the verdicts, and Domain health for mail servers, SPF, and DMARC.

What each status means

StatusWhat it meansWhat to do
validThe domain is real, accepts mail, and the address passes every risk check.Keep it.
riskyThe domain accepts mail, but the address shows a warning sign: a likely typo, a throwaway domain, a shared inbox, or no dedicated mail server. The reason says which.Fix typos with didYouMean, drop throwaway addresses, and decide whether shared inboxes suit your campaign.
invalidThe domain doesn't exist or doesn't accept email.Remove it.

Lines we couldn't check

Header rows like email, malformed addresses, and addresses whose domain didn't answer get no row in your results, so a blank never sits next to a real answer. Each one is listed with its reason in the FAILED_EMAILS record (the Lines we couldn't check link in the Output tab), and none of them are charged. The run's status message sums it all up: how many addresses were valid, risky, and invalid, and how many lines were skipped.

Integrations

  • Chain it after any lead scraper. Pick the scraper's dataset under Emails from a dataset, or start this Actor automatically when the scraper finishes with an Apify Actor-to-Actor integration.
  • Send results anywhere. Push them to Google Sheets, Zapier, Make, n8n, Slack, or any webhook with Apify integrations.
  • Export in any format. JSON, CSV, Excel, XML, or HTML.

Use it as an email validation API

Call it from your own code and get the verdicts back as JSON. In Python, with the Apify client (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vero-api/email-validator").call(run_input={
"emails": ["jane.doe@gmail.com", "jane@gmial.com"],
})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["email"], item["status"], item["reason"])

Or get the results in a single HTTP call:

curl -X POST "https://api.apify.com/v2/acts/vero-api~email-validator/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"emails": ["jane.doe@gmail.com", "jane@gmial.com"]}'

Your token is under Settings → API & Integrations in Apify Console.

Use it from your AI assistant (MCP)

Ask Claude, Cursor, VS Code, or any assistant that supports MCP to check addresses in plain words. Add this server to its MCP settings:

{
"mcpServers": {
"email-validator": {
"url": "https://mcp.apify.com?tools=vero-api/email-validator"
}
}
}

Then just ask, for example:

  • "Which of these signup emails are throwaway addresses?"
  • "Clean this list and tell me which addresses have typos."
  • "Which of these company domains have DMARC set to reject?"

Pricing

You pay only for the addresses you check — no subscriptions, no surprises. Every check is included in that one price: typos, disposable and shared-inbox flags, mail provider, SPF and DMARC, and profile photos. Duplicates, lines that aren't email addresses, and addresses whose domain didn't answer are never charged.

FAQ

What does "valid" mean? The domain is real, accepts mail, and the address passes every risk check: no typo, no throwaway domain, no shared inbox. Every check runs at the domain level, so it finishes in seconds and never contacts the mailbox — the fastest way to strip dead and junk addresses from a list.

Does anything get sent to the addresses? No. Every check is read-only, so your sending reputation stays untouched and nobody receives a test message.

How fast is it? A list of a thousand addresses finishes in about two minutes.

What does the score mean? 90 is a clean address on a domain that accepts mail, and a public profile photo (when you turn that check on) lifts it to 100. Anything at 60 or below is worth a second look — the reason field tells you exactly why.

Can I filter out free Gmail and Yahoo addresses? Yes. Sort or filter on isFreeProvider to keep only business domains.

Can I check the emails a lead scraper collected? Yes. Pick the scraper's run dataset under Emails from a dataset and set Email field to the field that holds the addresses. Pasted addresses and dataset addresses can be combined in one run, and duplicates count once.

What happens to header rows and lines that aren't email addresses? They're skipped, listed in the FAILED_EMAILS record with the reason for each, and never charged.

What do SPF and DMARC tell me? SPF lists the servers allowed to send mail for a domain, and DMARC tells inboxes what to do with mail that fails that check. A business domain with both in place — especially DMARC at quarantine or reject — runs its email properly.

Can I cap what a run costs? Yes. Set a spending limit on the run: it stops cleanly when the limit is reached and tells you so in the status message.

Do I need an API key for anything? No. Paste your addresses and run it — there is nothing to sign up for.

Can I call it from my app? Yes — start a run through the Apify API and read the results from its dataset. See Use it as an email validation API above.

More tools from us