Bulk Email Verifier — Low-Bounce List Cleaner
Pricing
from $0.50 / 1,000 email-verifieds
Bulk Email Verifier — Low-Bounce List Cleaner
Verify any list of emails before you send. Checks syntax, domain MX, disposable, role and free-provider — returns a valid / risky / invalid verdict per address so your bounce rate stays low.
Pricing
from $0.50 / 1,000 email-verifieds
Rating
0.0
(0)
Developer
Mohammed Samaan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Bulk Email Verifier
Paste a list, chain a dataset, or point at a CSV URL — get back every address with a status, a 0–100 score, and the exact reason, so you can delete the bounces before they wreck your sender reputation.
Who it's for
- Cold-email agencies and SDR teams cleaning a list before a send
- Anyone chaining this after a scraper (ours or another) to grade the emails it found before they hit an outreach tool
- Newsletter and e-commerce lists that need a periodic bounce-risk cleanup
What you get
| Field | What it is |
|---|---|
email | Normalized address |
status | valid / invalid / catch_all / unknown / disposable / risky |
score | 0–100 deliverability confidence |
reason / reason_detail | Machine-readable code + a plain-English sentence |
syntax_valid | Passed the offline format check |
mx_found / mx_host | Domain has a mail destination, and which one |
smtp_checked | Whether the mailbox-level check actually ran |
smtp_valid | Mail server's verdict on the mailbox, null if not checked |
is_disposable / is_role / is_free_provider | Throwaway / generic inbox / consumer provider |
has_tag / base_email | +tag detection and the de-dupe base address |
typo_suggestion | Suggested fix for a likely-mistyped domain, or null |
domain_has_spf / domain_has_dmarc | Whether the domain publishes those records |
checked_at / duration_ms | Timestamp and how long the check took |
A SUMMARY record with the run's tally is written to the key-value store.
Input
{"emails": ["info@apify.com", "someone@gmial.com", "throwaway@mailinator.com"],"treatRoleAsRisky": true,"concurrency": 20}
Instead of (or alongside) emails, you can chain another actor's dataset with
inputDatasetId + emailField, or point csvUrl at a CSV file (Google Sheets
and Dropbox share links are converted to direct downloads automatically). All
three sources merge and de-duplicate in one run.
Verification depth
Every address always gets: syntax check, typo suggestion, plus-tag detection, disposable/role/free-provider lookup, MX lookup, and SPF/DMARC presence check — all free, offline or DNS-only.
SMTP mailbox check is available when a relay is configured. Apify's cloud
blocks outbound port 25, so the mailbox-level RCPT TO probe runs through a
small relay you point the actor at (relayUrl + relayToken, or the
EMAIL_RELAY_URL / EMAIL_RELAY_TOKEN environment variables). A relay is
also what lets the actor detect catch-all domains, by probing a random address
on the domain first. Without a relay, the run does not fail — it logs a
warning, sets smtp_checked: false on every row, and grades from syntax,
lists, MX and domain health instead. The relay is open source and ships in
this repo under email-relay/.
Pricing
$0.50 per 1,000 emails verified. Addresses that fail the free, offline
syntax check are not charged by default (skipInvalidSyntax). Duplicates are
removed before verification, so you pay for unique addresses only.
How it compares
No browser, no per-second compute — verification is DNS lookups and (when a
relay is configured) short SMTP conversations that stop before DATA, so
nothing is ever sent. That keeps this fast and cheap to run against large
lists compared to a verifier built around a heavier scraping stack.
Use with n8n / Make / Zapier
Add an Apify integration node, run this actor with your list or dataset ID as
input, then read the finished dataset back into your workflow to filter out
anything that isn't valid before it reaches your send step.
FAQ
Why is an address unknown? Either the mail server greylisted the probe
and it didn't clear after retries, the server refuses probes from unknown IPs,
or no relay was configured for mailbox-level checking. unknown means the
check didn't reach a verdict — it isn't a soft "invalid".
Does it detect catch-all domains? Only when a relay is configured — that's what lets the actor probe a random address on the domain to test whether it accepts mail for anything. Without a relay, catch-all domains are not flagged; they come back MX-only.
Do you send email to the addresses? No. The SMTP conversation, when it
runs, stops at RCPT TO and never reaches DATA.
Can I re-run it later? Yes — mailboxes go stale. Re-verifying a list every few months is normal practice.
What does the score mean? A 0–100 deliverability confidence built from whichever checks actually ran, adjusted for role/free-provider/typo/plus-tag flags — not a claimed accuracy percentage, since accuracy depends on the mix of domains in your list.