Email Risk Validator - Bulk Email Checker & MX Signals
Pricing
from $0.50 / 1,000 results
Email Risk Validator - Bulk Email Checker & MX Signals
Bulk email verification for CRM and lead lists. Check syntax, MX, disposable/free/role domains, typo suggestions, and optional SMTP signals. Risk hygiene only — not ownership or inbox-delivery guarantee.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Validate and clean email lists in bulk — syntax, DNS/MX, disposable and risk signals, optionally deeper SMTP probing — and download the results as Excel, CSV, or JSON.
- Paste addresses from CRM exports, lead lists, or forms; get one clean row per email.
- Fast checks by default: syntax (including internationalized addresses), DNS/MX and domain status, disposable / free / role flags, and likely domain-typo suggestions such as
gmial.com→gmail.com. - Optional SMTP Deep mode probes mailbox acceptance signals (no message is sent) and can detect catch-all domains.
- Every run writes a
RUN_SUMMARYrecord; a failed input writesERROR_SUMMARY. - Pay per event: $0.0005 per result row on every plan, plus a small $0.005 start fee.
Results are hygiene and risk signals. This Actor does not prove mailbox ownership, marketing consent, or guaranteed inbox delivery.
What does Email Risk Validator do?
Email Risk Validator turns a list of raw email strings into an Apify Dataset of structured validation rows. You paste emails, choose Fast or Deep mode, and cap how many addresses to process; the Actor writes one row per email plus a run-level summary.
- Fast mode (default,
enableSMTPoff): syntax validation, DNS/MX lookup and domain status, disposable / free-provider / role-account flags, typo suggestion, risk level with reasons and a confidence score. - SMTP Deep mode (
enableSMTPon): additionally probes RCPT acceptance —accepted,rejected,catch_all,temp_error,blockedortimeout— and withcheckCatchAlldetects catch-all domains. No email body is ever sent. - Free-plan guard: on the free Apify plan the Actor allows 10 runs and up to 1,000 results per run (a limit set by the Actor developer, not Apify); reaching it finishes the run cleanly with a
FREE_TIER_LIMITstatus instead of a cryptic error.
No local setup or third-party email-API key is required.
What data can you get from Email Risk Validator?
| Field | Description | Example |
|---|---|---|
input | The email string as you pasted it | user@mailinator.com |
inputIndex | Position of the input in your list | 0 |
email | The address that was checked | user@mailinator.com |
normalizedEmail | Normalized form used for checks | user@mailinator.com |
localPart | Part before the @ | user |
domain | Domain part | mailinator.com |
syntaxValid | Whether the address passes syntax rules | true |
valid | Composite hygiene result — not a delivery or ownership guarantee | false |
domainStatus | mx, fallback_a, null_mx, nxdomain, no_mx, temp_error or unknown | mx |
mxFound | Whether usable MX/A records were found | true |
mxRecords | MX hostnames returned | ["mail.mailinator.com"] |
disposable | Domain is a disposable/temporary mail provider | true |
freeProvider | Domain is a free webmail provider | false |
roleAccount | Address is a role/generic inbox such as info@ | false |
suggestion | Likely correction for a misspelled domain | user@gmail.com |
riskLevel | low, medium or high | high |
confidence | Confidence score between 0 and 1 | 0.55 |
reasons | Codes explaining the risk level | ["syntax_ok", "disposable_domain"] |
smtpStatus | Deep-mode RCPT result; not_checked when SMTP is off | not_checked |
catchAll | Whether the domain accepts any local part (Deep mode) | null |
smtpMxHost | MX host used for the Deep probe | null |
smtpCode | SMTP reply code from the Deep probe | null |
ownershipVerified | Always false; this Actor never verifies ownership | false |
error | Per-row error message when a check failed | null |
errorCode | Machine-readable error code | null |
How to use Email Risk Validator
- Open Email Risk Validator in Apify Console (a free Apify account is enough to try it).
- Paste addresses into
emails— one per line. - Leave
enableSMTPoff for Fast mode, which is the recommended default for large cleanups. - Set
maxResultsto a small number such as5for your first run. - Click Start and open the Dataset tab when the run finishes.
The emails field is required — an empty or missing list stops the run at once with an input error and charges no result rows. The input form's sample values make a good first run.
Fast mode (default)
Fill emails and keep enableSMTP off. Every listed address is checked for syntax, domain status, disposable/free/role flags and typos. Recommended batch: 100–5,000 emails.
SMTP Deep mode
Turn enableSMTP on for mailbox-acceptance signals, and keep checkCatchAll on to detect catch-all domains. Keep Deep batches small (2–50 emails) — probes are slower and some providers rate-limit or block them; in that case smtpStatus reports the outcome honestly (timeout, blocked, temp_error) and Fast fields are still delivered.
What to fill in
| Field | What to enter | Default |
|---|---|---|
emails | Email addresses to validate, up to 100,000 | Required; form shows samples |
maxResults | Maximum rows written to the dataset, up to 100,000 | 1000 |
enableSMTP | true to add Deep SMTP probing | false |
checkCatchAll | true to also detect catch-all domains in Deep mode | true |
concurrency | Parallel Fast checks, 1–20 | 10 |
dedupe | true to skip case-insensitive duplicates | false |
Fast mode:
{"emails": ["ceo@apple.com", "user@mailinator.com", "a@gmial.com"],"maxResults": 5,"enableSMTP": false}
Deep SMTP mode:
{"emails": ["info@example.com"],"maxResults": 5,"enableSMTP": true,"checkCatchAll": true}
maxResultscaps the rows one run writes. Free-plan users are capped at 1,000 results per run.- A malformed input stops the run at once with a clear error, before any row is charged.
- The
INPUT_ECHOrecord in the run's key-value store shows exactly how your input was read.
Output example
{"input": "user@mailinator.com","inputIndex": 0,"email": "user@mailinator.com","normalizedEmail": "user@mailinator.com","domain": "mailinator.com","localPart": "user","syntaxValid": true,"valid": false,"domainStatus": "mx","mxFound": true,"mxRecords": ["mail.mailinator.com"],"disposable": true,"freeProvider": false,"roleAccount": false,"suggestion": null,"riskLevel": "high","confidence": 0.55,"reasons": ["syntax_ok", "disposable_domain"],"smtpStatus": "not_checked","catchAll": null,"error": null}
You can export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table.
Why use this Email Risk validator?
- Pay per delivered row. You pay for result rows written to the dataset, not for addresses tried.
- Two depth levels in one Actor. Fast mode handles bulk hygiene; Deep mode adds SMTP signals only where you need them.
- Clear status, not cryptic errors. Reaching the free-plan limit ends the run cleanly with
FREE_TIER_LIMIT; a bad input names the field and the fix. - Honest signals. When a provider rate-limits a Deep probe,
smtpStatussaystimeout/blocked/temp_errorand the Fast fields are still delivered. - Typo rescue.
suggestionsurfaces likely misspellings such asgmial.comso you can correct high-value contacts. - No setup. No local install and no third-party email-API key — everything runs on Apify.
How much does it cost to use Email Risk Validator?
The Actor uses pay-per-event pricing: $0.005 per run start plus $0.0005 per result row. Platform usage is included in these prices — you do not pay separate Apify compute usage on top.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.0005 | $0.50 |
| Starter | $0.0005 | $0.50 |
| Scale | $0.0005 | $0.50 |
| Business | $0.0005 | $0.50 |
| Platinum | $0.0005 | $0.50 |
| Diamond | $0.0005 | $0.50 |
maxResultscaps the rows of a run; the free Apify plan is further capped at 1,000 results per run and 10 runs of this Actor in total.- The whole run stops at the Maximum cost per run you set in the run options (
maxTotalChargeUsdin the API). - The start event is charged once per GB of run memory, minimum once — at the default 512 MB that is a single $0.005 charge.
- The Apify Free plan includes $5.00 in monthly usage credit (about 9,990 rows at
$0.0005per row across Free-plan runs capped at 1,000 results per run).
Example: 100 emails in Fast mode on the Free plan cost 100 × $0.0005 + $0.005 = $0.055; 10,000 emails cost about $5.005.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this Actor as a tool in any MCP client that supports remote servers:
https://mcp.apify.com?tools=lentic_clockss/email-risk-validator
Sign in with Apify when the client asks (OAuth), or send the header Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns the run and dataset IDs; the agent then reads rows with get-dataset-items. Clients without remote MCP support can run npx @apify/actors-mcp-server --tools lentic_clockss/email-risk-validator with the APIFY_TOKEN environment variable.
Example prompt: "Validate these five email addresses and flag disposable or risky domains."
- Agent execution note: Set
maxResultsbetween5and20on exploratory tool calls to keep responses compact, and readRUN_SUMMARYandINPUT_ECHOfrom the default key-value store to inspect normalized inputs and delivered row counts.
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/email-risk-validator").call(run_input={"emails": ["ceo@apple.com"], "maxResults": 5})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/email-risk-validator').call({emails: ['ceo@apple.com'], maxResults: 5});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Or over HTTP: POST https://api.apify.com/v2/acts/lentic_clockss~email-risk-validator/runs with the input as the JSON body and your token in the Authorization: Bearer header, then GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Connect the results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or your own webhook from the Integrations tab of the Actor, or schedule regular runs with Apify Schedules.
FAQ
Is it legal to use Email Risk Validator?
The Actor checks addresses you provide against public DNS records and its own lists; it does not collect anyone's data from a site. You are responsible for how you use the results: email addresses are personal data in many jurisdictions and need a lawful basis, and validation is never a substitute for consent.
Why did my run end as ABORTED?
A run shows ABORTED when it was stopped by hand, hit its timeout or ran out of memory. Check the run log and status message to see which. Rows already delivered stay in the dataset, so inspect it before starting another run.
Does valid=true mean the email will deliver?
No. It means the address passed the checks you enabled — syntax, DNS/MX and list flags, plus SMTP signals when Deep mode is on. Delivery still depends on the provider, your content, reputation and recipient filters.
Does SMTP Deep mode send an email?
No. Deep mode only probes mailbox acceptance signals at the RCPT stage. No message body is sent.
Can Deep-mode results be timeout or blocked?
Yes. Some networks and providers rate-limit or block SMTP probes. When that happens the Fast fields still return and smtpStatus reflects the probe outcome honestly (timeout, blocked, temp_error).
Does this prove mailbox ownership or consent?
No. It does not replace OTP, magic-link or other ownership verification, and validation is not marketing consent — keep your own opt-in records and suppression lists.
How many results can I get?
One row per input email, up to maxResults (default 1,000, schema maximum 100,000). Free-plan runs are capped at 1,000 rows and 10 runs of this Actor; your Maximum cost per run can stop a run earlier.
Why did my run finish with FREE_TIER_LIMIT?
The Actor's developer allows free Apify plan users 10 runs and 1,000 results per run. When the run quota is reached the run still finishes successfully with that status; upgrade to a paid Apify plan for unlimited runs.
Limitations
- Results are hygiene and risk signals only — they do not prove mailbox ownership, marketing consent or inbox delivery.
- Deep SMTP probing can be rate-limited or blocked by the receiving provider;
smtpStatusthen reportstimeout,blockedortemp_errorrather than a verdict. - Catch-all domains accept any local part, so a
catch_allresult cannot confirm a specific mailbox exists. - Free-plan usage is limited to 10 runs and 1,000 results per run, set by the Actor developer.
- Disposable and free-provider lists are maintained snapshots; a brand-new provider may not be flagged yet.
- Do not use Deep probing for abusive mailbox enumeration.
Related validators and scrapers
More developer and data tools from the same publisher:
- Phone Number Validator
- Google Maps Scraper
- LinkedIn Scraper
- Yelp Scraper
- Kompass Scraper
- Thomasnet Scraper
- Stealth Web Scraper
- GitHub Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used.