Bulk Email Checker - Syntax, MX, Disposable & Typo Check
Pricing
from $0.21 / 1,000 checked emails
Bulk Email Checker - Syntax, MX, Disposable & Typo Check
Clean email lists fast: syntax, domain and MX checks, disposable and role account detection, free provider flag and typo fixes like gmial.com to gmail.com. $0.30 per 1,000. No mailbox pinging.
Pricing
from $0.21 / 1,000 checked emails
Rating
0.0
(0)
Developer
Kyle Pretorius
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Bulk Email Checker: Syntax, MX, Disposable and Typo Check
Clean an email list before you send to it. For every address this actor checks the format, whether the domain exists and can receive mail (MX records), whether it is a disposable or temporary address, whether it is a role account such as info@ or sales@, and whether it is a free provider such as Gmail. It also catches common typos and suggests the fix, for example jane@gmial.com to jane@gmail.com.
Each email gets one clear status, a recommended action and the reasons behind it.
Price: $0.30 per 1,000 checked emails, plus $0.0005 per run. Duplicates are removed first and are not charged.
What it checks
| Check | How |
|---|---|
| Format | Practical address rules: one @, allowed characters, no leading, trailing or double dots, length limits, valid domain labels and TLD. International domains are supported. |
| Domain exists | DNS lookup. Domains that do not exist are marked invalid. |
| Can receive mail | MX records. A domain with no MX but an A record is flagged as risky (mail may still arrive through the A record). A domain that publishes a "null MX" (it explicitly refuses mail, like example.com) is invalid. |
| Disposable | Matched against the community maintained disposable-email-domains list (about 9,200 domains, public domain CC0), including subdomains of listed domains. |
| Role account | info@, sales@, support@, admin@, noreply@, hr@ and about 80 more shared inbox names. |
| Free provider | Gmail, Yahoo, Outlook, Hotmail, iCloud, AOL, Proton, GMX, Yandex, Mail.ru and others. Shown as a flag only. |
| Typo | Close misspellings of popular providers (gmial.com, yahooo.com, hotmial.com) and wrong endings (gmail.con). Returns suggested_email. |
Each domain is looked up once per run, so lists with many addresses on the same domains run very fast.
What it does not do
It does not ping mailboxes. There is no SMTP check, so it cannot tell you whether a specific mailbox like john@company.com exists, and it does not detect catch-all domains. A valid_format_and_domain result means the address is well formed and its domain is set up to receive mail. If you need mailbox-level verification, run this first to remove the obvious bad addresses cheaply, then send only the survivors to a mailbox verifier.
Statuses
| status | recommendation | Meaning |
|---|---|---|
valid_format_and_domain | send | Well formed, domain exists and has mail servers, not disposable, not a role account, no typo. |
risky | review or remove | Deliverable domain but something to look at: role account, possible typo, no MX record (A record only), or a DNS lookup that failed twice. Disposable addresses are risky with remove. |
invalid | remove | Bad format, domain does not exist, domain refuses mail, or no mail server at all. |
Input
Use any mix of these:
{"emails": ["john.doe@gmail.com", "jane@gmial.com", "Sales Team <sales@acme.com>"],"fileUrl": "https://example.com/leads.csv","datasetId": "aBcD1234","datasetField": "email","maxEmails": 0}
emails: one per line, or several separated by commas or semicolons.fileUrl: a CSV or text file. A column namedemailis used if present, otherwise every email-like string in the file is checked. A Google Sheets "publish to web as CSV" link works.datasetId: the output of another Apify actor, such as a lead or contact scraper.datasetFieldnames the field that holds the email (arrays of emails are fine).
Output
One row per unique email:
{"email": "jane@gmial.com","input": "jane@gmial.com","status": "risky","recommendation": "remove","reasons": ["disposable_domain", "possible_typo", "no_mx_record_uses_a_record"],"is_valid_syntax": true,"domain": "gmial.com","domain_exists": true,"has_mx": false,"mail_server_fallback": true,"is_disposable": true,"is_role_account": false,"is_free_provider": false,"suggested_email": "jane@gmail.com","mx_records": [],"mailbox_checked": false}
Possible reasons: missing_at_sign, multiple_at_signs, missing_local_part, missing_domain, contains_whitespace, too_long, local_part_too_long, bad_dots_in_local_part, invalid_characters_in_local_part, invalid_domain, domain_has_no_tld, invalid_tld, ip_literal_domain_not_supported, domain_not_found, domain_does_not_accept_mail, no_mail_server, no_mx_record_uses_a_record, disposable_domain, role_account, possible_typo, dns_lookup_failed_<code>.
A run summary (counts per status, duplicates removed, domains looked up, duration) is saved as OUTPUT in the key-value store.
Common uses
- Clean a lead list before a cold email campaign to cut bounces and protect your sender reputation.
- Check sign-up emails from a form or CRM export and block disposable addresses.
- Fix typos in customer emails before sending receipts or onboarding mail.
- Cheap first pass before a paid mailbox verifier, so you only pay that verifier for addresses worth checking.
- Validate the output of contact or lead scrapers straight from their Apify dataset.
Pricing
Pay per event, platform usage included:
- $0.0003 per checked email ($0.30 per 1,000)
- $0.0005 per run at the default 512 MB memory (Apify charges the start event once per GB, minimum one)
Duplicates are removed before checking and are not charged. You can cap spend with the run's maximum total charge setting; the actor stops cleanly when it is reached.
API and integrations
Call it from the Apify API, the JavaScript or Python client, Make, Zapier, n8n or any MCP client like other Apify actors, and chain it after a scraper with an Apify integration so new leads are checked automatically.