ParseForge Scrapers

Email Verifier - Bulk Validation, MX & Disposable Check

parseforge/email-verifier-scraper

Lead generationAutomation

Verify email lists in bulk without SMTP: RFC syntax, MX and DNS, null MX, disposable and free providers, role accounts, typo fixes, SPF/DMARC and a clear verdict. Export CSV, Excel, JSON or XML.

Run this scraper See the API call
Total runs
4
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Email Verifier - Bulk Validation, MX & Disposable Check return?

ParseForge Banner

โœ‰๏ธ Email Verifier Scraper

๐Ÿš€ Export verified email lists in seconds. Every address gets a verdict (valid domain, risky or invalid), a plain-English reason, a 0-100 score and 25 columns of evidence: syntax, MX records, mail provider, SPF, DMARC, disposable, free provider, role account, parked domain and a "did you mean" typo fix.

Paste addresses or link a CSV, and the Actor checks each one against the rules mail servers actually apply: RFC 5321/5322 syntax, whether the domain exists, whether it publishes MX records (or a null MX that refuses all mail), and whether it falls back to A/AAAA records. It then compares the domain with maintained open lists of 8,971 disposable domains, 14,176 free-provider domains, 1,018 role names and the 1,438 top-level domains in the IANA root zone, all refreshed every time the Actor is built.

DNS answers are cached per domain, so a list with 50,000 Gmail addresses costs one set of Gmail lookups. On our 58-address test set (big providers, company domains, disposable services, typos, dead domains and malformed strings) every verdict matched the expected answer.

๐ŸŽฏ Target Audience ๐Ÿ’ก Primary Use Cases
Growth and sales teams, email marketers, CRM admins, SaaS sign-up flows, data vendors, agencies Clean a list before a campaign, block disposable sign-ups, fix typos at import, split B2B from free addresses, keep CRM data tidy

๐Ÿ“‹ What the Email Verifier Scraper does

  • โœ… Syntax check (RFC-aware). Dot-atom and quoted local parts, 64/254 length limits, IDN domains converted to punycode, IP-literal and malformed domains rejected with the exact issue.
  • ๐Ÿงน Clean-up first. Name <user@domain.com>, mailto: links, stray quotes and trailing punctuation are stripped; the domain is lower-cased into normalizedEmail.
  • ๐Ÿ“ฎ MX and DNS. Domain existence (NXDOMAIN), MX records with priorities, null MX (RFC 7505), A/AAAA fallback, SPF and DMARC.
  • ๐Ÿข Mail provider. Google, Microsoft 365, Outlook.com, Yahoo, iCloud, Zoho, Proton, security gateways like Proofpoint and Mimecast, forwarding services and more, read from the MX hosts.
  • ๐Ÿ—‘ Disposable, free and role accounts. Flags temporary inboxes, consumer providers and shared inboxes like info@ or sales@.
  • โœ๏ธ Typo fixes. gmial.com becomes gmail.com, company.cmo becomes company.com.
  • ๐Ÿ…ฟ๏ธ Parked domains. Name servers or MX hosts that belong to parking and domain-sale services.
  • ๐Ÿšฆ Verdict, reason and score. One of valid-format-deliverable-domain, risky, invalid or unknown, with the reason spelled out.

๐Ÿ’ก Why it matters: a bounce rate above a few percent hurts sender reputation for every email you send afterwards. Most bad addresses in real lists are typos, dead domains, disposable inboxes and role accounts, and all of those are caught here without sending a single message.

โš ๏ธ What it does not do: this Actor does not connect to mail servers over SMTP, so it cannot tell whether a specific mailbox exists on a valid domain, and it cannot detect catch-all domains. A valid-format-deliverable-domain verdict means the address is well formed and its domain is set up to receive mail.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

Field Description
๐Ÿ“ง email The value exactly as you provided it
โœ‰๏ธ normalizedEmail Cleaned address, domain lower-cased and in ASCII
๐Ÿšฆ verdict valid-format-deliverable-domain, risky, invalid or unknown
๐Ÿ’ฌ reason Plain-English explanation of the verdict
โญ qualityScore 0 (undeliverable) to 99 (clean address on a well configured domain)
โœ… syntaxValid Yes / No
๐Ÿงฉ syntaxIssue The exact syntax problem, or N/A
๐Ÿ‘ค localPart The part before the @
๐ŸŒ domain The part after the @
๐Ÿ  domainExists Yes, No (NXDOMAIN) or Unknown
๐Ÿ“ฎ hasMx Whether the domain publishes MX records
๐Ÿ“‹ mxRecords Every MX record as "priority host"
๐Ÿฅ‡ primaryMx The lowest-priority MX host
๐Ÿข mailProvider Mail provider recognised from the MX hosts
๐Ÿท mailProviderType Mailbox provider, Security gateway, Forwarding service, Email API service, Other or None
๐Ÿ” aRecordFallback When there is no MX: whether an A/AAAA record can still receive mail
๐Ÿ›ก hasSpf SPF record present
๐Ÿ” hasDmarc DMARC record present
๐Ÿ—‘ disposable Temporary / throwaway email domain
๐Ÿ†“ freeProvider Consumer email provider (Gmail, Outlook.com, Yahoo...)
๐Ÿ‘ฅ roleAccount Shared role inbox (info@, sales@, support@...)
โœ๏ธ typoSuggestion Corrected address when the domain looks misspelled
๐Ÿ…ฟ๏ธ parkedDomain Domain served by a parking or domain-sale service
๐Ÿ•’ scrapedAt When the check ran
โŒ error null on success

Three real rows from the prefilled example:

[
  {
    "email": "first.last@stripe.com",
    "normalizedEmail": "first.last@stripe.com",
    "verdict": "valid-format-deliverable-domain",
    "reason": "Valid syntax, domain accepts mail (MX found). Mailbox existence not tested (no SMTP)",
    "qualityScore": 95,
    "syntaxValid": "Yes",
    "syntaxIssue": "N/A",
    "localPart": "first.last",
    "domain": "stripe.com",
    "domainExists": "Yes",
    "hasMx": "Yes",
    "mxRecords": [
      "10 aspmx.l.google.com",
      "20 alt1.aspmx.l.google.com",
      "20 alt2.aspmx.l.google.com",
      "30 aspmx2.googlemail.com",
      "30 aspmx3.googlemail.com"
    ],
    "primaryMx": "aspmx.l.google.com",
    "mailProvider": "Google (Gmail / Workspace)",
    "mailProviderType": "Mailbox provider",
    "aRecordFallback": "N/A",
    "hasSpf": "Yes",
    "hasDmarc": "Yes",
    "disposable": "No",
    "freeProvider": "No",
    "roleAccount": "No",
    "typoSuggestion": "N/A",
    "parkedDomain": "No",
    "scrapedAt": "2026-09-25T01:52:06.916Z",
    "error": null
  },
  {
    "email": "your.name@gmial.com",
    "normalizedEmail": "your.name@gmial.com",
    "verdict": "risky",
    "reason": "Disposable / temporary email domain; Possible typo, did you mean gmail.com?; No MX record; delivery relies on the A/AAAA fallback",
    "qualityScore": 1,
    "syntaxValid": "Yes",
    "syntaxIssue": "N/A",
    "localPart": "your.name",
    "domain": "gmial.com",
    "domainExists": "Yes",
    "hasMx": "No",
    "mxRecords": [],
    "primaryMx": "N/A",
    "mailProvider": "None",
    "mailProviderType": "None",
    "aRecordFallback": "Yes",
    "hasSpf": "No",
    "hasDmarc": "No",
    "disposable": "Yes",
    "freeProvider": "No",
    "roleAccount": "No",
    "typoSuggestion": "your.name@gmail.com",
    "parkedDomain": "No",
    "scrapedAt": "2026-09-25T01:52:06.987Z",
    "error": null
  },
  {
    "email": "user@example.com",
    "normalizedEmail": "user@example.com",
    "verdict": "invalid",
    "reason": "Domain publishes a null MX (RFC 7505): it accepts no email",
    "qualityScore": 0,
    "syntaxValid": "Yes",
    "syntaxIssue": "N/A",
    "localPart": "user",
    "domain": "example.com",
    "domainExists": "Yes",
    "hasMx": "No",
    "mxRecords": [],
    "primaryMx": "N/A",
    "mailProvider": "None",
    "mailProviderType": "None",
    "aRecordFallback": "No",
    "hasSpf": "Yes",
    "hasDmarc": "Yes",
    "disposable": "No",
    "freeProvider": "No",
    "roleAccount": "Yes",
    "typoSuggestion": "N/A",
    "parkedDomain": "No",
    "scrapedAt": "2026-09-25T01:52:06.916Z",
    "error": null
  }
]

โœจ Why choose this Actor

  • ๐Ÿงพ A reason for every verdict. No black-box score: each row says exactly why it is risky or invalid.
  • ๐Ÿ”Ž Evidence you can audit. The MX records, provider, SPF and DMARC come back with the verdict, so you can build your own rules on top.
  • ๐Ÿง  Catches what regex misses. Null MX domains like example.com, non-existent TLDs like .con, and typo domains that are live but owned by someone else.
  • ๐Ÿ”„ Fresh lists. Disposable, free-provider, role and TLD lists are pulled from their maintained open sources at every build.
  • โšก Fast and cheap to run. DNS only, cached per domain, with no proxies and no browser.
  • ๐ŸŽ› Your rules. Choose whether role accounts or free providers count as risky.

๐Ÿ“ˆ How it compares to alternatives

This Actor Regex-only validators SMTP verifiers
Syntax per RFC 5321/5322 โœ… Partial โœ…
Domain exists, MX, null MX, A fallback โœ… โŒ โœ…
Disposable, free, role, parked flags โœ… โŒ Varies
Typo suggestions โœ… โŒ Varies
SPF / DMARC and mail provider โœ… โŒ Rarely
Mailbox exists / catch-all โŒ (no SMTP) โŒ โœ… when the server answers honestly
Sends traffic to the recipient's mail server Never Never Yes

SMTP verifiers can confirm a mailbox, but many providers (Yahoo, Microsoft 365 behind gateways, catch-all domains) answer "accepted" for anything, and probing from shared cloud IPs gets blocked. This Actor focuses on the checks that are always reliable.

๐Ÿš€ How to use

  1. Create a free Apify account with $5 credit: sign up here.
  2. Open the Email Verifier Scraper and paste your addresses into Email addresses, or add a CSV/TXT link under Bulk import.
  3. Set Max Items to the number of addresses you want checked.
  4. Optionally switch the verification rules (role accounts, free providers, SPF/DMARC, duplicates).
  5. Click Start and download the results as CSV, Excel, JSON or XML.

Example run settings:

{ "emails": ["support@github.com", "your.name@gmial.com", "user@example.com"], "maxItems": 100, "freeProvidersAreRisky": true }

๐Ÿ’ผ Business use cases

๐Ÿ“ฃ Email marketing

Clean a list before a campaign: drop invalid and disposable addresses, fix typos, and keep your bounce rate and sender reputation healthy.

๐Ÿงฒ Lead generation and sales

Score scraped or purchased leads, separate company domains from free providers with freeProvider, and see which prospects run Microsoft 365, Google Workspace or a security gateway.

๐Ÿ›ก Sign-up and fraud prevention

Screen new accounts for throwaway inboxes, parked domains and misspelled addresses before they reach your database.

๐Ÿ—‚ CRM and data hygiene

Run the whole CRM export once a quarter, suggest corrections for typos, and flag role inboxes that should not be treated as a person.

๐Ÿ”Œ Automating Email Verifier Scraper

  • Make / Zapier / n8n: verify each new form submission or CRM contact the moment it arrives.
  • Slack: post a summary of invalid and risky addresses after each run.
  • Google Drive / Sheets: link a published sheet as a list file and export the results back.
  • Airbyte: load verification results into your warehouse.
  • GitHub Actions: schedule a nightly check of your newsletter list.
  • API: call the Actor from any backend with the Apify API and read the dataset.

๐ŸŒŸ Beyond business use cases

  • Research: measure how many addresses in a public dataset point at dead or disposable domains.
  • Personal: tidy your own contact list or wedding guest list before a mail-out.
  • Non-profit: keep donor and volunteer lists deliverable on a tight budget.
  • Experimentation: study how organisations configure MX, SPF and DMARC.

๐Ÿค– Ask an AI assistant about this scraper

Ask ChatGPT, Claude or Perplexity: "How do I verify an email list with the ParseForge Email Verifier Scraper on Apify and filter out risky addresses?" and link them to this page for the field list above.

โ“ Frequently Asked Questions

๐Ÿ“ฌ Does it check whether the mailbox really exists?

No. That needs an SMTP connection to the recipient's mail server, which this Actor never makes. It verifies everything up to the mailbox: syntax, domain, MX, provider and risk flags.

๐ŸŽฏ Can it detect catch-all domains?

No. Catch-all detection needs an SMTP probe with a random address, so there is no catch-all column rather than a guess.

๐Ÿšฆ What does valid-format-deliverable-domain mean?

The address is well formed and its domain exists and publishes MX records, so mail can be delivered to that domain. Whether the specific inbox exists is not tested.

โš ๏ธ Why is my address marked risky?

The reason column lists every cause: disposable domain, possible typo, parked domain, no MX (A record fallback only), unusual local part, role account, or free provider if you turned that rule on.

๐Ÿงญ What does unknown mean?

The domain's DNS servers did not answer in time, even after retrying through public resolvers. Run those rows again later.

๐Ÿงช Why is user@example.com invalid when the domain exists?

example.com publishes a null MX record (RFC 7505), which is the official way to say "this domain accepts no email".

โœ๏ธ How are typos detected?

The domain is compared with popular consumer mail domains using edit distance, with tight limits so real company domains are not "corrected". Top-level domains that do not exist, like .con or .cmo, get the closest common one.

๐Ÿ‘ฅ Are role accounts bad?

Not always. They are real inboxes but shared, often filtered, and a poor fit for personal outreach. They count as risky by default; switch the rule off to treat them as valid.

๐Ÿ“ฅ Can I upload a CSV?

Yes. Put a public link to a CSV, TXT or JSON file under Bulk import. Every email address in the file is picked up, whatever column it sits in.

๐Ÿ” Are duplicates removed?

Yes by default, comparing the cleaned-up, lower-cased address. Switch it off to get one row per input line.

๐ŸŒ Does it support international addresses?

Yes. Internationalized domain names are converted to punycode and checked normally. Addresses with non-ASCII characters before the @ are valid but marked risky because both mail servers must support SMTPUTF8.

๐Ÿ›ฐ Do I need a proxy?

No. The Actor only makes DNS queries, never web requests to the domains it checks, so no proxy is used.

๐Ÿ”Œ Integrate with any app

Use the Apify API, the JavaScript and Python clients, webhooks, or the Make, Zapier and n8n integrations to send verification results wherever you work.

๐Ÿ”— Recommended Actors

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

Credits: the free-provider list comes from free-email-domains (MIT, ยฉ Kiko Beats), the role-account list from role-based-email-addresses (MIT, ยฉ Mixmax, Inc) and the disposable list from disposable-email-domains (CC0, public domain). Full notices are in THIRD_PARTY_NOTICES.md.

โš ๏ธ Disclaimer: this is an independent tool, not affiliated with any email provider or with the maintainers of the open lists it uses. It checks only publicly available DNS data and never contacts a mailbox.

What input does the Email Verifier - Bulk Validation, MX & Disposable Check accept?

FieldTypeWhat it doesDefault
emails array Email addresses to verify, one per line. Messy values are cleaned up first: "Name ", "mailto:" links, quotes and trailing punctuation are handled. ["support@github.com","first.last@stripe
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
emailFiles array Public links to CSV, TXT or JSON files (for example a Google Sheets "publish to web" CSV link). Every email address found anywhere in the file is verified, added after the addresses above. not set
roleAccountsAreRisky boolean Role accounts (info@, sales@, support@, admin@...) are shared inboxes, not a person. On: they get the risky verdict. Off: they can be valid and are only flagged in the roleAccount column. true
freeProvidersAreRisky boolean Switch on for B2B lists where a Gmail, Outlook.com or Yahoo address is not a business contact. false
checkMailAuth boolean Look up the domain's SPF and DMARC records (two extra DNS queries per unique domain). A domain with neither is a weaker mail domain and gets a lower quality score. true
removeDuplicates boolean Verify each address once, comparing the cleaned-up, lower-cased address. true

How much does the Email Verifier - Bulk Validation, MX & Disposable Check cost?

from $1.28 per 1,000 results

Charged forWhat it isPrice each
Result item Charged once per result delivered to the dataset. $0.001275 to $0.0015

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Email Verifier - Bulk Validation, MX & Disposable Check API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~email-verifier-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "emails": [
      "support@github.com",
      "first.last@stripe.com",
      "someone@mailinator.com",
      "your.name@gmial.com",
      "user@example.com",
      "hello@this-domain-does-not-exist-7731.com",
      "not-an-email",
      "sales@salesforce.com",
      "first.last@nasa.gov",
      "user@gmail.con"
    ],
    "maxItems": 10,
    "roleAccountsAreRisky": true,
    "freeProvidersAreRisky": false,
    "checkMailAuth": true
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "emails": [
    "support@github.com",
    "first.last@stripe.com",
    "someone@mailinator.com",
    "your.name@gmial.com",
    "user@example.com",
    "hello@this-domain-does-not-exist-7731.com",
    "not-an-email",
    "sales@salesforce.com",
    "first.last@nasa.gov",
    "user@gmail.con"
  ],
  "maxItems": 10,
  "roleAccountsAreRisky": true,
  "freeProvidersAreRisky": false,
  "checkMailAuth": true
}

What do users say about the Email Verifier - Bulk Validation, MX & Disposable Check?

No reviews yet. Be the first.

How do I report an issue with the Email Verifier - Bulk Validation, MX & Disposable Check?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Email Verifier - Bulk Validation, MX & Disposable Check on Apify All scrapers