Email Verifier & Checker - Bulk Verify Email Addresses avatar

Email Verifier & Checker - Bulk Verify Email Addresses

Pricing

from $0.86 / 1,000 email verifieds

Go to Apify Store
Email Verifier & Checker - Bulk Verify Email Addresses

Email Verifier & Checker - Bulk Verify Email Addresses

Email verifier and email checker: verify email addresses in bulk with a live SMTP mailbox check, MX, catch-all, disposable and role detection. Email validation that cuts bounces. $0.95 per 1,000, pay only for valid/invalid.

Pricing

from $0.86 / 1,000 email verifieds

Rating

5.0

(2)

Developer

PNDA

PNDA

Maintained by Community

Actor stats

3

Bookmarked

51

Total users

38

Monthly active users

2 days ago

Last modified

Share

βœ… Email Verifier & Validator β€” Bulk SMTP Email Verification, Catch-All Check

Bulk email verifier and email validator for cleaning email lists before you send. Paste a list (or send it through the API) and get, for every address, a clear verdict β€” valid, invalid, catch-all, risky or unknown β€” with the reason behind it.

For each email the Actor checks the syntax, looks up the domain's MX records, then runs a live SMTP mailbox check (RCPT TO) against the recipient's mail server to confirm that the mailbox exists. No email is ever sent. It also flags catch-all domains, disposable / temporary email providers, role accounts (info@, sales@, support@) and free providers (Gmail, Outlook, Yahoo), and suggests fixes for typos like gmial.com β†’ gmail.com.

You only pay for conclusive results: $0.95 per 1,000 emails returned as valid or invalid. Catch-all, risky, unknown and duplicate emails are free.

Export results to JSON, CSV, Excel or HTML, or plug the Actor into n8n, Make, Zapier, Clay, Google Sheets or your own code through the Apify API.

πŸ”Ž Don't have the emails yet? Email Finder finds the work email of a person from their name and company domain, already verified ($4.99 per 1,000 emails found).


πŸ’‘ Who is it for?

  • Cold email & sales teams cleaning lead lists from Apollo, LinkedIn, Google Maps or any scraper before a campaign β€” fewer bounces, better sender reputation.
  • Growth & marketing teams running email list hygiene on newsletters and CRM exports (HubSpot, Salesforce, Pipedrive, Mailchimp, Brevo).
  • Agencies verifying client lists in bulk without a monthly SaaS subscription.
  • Developers who need an email validation API for sign-up forms, onboarding or data pipelines.
  • Data teams enriching and deduplicating contact databases.

βš™οΈ How it works

Each unique email goes through five checks, in order:

StepCheckWhat it catches
1Syntax validationMalformed addresses (john@@acme, not-an-email)
2Typo detectiongmial.com, hotmial.com, yahooo.com, gmail.con, acme.cmo β†’ corrected suggestion
3DNS / MX lookupDomains with no mail server (double-checked with a second DNS lookup to avoid false invalid)
4Live SMTP mailbox checkMailboxes that don't exist, are disabled or have a full inbox (SMTP codes 550–553, etc.)
5Catch-all, disposable & role detectionAccept-all domains, throwaway providers (Mailinator, Yopmail, 10minutemail…), generic inboxes

Duplicates are removed case-insensitively, so every address is verified β€” and billed β€” once.


πŸ“₯ Input

FieldTypeRequiredDescription
emailsarray of stringsβœ…The emails to verify β€” one per line in the Console, an array through the API
checkCatchAllbooleanβ€”true (default): catch-all domains get the status catch-all. false: they are reported as risky. Never billed.
timeoutSecsintegerβ€”Max wait per mail server, 5–120 s (default 30). Servers that don't answer return unknown (free).
concurrencyintegerβ€”Emails verified in parallel, 1–10 (default 5)

Example input

{
"emails": [
"rand@sparktoro.com",
"john@gmial.com",
"info@acme.com",
"test@mailinator.com"
],
"checkCatchAll": true,
"timeoutSecs": 30,
"concurrency": 5
}

πŸ“€ Output

One row per unique email. Example item:

{
"email": "rand@sparktoro.com",
"status": "valid",
"reason": "Mailbox exists",
"suggestion": null,
"syntaxValid": true,
"domain": "sparktoro.com",
"mxFound": true,
"mxHost": "aspmx.l.google.com",
"disposable": false,
"roleAccount": false,
"freeProvider": false,
"catchAll": false,
"smtpConnected": true,
"deliverable": true,
"fullInbox": false,
"disabled": false,
"smtpCode": null,
"smtpMessage": null,
"charged": true
}

A typo example:

{
"email": "info@gmial.com",
"status": "invalid",
"reason": "Domain has no mail server (MX)",
"suggestion": "info@gmail.com",
"mxFound": false,
"roleAccount": true,
"charged": true
}

A SUMMARY record in the run's key-value store counts results per status, duplicates and billed emails.

Statuses

StatusMeaningBilled
validThe mail server confirmed the mailbox exists. Safe to send. Role accounts stay valid with roleAccount: true.βœ… yes
invalidBad syntax, no MX record, mailbox rejected or disabled (SMTP 550–553 "user unknown"). Remove it.βœ… yes
catch-allThe domain accepts every address (accept-all), so the single mailbox can't be confirmed.❌ free
riskyDisposable / temporary email provider, full inbox, or catch-all when checkCatchAll is off.❌ free
unknownNo clear answer: timeout, greylisting, temporary server error. Re-run later.❌ free

Field reference

FieldMeaning
status / reasonThe verdict and a human-readable explanation
suggestionCorrected address when the domain looks like a typo of a common provider
syntaxValidRFC-style syntax check passed
mxFound / mxHostThe domain has a mail server, and which one (Google Workspace, Microsoft 365…)
smtpConnected / deliverableThe SMTP server answered / accepted the mailbox
smtpCode / smtpMessageRaw SMTP reply code and message when the server rejected the address
catchAllThe domain accepts any address
disposableThrowaway / temporary email provider
roleAccountGeneric inbox: info@, sales@, support@, admin@…
freeProviderGmail, Outlook, Yahoo, iCloud…
fullInbox / disabledMailbox full / mailbox disabled
chargedWhether this row was billed

πŸš€ Why use this Email Verifier

  • βœ… Real SMTP verification, not just syntax and MX β€” the mail server itself is asked whether the mailbox exists.
  • βœ… Pay only for conclusive answers β€” catch-all, risky and unknown are free. On B2B lists, where 20–40% of addresses sit on catch-all domains, that is a real saving.
  • βœ… Fewer false invalid β€” "no MX" answers are double-checked with a second DNS lookup before an email is rejected.
  • βœ… Typo correction built in β€” recover leads instead of deleting them.
  • βœ… Budget-safe β€” set Maximum cost per run and the Actor never goes over it.
  • βœ… No API key, no subscription, no credits that expire β€” pay per result, export anywhere.
  • βœ… Pipeline-ready β€” chain it after any scraper, or call it from n8n, Make, Zapier or the Apify API.

πŸ“Š Comparison

This ActorTypical Store email verifiersEmail verification SaaS
Price per 1,000$0.95$0.89 – $5.00monthly plans or prepaid credits
Catch-all billedNoYesUsually yes
Unknown / timeout billedNoYesVaries
Duplicates billedNo (deduplicated)Often yesVaries
Live SMTP mailbox checkβœ…βœ… / partialβœ…
Typo suggestionsβœ…RareSome

Example β€” 1,000 B2B emails with 30% on catch-all domains: you are billed for ~700 results, about $0.67.


πŸ’Ό Use cases

  • Clean a cold email list before uploading it to Instantly, Lemlist, Smartlead or Apollo sequences.
  • Lower your bounce rate under 2% to protect domain reputation and deliverability.
  • Validate emails scraped from Google Maps, LinkedIn, YouTube channels or websites.
  • CRM hygiene β€” re-verify old contacts quarterly and drop dead mailboxes.
  • Sign-up form validation β€” call the API synchronously and reject disposable or mistyped emails.
  • Lead enrichment β€” keep only valid emails, flag catch-all for a lower-priority sequence.

πŸ’° Pricing

Store discounts: on Apify Silver, Gold, Platinum and Diamond plans, some events cost up to 20 % less. The Pricing tab of the Store page shows the exact price for each plan.

Pay per event: $0.95 per 1,000 verified emails ($0.00095 per email returned valid or invalid), plus Apify's tiny per-run start fee. Catch-all, risky, unknown and duplicate emails cost nothing.

RunEmailsMax cost
Small list100~$0.10
Campaign list1,000~$0.95
Large list10,000~$9.50
Database cleanup100,000~$95

Costs are a maximum: every catch-all or unknown result lowers the bill.

Works with a free Apify account too. Free-plan accounts can use every feature at the same per-result prices, paid from their monthly Apify credit. The only limits are your credit and your maximum cost per run.


πŸ”Œ Use it through the API

Synchronous call β€” send emails, get results back in the same request:

curl -X POST "https://api.apify.com/v2/acts/pnda~email-verifier/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"emails": ["rand@sparktoro.com", "nobody@example.com"]}'

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("pnda/email-verifier").call(run_input={"emails": ["rand@sparktoro.com"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["email"], item["status"], item["reason"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('pnda/email-verifier').call({ emails: ['rand@sparktoro.com'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

❓ FAQ

Does it send emails to the addresses? No. The SMTP conversation stops at RCPT TO, before any message is sent. Recipients see nothing.

How accurate is the email verification? valid and invalid come straight from the recipient's mail server, so they are as reliable as SMTP allows. When the server can't give a definite answer, the email is reported as catch-all, risky or unknown instead of being guessed β€” and you are not charged.

What is a catch-all email? A catch-all (accept-all) domain accepts mail for any address, so no SMTP verifier can confirm one specific mailbox. Many Google Workspace and Microsoft 365 company domains are configured this way. These results are free here.

Why do I get unknown? Some servers delay unknown senders (greylisting) or answer slowly. The Actor retries once; if the answer is still unclear, the result is unknown and free. Re-run those emails later or raise timeoutSecs.

Can it detect disposable and temporary emails? Yes β€” Mailinator, Yopmail, 10minutemail, Guerrilla Mail and similar providers are flagged disposable and returned as risky.

How fast is it? About 60 emails in 12 seconds with concurrency: 10. Slow mail servers take longer; lists of tens of thousands run fine in a single run.

Can I verify a CSV file? Paste the email column into the emails field, or read your CSV in code and send the array through the API. Export results back to CSV or Excel from the dataset.

Is it a ZeroBounce / NeverBounce / Hunter alternative? For list cleaning, yes: same kind of SMTP verification, pay-as-you-go, no subscription, and you don't pay for catch-all or unknown results.

Can I use it on the free Apify plan? Yes. It works with a free Apify account too, at the same prices, paid from your monthly Apify credit (pricing).

How do I control spending? Set Maximum cost per run in the run options. The Actor stops before it would exceed it.

Does it store my data? The Actor only checks whether a mailbox exists; it doesn't store or enrich personal data beyond your run's dataset, which you control and can delete at any time.


  • Email Extractor: Need emails first? Extract the contacts published on a list of websites, already verified.
  • Email Finder: Have a name and a company? Find the person's work email, verified.
  • Google Maps API & Scraper: Building a local B2B list? Get businesses with their website emails, then verify them here.
  • Shopify & WooCommerce Stores Database: Building an e-commerce list? Start from Shopify and WooCommerce stores filtered by country and category.

▢️ Start now

Paste your email list. Click Run. Download the clean list. Valid emails in, bounces out β€” and you only pay for real answers.