Email List Verifier (syntax, MX, disposable, role, typo check)
Pricing
from $0.26 / 1,000 emails
Email List Verifier (syntax, MX, disposable, role, typo check)
Clean an email list before you send: syntax, domain exists, MX records, mail provider, disposable domains, role addresses, free-mail providers and typo suggestions (gmial.com to gmail.com), with a status (valid, risky, invalid, unknown) and a 0-100 score per address.
Pricing
from $0.26 / 1,000 emails
Rating
0.0
(0)
Developer
Larkmoor Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Clean an email list before you send: syntax check, domain exists, mail servers (MX) present, mail provider (Google Workspace, Microsoft 365...), disposable/temporary domains, role addresses (info@, sales@), free-mail providers and typo suggestions (gmial.com → gmail.com), with a status (valid_syntax_mx / risky / invalid / unknown) and a 0–100 score per address. DNS-based, so it is fast, safe for your sender reputation and works on lists of any size.
What you can use it for
- Before a campaign: drop invalid and disposable addresses so bounces don't hurt your sender reputation
- Lead lists: flag role addresses (info@, sales@) and free-mail signups, keep the business ones
- Signup forms and CRMs: catch typos (gmial.com) and dead domains at import time
- Data cleaning at scale: 100k addresses in one run
Why this one
- Checks what can be checked reliably without touching the mailbox: syntax (RFC-style), domain existence, MX mail servers, mail provider, 90+ disposable domains, 60+ free providers, 50+ role names, common typos
- DNS answers are cached per domain, so big lists from the same companies verify in seconds
- Clear status (valid_syntax_mx / risky / invalid / unknown) plus a 0–100 score and a plain-language reason for every address
- Pay only for results: $0.30 per 1,000 emails. No subscription.
Input
- Emails (
emails): One email per line (duplicates are removed). - Only return these statuses (
onlyStatuses): Empty = return every email with its status. - Max emails (
maxResults) Default:100000.
Output
One row per email in the dataset (JSON, CSV, Excel, or through the API). Sample:
[{"email": "hello@apify.com","normalized": "hello@apify.com","valid": true,"status": "valid_syntax_mx","reason": "syntax ok, domain has mail servers (role address)","local": "hello","domain": "apify.com","domainExists": true,"hasMx": true,"mxRecords": ["aspmx.l.google.com","alt1.aspmx.l.google.com","alt2.aspmx.l.google.com","aspmx2.googlemail.com","aspmx3.googlemail.com"],"mailProvider": "Google Workspace","isFreeProvider": false,"isDisposable": false,"isRole": true,"suggestion": null,"score": 70},{"email": "someone@gmial.com","normalized": "someone@gmial.com","valid": false,"status": "invalid","reason": "domain has no mail server (no MX)","local": "someone","domain": "gmial.com","domainExists": true,"hasMx": false,"mxRecords": null,"mailProvider": null,"isFreeProvider": false,"isDisposable": false,"isRole": false,"suggestion": "someone@gmail.com","score": 5}]
Tips
- This is a DNS-level verifier: it does not confirm that the specific mailbox exists (mailbox pinging from cloud servers is blocked by Gmail, Microsoft and most providers and gives unreliable answers).
valid_syntax_mxmeans the address is well-formed and its domain has mail servers; the mailbox itself is not checked (themailboxCheckedcolumn is always false). - Use onlyStatuses: ["valid_syntax_mx"] to get a pre-cleaned list directly (then run it through your ESP's bounce handling as usual).
Integrations and API
Run it on a schedule, trigger it from the API or a webhook, and send results to Google Sheets, Zapier, Make, Slack, a database or your own code with the platform's standard integrations.
Data and fair use
This tool reads only public sources (official APIs, public feeds or pages the publisher makes available to everyone) and respects robots.txt and rate limits. You are responsible for using the data in line with the source's terms and applicable law.
How much it costs
You pay per result (pay-per-event), nothing per month and nothing when a run returns nothing. The price is $0.30 per 1,000 emails on the Free plan, with automatic discounts on paid plans (Bronze −5%, Silver −10%, Gold −15%, Platinum −20%).
Worked examples:
- 100 emails → $0.03
- 1,000 emails → $0.30
- 10,000 emails → $3.00
- Plus $0.001 per run start.
Platform usage (compute, storage) is included in the price: the actor runs at a small memory setting by default, so a typical run of 1,000 emails finishes in well under a minute.
FAQ
Does it check whether the mailbox exists?
No. It checks syntax, that the domain exists, that it has mail servers (MX), disposable/role/free-provider lists and common typos. It never contacts the mailbox, so a valid_syntax_mx address can still bounce (catch-all domains, deleted mailboxes). It is a fast, cheap pre-send clean that removes the addresses that are guaranteed to bounce.
Why not call it 'deliverable'?
Because without a mailbox-level check nobody can promise deliverability, and we would rather be honest than sell a word.
Why are some fields empty?
A field is null when the source does not publish it for that row. The output keeps every column so your spreadsheet or integration always sees the same shape.
Can I run it on a schedule?
Yes. Use Apify Schedules (daily, hourly, cron) and connect the run to Make, Zapier, n8n, Google Sheets, a webhook or the API. Each run writes a dataset you can download as JSON, CSV or Excel.
Is there a free trial?
The Apify Free plan includes $5 of monthly platform credit, enough to try this actor on a few hundred results at no cost. There is no subscription for the actor itself.
Can an AI agent use this?
Yes. The actor is available through Apify's MCP server and the API, so LLM agents (Claude, ChatGPT, LangChain, CrewAI) can call it as a tool with the same input.
What happens if something fails?
Runs log every skipped item with a reason. If the source is down, the actor stops cleanly and you are only charged for the results it returned.
Changelog
- 2026-10-18 — Lower price with Bronze/Silver/Gold discounts; smaller default memory (cheaper runs); clean table view of results; FAQ and cost examples; statuses renamed to be honest:
valid_syntax_mxinstead ofvalid; newmailboxCheckedcolumn (always false, the mailbox is not contacted); default limit 1,000.
Support
Found a problem or need a field added? Open an issue on the Issues tab; it is read and answered.