Email List Cleaner & Validator: Syntax, MX, Disposable avatar

Email List Cleaner & Validator: Syntax, MX, Disposable

Pricing

from $0.20 / 1,000 email checkeds

Go to Apify Store
Email List Cleaner & Validator: Syntax, MX, Disposable

Email List Cleaner & Validator: Syntax, MX, Disposable

Clean email lists for $0.20 per 1,000 on every plan. Catches bad syntax, domains with no mail server, disposable inboxes, role addresses and typos (gmial.com → gmail.com), with a 0-100 score. Does not check individual mailboxes. Never sends email.

Pricing

from $0.20 / 1,000 email checkeds

Rating

0.0

(0)

Developer

Brandon Ob

Brandon Ob

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Security

Limited permissions

Share

This email validator and list cleaner checks a list of email addresses and tells you, for each one, whether it is valid, risky, undeliverable or invalid, with the reason, a 0–100 score and every individual check. Use it to remove addresses that are sure to bounce or waste a send before a campaign or a CRM import. It costs $0.20 per 1,000 emails on every Apify plan, including the free plan. No email is ever sent.

What it does not do: it does not ask the recipient's mail server whether a specific mailbox exists (an "SMTP check"). valid means the address is well formed and its domain accepts email, not that the person's inbox exists. Use it as a fast, cheap first pass that removes the obvious junk.

What does Email List Cleaner & Validator do?

  • Syntax check: one @, allowed characters, a valid domain and top-level domain.
  • Domain and mail server (MX) check: the domain exists and has a mail server (MX record, or an A record as the fallback). Domains that publish "null MX" (accept no mail) are caught.
  • Disposable inbox detection: the domain belongs to a throwaway or temporary inbox provider (a list of 10,000+ domains).
  • Role account detection: addresses like info@, sales@, support@ and noreply@ that reach a team, not a person.
  • Free provider detection: Gmail, Outlook, Yahoo, iCloud, GMX and other free mailboxes, to separate B2B from B2C contacts.
  • Typo suggestions: common misspellings like gmial.com or gmail.con get a "did you mean" fix and are marked risky.
  • Deduplication: repeated addresses (case and spaces ignored) are removed before checking, and you are not charged for them.
  • Reads emails pasted in the input or from a CSV link, such as a Google Sheet published as CSV.

Use cases

  • Cold email and outreach teams: remove dead domains, typos and throwaway addresses from a lead list before sending, to protect your sender reputation.
  • Marketers: clean a newsletter or event sign-up list before importing it into an email tool.
  • Sales operations: flag role accounts and free-mail contacts in a B2B lead list before it reaches reps.
  • Product teams: find disposable sign-ups and mistyped addresses in your user base.
  • Data teams: add a cheap validation step to a scraping or enrichment pipeline.

How to use it

  1. Open the Actor in Apify Console and paste your emails, one per line, or put a CSV link in Or a CSV file URL (a column named email, e-mail or email address is used automatically).
  2. Click Start.
  3. Open the Verified emails view and filter by result, or download the dataset.
  4. To clean new sign-ups regularly, save the input as a task and schedule it, or call the Actor from the API.

Input

FieldWhat it does
emailsOne email per line. Duplicates are removed and charged once.
csvUrlOptional link to a CSV file with an email column.
maxConcurrencyHow many domains are looked up at the same time (default 20).

Example input:

{
"emails": ["support@github.com", "jane@gmial.com", "john@@example.com", "x@mailinator.com"],
"maxConcurrency": 20
}

Output

One row per unique email. Example row:

{
"email": "support@github.com",
"result": "valid",
"reason": "Well formed and the domain accepts email (mailbox not checked) (role account, e.g. info@ or sales@)",
"score": 60,
"isValidSyntax": true,
"domain": "github.com",
"hasMx": true,
"mxHost": "github-com.mail.protection.outlook.com",
"smtpCheck": "skipped",
"smtpCode": null,
"isCatchAll": null,
"isDisposable": false,
"isRoleAccount": true,
"isFreeProvider": false,
"suggestion": null
}

What each result means:

ResultMeaningKeep?
validWell formed, and the domain accepts email. The individual mailbox is not checked.Yes
riskyDisposable (throwaway) inbox, or a likely typo in the domain (see suggestion).Usually no
unknownThe domain's DNS could not be read (timeout).Run again
undeliverableThe domain has no mail server or says it accepts no email.No
invalidThe address is not well formed.No

Examples from a test run: John@@example → invalid; info@example.com → undeliverable (null MX); x@mailinator.com → risky (disposable); jane@gmial.com → risky, "did you mean jane@gmail.com?". The key-value store holds a SUMMARY record with counts per result. The dataset can be downloaded as JSON, CSV, Excel, XML or HTML, or read through the API.

Pricing

Pay per event: $0.20 per 1,000 emails, the same price on every plan, free plan included. You pay per unique email checked (duplicates are removed first). You can set a maximum cost per run and the Actor stops cleanly when it is reached.

Example: a 25,000-address list costs about $5.00.

Integrations and API

Run it and get the results back in one call:

curl -X POST "https://api.apify.com/v2/acts/adhistory~email-list-cleaner-validator-syntax-mx-disposable/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"emails": ["jane@gmial.com", "support@github.com"]}'

Python, with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("adhistory/email-list-cleaner-validator-syntax-mx-disposable").call(run_input={
"csvUrl": "https://docs.google.com/spreadsheets/d/<id>/export?format=csv",
})
keep = [r["email"] for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r["result"] == "valid"]

Like every Apify Actor, it also works with Make, Zapier and n8n, with webhooks and schedules, and as a tool for AI agents through the Apify MCP server.

FAQ

Does it send emails? No. It only reads public DNS records and its built-in lists. Nothing reaches anyone's inbox.

Will valid addresses never bounce? Not guaranteed. A valid address has a correct format and a domain that accepts email, but the specific mailbox may not exist. This tool removes the addresses that are certain to fail; it does not confirm individual inboxes.

Why no mailbox (SMTP) check? Mailbox checks need an outbound connection on port 25, which the Apify cloud does not allow. The Actor is priced for what it can do: syntax, domain, disposable, role and typo checks.

How fast is it? Thousands of emails in seconds to a few minutes, depending on how many different domains are in the list.

Am I charged for duplicates? No. Duplicates are removed (ignoring case and spaces) before checking.

What CSV format does it read? Any CSV reachable by link. The column named email, e-mail or email address is used; otherwise the first column that holds email addresses.

Is this a bulk email validator or verifier? It is a bulk email validator: paste thousands of addresses or a CSV link and get one row per address with a verdict. It does not do mailbox (SMTP) verification, so use it as the cheap first pass before a full email verifier.

Can I validate emails for free? Every Apify account includes free monthly credit, and this Actor costs $0.20 per 1,000 emails on every plan, so a few thousand addresses fit inside the free credit.

How do I clean a Mailchimp, HubSpot or CSV export? Export the list as CSV, host it at a link or paste the addresses, run the Actor, then filter the dataset on status and re-import only the valid rows.

Found a bug or need a feature? Open an issue on the Issues tab — I usually reply within a day.