Bulk Email Verifier - MX, Syntax & Deliverability Score
Pricing
from $0.70 / 1,000 results
Bulk Email Verifier - MX, Syntax & Deliverability Score
Verify and clean email lists with no API key, without sending any email. Checks syntax, resolves MX (DNS-over-HTTPS), flags disposable & role accounts, detects free webmail, and scores deliverability 0-100 (deliverable / risky / undeliverable). Read-only. Export CSV/JSON/Excel.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Flash Scrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Bulk Email Verifier — verify email addresses in bulk with syntax, MX, disposable & role checks
Verify email addresses in bulk before your next cold-email campaign — no API key, no subscription, and it never sends a single email. Paste a list, get back a clear deliverable / risky / undeliverable status, a reason code, and a 0–100 deliverability score for every address, at $1 per 1,000 verified emails. Built for list hygiene: cut bounces, protect your sender reputation, and stop paying to email dead inboxes.
What does it do?
For every email address in your list, the actor runs a fast, read-only verification pipeline:
- Syntax validation — RFC-style format check (length limits, local part, domain shape)
- MX record lookup — resolves the domain's mail servers over DNS-over-HTTPS (Google and Cloudflare resolvers), so it works from any network without port-25 access
- Disposable domain detection — flags temporary inboxes (mailinator, yopmail, guerrillamail, temp-mail and ~70 other domains)
- Role account detection — flags generic mailboxes like
info@,sales@,support@,noreply@,admin@that convert poorly and bounce often - Free webmail detection — labels gmail, outlook, yahoo, icloud, proton and other consumer providers so you can separate B2B from personal addresses
- Normalization + deduping — trims, lowercases, and (optionally) drops case-insensitive duplicates before verifying
Input is flexible: an array of strings, one address per line, or a single comma/space/newline-separated blob. Verification runs in parallel (configurable concurrency) with per-domain MX caching, so large lists finish quickly.
Use cases
- Cold outreach list cleaning — run every scraped or purchased list through the verifier and keep only
deliverablerows; bounces above ~2–3% get your domain flagged by Google and Microsoft. - Sales prospecting pipelines — chain it after a lead scraper so every contact you hand to sales already has a verified, scored email.
- Lead-gen agencies — deliver client lists with a
statusandscorecolumn attached; verified lists command higher prices than raw scrapes. - CRM hygiene — export your CRM's email column quarterly, verify it, and archive contacts whose domains no longer accept mail.
- Form-signup filtering — batch-check new signups and quarantine disposable domains before they hit your product analytics or drip campaigns.
Input
| Field | Type | Default | Description |
|---|---|---|---|
emails | array | (required) | List of email addresses to verify. You can paste them one per line, or pass an array. Also accepts a single comma/space/newline-separated string. |
concurrency | integer | 20 | How many emails to verify in parallel (1–100). |
dedupe | boolean | true | Drop duplicate addresses (case-insensitive) before verifying. |
includeInvalid | boolean | true | Keep malformed addresses in the results (flagged undeliverable) instead of dropping them. |
Example input:
{"emails": ["john@apify.com", "info@stripe.com", "noreply@gmail.com", "test@mailinator.com"],"concurrency": 20,"dedupe": true,"includeInvalid": true}
Only emails is required.
Output
One dataset row per verified address. Export to CSV, JSON, or Excel, or pull results via the Apify API.
{"email": "John@Apify.com","normalized": "john@apify.com","status": "deliverable","score": 75,"reason": "mx_valid","syntax_valid": true,"domain": "apify.com","is_free": false,"is_role": false,"is_disposable": false,"mx_found": true,"mx_host": "aspmx.l.google.com"}
Status and score map to a fixed, transparent rubric:
| status | reason | score | meaning |
|---|---|---|---|
deliverable | mx_valid | 75 | Valid syntax, domain has working mail servers, no risk flags |
risky | role_account | 55 | Generic mailbox (info@, sales@, ...) — deliverable but low-value for outreach |
risky | disposable | 15 | Temporary/throwaway domain |
undeliverable | no_mx_record | 5 | Domain has no mail servers — mail cannot be delivered |
undeliverable | invalid_syntax | 0 | Malformed address |
Example output
A real sample from a live run:
| status | score | reason | is_disposable | mx_found | |
|---|---|---|---|---|---|
| invalid@@bademail | undeliverable | 0 | invalid_syntax | false | false |
| test@mailinator.com | risky | 15 | disposable | true | true |
| hello@shopify.com | risky | 55 | role_account | false | true |
| info@stripe.com | risky | 55 | role_account | false | true |
Pricing
This actor uses Apify pay-per-event pricing: a result event is charged for each verified email in the dataset — $1 per 1,000 verified emails at the base tier. No subscription, no minimums, and no charge for runs that produce nothing. A free Apify plan is enough to try it — the platform's free monthly credit covers thousands of verifications, so you can clean a real list before paying anything.
Tips & FAQ
Does it do a full SMTP handshake with the mail server?
No — and the README won't pretend otherwise. This verifier checks syntax and MX/DNS only (plus disposable/role/free classification). It confirms the domain accepts mail, not that the specific mailbox exists. That's why a clean pass caps at a score of 75, not 100. The upside: it's read-only, sends nothing, needs no proxies or port 25, and never risks your IP reputation. For high-stakes sends, treat deliverable as "safe to include", and let your email tool's soft-bounce handling catch the remaining mailbox-level misses.
Can a deliverable email still bounce?
Yes, occasionally. A domain can have valid MX records while the individual mailbox is full, disabled, or never existed (catch-all domains are the usual culprit). MX-level verification typically removes the large majority of bounces from a scraped list, but it can't guarantee zero.
Why are role accounts marked risky rather than undeliverable?
info@ and sales@ mailboxes usually work — they're flagged because they're shared inboxes with low reply rates, and some ESPs penalize campaigns heavy on role addresses. Filter them out with the is_role column if your tooling dislikes them, or keep them for local-business outreach where they're often the only address available.
How big a list can I verify in one run?
There's no hard input cap. Verification is parallel (up to concurrency: 100) and MX lookups are cached per domain, so lists that share domains verify especially fast. For very large jobs, splitting into runs of a few tens of thousands keeps datasets easy to export.
What happens to malformed addresses?
With includeInvalid: true (the default) they stay in the output flagged undeliverable / invalid_syntax with a score of 0 — useful for auditing what was wrong with a source list. Set it to false to drop them silently. Note that every row pushed to the dataset is a charged result.
Does it need proxies or an API key?
No. MX resolution goes over DNS-over-HTTPS to Google and Cloudflare, which works from any IP, including datacenter IPs, with nothing to configure.
Related actors
- Email Pattern Finder — discover a company's email format when you have names but no addresses, then verify the guesses here
- Hotel & Host Leads Scraper — accommodation owner leads with emails worth verifying before outreach
- Restaurant Leads Scraper — restaurant leads by city and tech stack, a natural upstream source for this verifier
Found a bug or need a feature? Open an issue on the actor's Issues tab — typical response within 1 business day.