Bulk Email List Validator: Clean CSV, No Login icon

Leads & companies · Coming soon

Bulk email validator that gives back a clean CSV

Upload your email list as a CSV or Google Sheet link. The tool checks each address and gives back a clean CSV. Your columns stay in place.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

email[email protected]
reasonrole_account
mxaspmx.l.google.com

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: [email protected] in Emails. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Bulk Email List Validator takes a CSV file, a Google Sheet link or a pasted list of email addresses, removes duplicates, checks every address and gives you back a clean CSV with your original columns. Each address gets a status (deliverable, risky, undeliverable or unknown) and a reason, based on syntax, DNS mail records, disposable domains, role addresses and domain typos. No login and no API key.

  • Reads your list: a CSV file you upload, a public CSV link, a Google Sheets share link, or addresses you paste. It finds the email column by its name or by its content.
  • Removes duplicate addresses (upper and lower case count as the same address).
  • Checks each address:
  • Syntax by the email standards. [email protected] fails because of the two dots.
  • Domain mail records (DNS): MX records, a "null MX" record that says the domain takes no mail (RFC 7505), and the A/AAAA fallback when a domain has no MX.
  • Disposable domains (temporary inboxes like mailinator.com), role addresses (info@, sales@, support@…) and free providers (gmail.com, outlook.com…).
  • Typos in popular domains: [email protected] → suggestion [email protected].
  • Writes one Dataset row per address and three files: CLEAN_LIST.csv (only the rows you can send to), ALL_RESULTS.csv and RUN_SUMMARY (how clean your list is).

Good for

  • Clean a CSV export from Mailchimp, HubSpot, Excel or a CRM before the next send.
  • Find and remove fake, mistyped, disposable and role addresses from a sign-up list.
  • Get a quick "how dirty is this list" report: percent of bad addresses and the main reasons.

Not a good fit

  • No mailbox check (SMTP). The Actor does not connect to the mail server, so it cannot tell if a mailbox exists on a working domain. A made-up [email protected] is deliverable here. It also does not detect catch-all domains.
  • It does not find new email addresses. It only checks the ones you give.
  • Up to 25,000 unique addresses and a 10 MB CSV file per run.

Who uses it

Email marketers

Clean a Mailchimp or HubSpot export before the next send.

Founders and small teams

Remove fake and mistyped addresses from sign-up lists.

List buyers

See how many bad addresses a list has before you use it.

Price

Prices will be shown after release.

Questions

Does it check if a mailbox really exists?

No. It does not connect to mail servers. It removes clearly bad addresses.

Can I use a Google Sheet?

Yes. Paste a Google Sheets share link or a public CSV link.

Is my list sent to another company?

No. It uses public DNS and built-in lists. Results stay in your Apify storage.

Should I delete risky addresses?

Not always. Role addresses like info@ often work. Typos and temporary inboxes are usually bad.

Do I need an account with an email verification service?

No. The Actor uses public DNS and built-in lists. No API key, no login. Your list is not sent to a third-party verification service.

Why is a fake gmail.com address "deliverable"?

Because the Actor does not ask the mail server if the mailbox exists (outgoing SMTP port 25 is closed on the platform). gmail.com has working mail servers, so the address passes. Use this Actor to remove clearly bad addresses before a mailbox check, not instead of it.

Should I remove every risky address?

Not always. Role addresses like info@ often work, but many senders avoid them in cold email. Disposable and typo addresses are usually not worth sending to. Choose deliverable_and_risky if you want to keep risky rows in the clean list and decide yourself.

Is my list stored?

The results stay in your own Apify storage. RUN_SUMMARY and the run log contain counts only, not addresses. Uploaded files are kept as your Apify storage keeps them.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep the example addresses in Emails (emails), paste your own, or upload a file in CSV file (csvUrl).
  3. Keep Remove duplicates (dedupe) on and Clean list keeps (cleanList) at deliverable.
  4. Click Start. Two addresses take a few seconds.
  5. Open the Output tab. Check the status and reason columns, then download CLEAN_LIST.csv from the storage tab.
Use cases
TaskInputYou getKey fieldsNext step
Clean a CRM or ESP exportcsvUrl (upload)CLEAN_LIST.csvyour columns + email_status, email_reasonimport the file back into your email tool
Check a shared Google SheetcsvUrl (share link)Dataset + ALL_RESULTS.csvstatus, reason, didYouMeanfix typos in the sheet
Check a few pasted addressesemailsDatasetstatus, reason, role, disposabledecide who to email
Measure list qualityanyRUN_SUMMARYpercent, byReason, listHealthdecide if the list is safe to send
Tips for better results
  • Leave the email column empty. The tool finds it by name or content.
  • Keep duplicate removal on. Duplicates are not charged.
  • Split lists over 25,000 addresses into several runs.
Limits and good to know
  • unknown rows (DNS failed) are not charged
  • Duplicates removed by dedupe are not charged
  • A CSV of 1 MB or less has no file fee. A 25,000-row file with one email column is about 0.8 MB
  • A run that fails on input pays the start fee, plus the CSV megabytes if a large file was downloaded
  • 25,000 unique addresses per run (25,000 took about 5 minutes in our tests). Split bigger lists into several runs
  • CSV file up to 10 MB
  • CSV links: http or https only, public addresses only, ports 80, 443, 8080, 8443

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "email": "[email protected]",
  "status": "risky",
  "reason": "role_account",
  "reasons": ["role_account", "mailbox_not_verified"],
  "mx": "aspmx.l.google.com",
  "mxProvider": "Google",
  "disposable": false,
  "role": true,
  "freeProvider": false,
  "didYouMean": null,
  "inCleanList": false,
  "source": "emails",
  "sourceRow": 1,
  "checkedAt": "2026-10-15T17:37:39.844Z"
}
Data fields (14)
FieldTypeMeaning
emailstringThe address as found in your list (trimmed).
statusstringdeliverable: valid syntax and a working mail domain, no risk flags. risky: the domain accepts mail but there is a risk flag. undeliverable: invalid syntax or the domain cannot receive mail. unknown: DNS failed; not charged. The mailbox itself is not probed.
reasonstringMain reason code: mx_found, invalid_syntax, domain_not_found, null_mx_domain_accepts_no_mail, no_mail_server, mx_host_unresolvable, dns_lookup_failed, disposable_domain, possible_domain_typo, role_account, no_mx_a_record_fallback.
reasonsarrayAll reason codes. mailbox_not_verified is added to deliverable and risky rows because no SMTP probe is made.
mxstringHighest-priority MX host of the domain, or null.
mxProviderstringMail provider recognised from the MX host (Google, Microsoft, …).
disposablebooleanThe domain is a known disposable (temporary) email service.
rolebooleanThe local part is a role/team inbox such as info@, sales@, support@.
freeProviderbooleanThe domain is a free webmail provider (gmail.com, yahoo.com, …).
didYouMeanstringSuggested fix for a likely domain typo (gmial.com → gmail.com).
inCleanListbooleanThe row is in CLEAN_LIST.csv.
sourcestringWhere the address came from.
sourceRowintegerData row number in your CSV (header not counted), or the position in the pasted list.
checkedAtstringISO time of the check.
Input settings (6)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Emailsemailsarray["[email protected]", "[email protected]"]
CSV filecsvUrlstring
Email columnemailColumnstring
Remove duplicatesdedupebooleantrue
Clean list keepscleanListstring"deliverable"
Parallel checksconcurrencyinteger20

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure