Email Verifier & Phone Number Validator
Pricing
from $1.40 / 1,000 contact checkeds
Email Verifier & Phone Number Validator
Bulk email verification and phone number validation in one run. Emails: syntax, live MX check, disposable and role-address flags, typo fixes. Phones: numbering plan, line type, US state and time zone. Verify a pasted list or another Actor's dataset. No API key, no mail sent.
Pricing
from $1.40 / 1,000 contact checkeds
Rating
0.0
(0)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Email Verifier & Phone Number Validator does bulk email verification and phone number validation in the same run. Every address gets a syntax check and a live MX record check against its domain's mail servers, so you learn whether that domain accepts mail at all, plus disposable email and role address flags and a typo suggestion. Every number is validated against the North American numbering plan and tagged with its line type, the US state of its area code and the time zone to call it in. Each row comes back with a verdict, the reason behind it, and a 0–100 contact score you can sort an outreach list by.
It can also work the other way round: give it a company name and it finds the company's website and any address published on it, so a lead with no contact stops being a dead row.
It takes a plain list, a set of contact objects, or the dataset of another Actor — so a lead list you scraped five minutes ago can be cleaned without moving data by hand. No login, no API key, no third-party service: the checks are DNS lookups plus open reference data, which is why they cost almost nothing and leak nothing.
What is Email Verifier & Phone Number Validator?
It is a bulk email verification and phone number validation tool for people who send cold e-mail, run dialers, or buy lead lists and suspect half of it is junk. Instead of a single yes/no it returns the evidence: whether the domain exists, whether it publishes mail servers, who runs that mail, whether the address is a role account like info@, whether the mailbox is a free consumer one, whether the domain is a known throwaway service, and whether a number is even dialable.
What it checks
| Check | What you get | Why it matters |
|---|---|---|
| Syntax | Bad addresses rejected before anything else | Typos and pasted junk never reach your sending tool |
| Domain exists | domain_not_found when the domain does not resolve | The single most common cause of hard bounces |
| Mail servers (MX) | deliverable when the domain accepts mail, domain_accepts_no_mail when it refuses | A domain that publishes no mail server can never receive your message |
| Throwaway domains | emailIsDisposable, from a list of 8,700 services | Sign-up spam and burner addresses out of your CRM |
| Role accounts | emailIsRole for info@, sales@, billing@ … | Deliverable, but nobody's personal inbox — different campaign, different expectations |
| Free mailboxes | emailIsFree for Gmail, Yahoo, Outlook … | A business contact on a free mailbox is usually a sole trader |
| Mail host | emailProvider: google, microsoft, zoho, proofpoint … | Tells you what filtering your message will face |
| MX host | emailMxHost: the domain's primary mail server, e.g. aspmx.l.google.com | Proof of who hosts the mailbox, for your own routing rules |
| Typos | emailSuggestion when the domain is one or two letters off a big provider | gmial.com becomes a recovered contact instead of a bounce |
| Numbering plan | valid / invalid with the rule that failed | Impossible numbers never reach a dialer |
| Number type | geographic, toll-free, premium, non-geographic, international | A toll-free number is a switchboard, not a person |
| Location | phoneState, phoneTimezone from the area code | Call inside business hours instead of at 6 a.m. |
| Formats | phoneE164 and a readable form | Ready for a CRM field or a dialer, whatever it expects |
| Website discovery | website, websiteStatus from the company name | A lead with no contact becomes a lead with a site |
| Address discovery | foundEmails, foundEmailSource | Reads the address the company publishes itself |
How to verify email addresses in bulk
Paste the addresses into the 📧 E-mail addresses field, one per line, and click Start. To verify email addresses that already live somewhere else, point the Actor at another Actor's dataset instead and it reads them from there. There is nothing to install, no API key to obtain and no SMTP server to configure — the Actor validates each address against public DNS and open reference data, then returns the verdict with the reason behind it.
Bulk email verification without sending a single email
Paste up to thousands of addresses and every one comes back as deliverable, risky or undeliverable, with the reason attached. Nothing is ever sent, so no mailbox is touched and no sending reputation is spent finding out what your list is worth. The checks are DNS lookups plus open reference data, which is why a run costs almost nothing and leaks nothing to a third-party service.
Phone number validator: line type, US state and time zone
Numbers are validated against the published North American numbering plan, not a regex. An unassigned area code, a reserved exchange or a service code is rejected with the rule that rejected it. Valid North American numbers come back in E.164 with the state and the time zone, so a call list can be sorted by local business hours before anyone picks up a phone. Numbers outside the plan are checked for structure and labelled as such rather than being guessed at.
MX record checker and disposable email checker in one pass
The same run answers three questions most tools split into separate products: does this domain publish mail
servers at all, is it a known throwaway service, and is the address a role account like info@ or sales@.
A domain with no MX record is the quiet killer in a bought list — the website works, the DNS resolves, and
every message bounces.
What it does not do, and why
This is the part most tools in this category are quiet about, so here it is plainly.
We do not knock on the mailbox. Confirming that one specific mailbox exists needs an SMTP conversation on port 25, and cloud platforms — Apify included — block outbound port 25 entirely. We measured it rather than assumed it: a lookup of the mail servers answers in about seven milliseconds, and a connection to those same servers on port 25 times out. Any serverless tool promising per-mailbox certainty is either routing through a private relay it does not mention, or guessing.
And even where port 25 is open, the answer lies. Gmail and Microsoft 365 accept any recipient at that stage and bounce later, so a "verified" verdict from that method is worth little on exactly the domains most of your list sits on.
So deliverable here means the domain accepts mail and the address is well formed — the check that removes the large majority of hard bounces. It does not mean a person is behind it. That distinction is why the reason and the flags are on every row: you decide what to send where.
Line type is missing on purpose too. Whether a US number is a mobile or a landline cannot be determined from free data — the authoritative databases are licensed commercially, and number portability makes the underlying block data wrong anyway. We would rather leave the field out than invent it.
Turning a company name into a contact
Registry and directory data is full of companies with no e-mail at all. Switch on 🔎 Find the company website and e-mail and every row that carries a company name gets a second pass:
- Candidate domains are built from the name, with the legal suffixes stripped:
Acme Holdings LLCbecomesacme.com,acme-holdings.com,acme.ioand so on. - Each candidate is resolved, and the home page is fetched.
- The name has to be on the page. This is the step that separates a real find from a plausible-looking wrong company, and most tools skip it.
- The home, contact and about pages are read for a published address, preferring one on the company's own domain.
websiteStatus tells you how much to trust the answer. verified means two or more
distinctive words of the company name appear on the page. probable means the name
is a single word — a real match, but a namesake is possible, so check before you send.
Single-purpose entities that never have a site, such as property vehicles and film
companies, come back as skipped_no_website_expected without a single request being
made, which keeps the run cheap.
On real registry names this finds a site for roughly four companies in ten, and an address on about four of every ten sites found. Billing follows the result: a search that finds nothing costs nothing.
How much does it cost to verify a list?
The Actor uses Apify's pay-per-event pricing: you are charged per contact checked, plus a fee only when the optional website search actually finds something. Rows that could not be checked are never charged.
| Event | Price | Per 1,000 |
|---|---|---|
| Contact checked (e-mail and/or phone) | $0.002 | $2 |
| Add-on: company website found | $0.005 | $5 |
| Add-on: e-mail address found on that website | $0.01 | $10 |
There is no browser and no proxy in this Actor — a DNS lookup and some in-memory lists — so platform usage is negligible and a list of ten thousand contacts finishes in well under a minute. The Apify Free plan ($5 monthly credit) covers roughly 2,500 contacts a month. Bronze, Silver and Gold Store tiers get a discount on top.
How to verify a list
- Paste your addresses into 📧 E-mail addresses, your numbers into 📱 Phone numbers, or both.
- If one person has both, use 👥 Contacts and pass objects — any extra fields you include, such as your own record id, are copied to the output row.
- To clean a list you just scraped, paste that run's dataset id into 🔗 Check a dataset from another Actor and name the fields to read.
- Pick 🎯 Keep only if you want the run to return just the usable rows.
- Click Start, then export as CSV, JSON or Excel, or read the dataset through the API.
⬇️ Input

{"emails": ["owner@acme.com", "info@gmail.com", "hello@mailinator.com"],"phones": ["+1 206 235 0243", "(212) 211-5678"],"keep": "all"}
Contacts with both channels
{"contacts": [{ "email": "jane@acme.com", "phone": "+1 415 555 2671", "crmId": "A-1042" },{ "email": "carlos@ejemplo.mx", "phone": "+52 55 1234 5678" }]}
crmId is not a field this Actor knows — it is copied through untouched, so the output lines up with your own records.
Cleaning another Actor's output
{"inputDatasetId": "aBcD1234efGh5678","emailField": "email, contactEmail","phoneField": "phone, contactPhone","keep": "usable"}
Point it at the dataset of a lead scraper — for example our US New Business Leads — and it reads the contacts out of that run directly.
⬆️ Output
One row per contact.

{"type": "contact","email": "info@gmail.com","emailStatus": "deliverable","emailDomain": "gmail.com","emailProvider": "google","emailMxHost": "aspmx.l.google.com","emailIsRole": true,"emailIsFree": true,"emailIsDisposable": false,"emailSuggestion": null,"phone": "+1 206 235 0243","phoneStatus": "valid","phoneE164": "+12062350243","phoneFormatted": "(206) 235-0243","phoneType": "geographic","phoneCountry": "US","phoneAreaCode": "206","phoneState": "WA","phoneTimezone": "America/Los_Angeles","contactScore": 75,"checkedAt": "2026-09-03T11:59:00.000Z"}

A row that failed
{"email": "sales@acmeholdings-llc.com","emailStatus": "undeliverable","emailReason": "domain_not_found","phone": "(212) 211-5678","phoneStatus": "invalid","phoneReason": "reserved_exchange","contactScore": 0}
reserved_exchange means the exchange code can never be assigned to a subscriber — 211 is a service code, like 911. Fourteen such codes exist, and they are checked for you.
Use cases
Cold outreach without burning the domain
Bounces above a few percent damage sender reputation for everything you send afterwards. Dropping undeliverable rows and treating risky ones carefully is the cheapest protection there is.
Cleaning bought or scraped lists
Lists sold by the thousand are full of dead domains and throwaway sign-ups. Run the list first, and the emailReason column tells you exactly what you paid for.
Dialers and call centres
phoneStatus keeps impossible numbers out of the queue, phoneType separates switchboards from direct lines, and phoneTimezone stops calls landing before breakfast.
Sorting a lead list
contactScore ranks contacts by how reachable they are: a deliverable company address beats a Gmail one, which beats a role account, which beats a throwaway.
Sign-up and form validation
Reject disposable domains and obvious typos at the point of entry, and suggest the correction with emailSuggestion.
Integrations
Run it from the Apify API, the JavaScript and Python clients, a schedule, or a webhook when another run finishes. It plugs into n8n, Make and Zapier through the Apify connectors, and results can be pushed straight to Google Sheets, Slack or a CRM.
The most useful pattern is chaining: a lead scraper writes its dataset, and this Actor is called with that inputDatasetId to clean it before anything reaches your outreach tool.
🤖 For AI Agents & LLM Apps
Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (lergassy/email-phone-verifier).
Purpose: decides whether contacts are worth using. Given e-mails or phone numbers, it returns a verdict per contact with the evidence behind it. Use it to answer "is this address worth sending to", "which of these numbers can be dialled" and "clean the list I just scraped".
Minimal input:
{ "emails": ["owner@acme.com"], "phones": ["+1 206 235 0243"] }
Output: one flat row per contact — type, email, emailStatus, emailReason, emailDomain, emailProvider, emailMxHost, emailIsRole, emailIsFree, emailIsDisposable, emailSuggestion, phone, phoneStatus, phoneReason, phoneE164, phoneFormatted, phoneType, phoneCountry, phoneAreaCode, phoneState, phoneTimezone, phoneTimezoneOptions, contactScore, checkedAt. Fields you pass in on a contact object are copied through unchanged.
Behaviors an agent should know:
- Set
findWebsite: truewhen a row has a company name but no address — it returnswebsite,websiteStatus,foundEmailsandfoundEmailSource. Trustverified, double-checkprobable(single-word names can hit a namesake), and readskipped_no_website_expectedas "this kind of entity never has a site". - Four inputs do the same job:
emails,phones,contacts(objects, when one person has both) andinputDatasetId(read another run's dataset). They can be combined, and duplicates are removed across all of them. emailStatusis about the domain, not the mailbox: cloud platforms block outbound port 25, so no serverless tool can prove a mailbox exists. Treatdeliverableas "worth sending",riskyas "check first",undeliverableas "do not send",unknownas "retry later" — never as bad.emailIsRole,emailIsFreeandemailIsDisposableare independent of the verdict. A deliverable address can be all three at once.- Mobile versus landline is deliberately absent for US numbers; it cannot be derived from free data. Do not infer it.
phoneTimezoneis empty for 21 US area codes that straddle a time-zone boundary; both candidates are inphoneTimezoneOptions.- To return only usable contacts, set
keeprather than filtering rows afterwards — the run is billed per contact checked either way, but the answer is smaller and cleaner. - Numbers written with a country code other than
+1get a structure check only, reported asphoneReason: "structure_only". - No proxies, no browser, no third-party API: a run of a few thousand contacts finishes in seconds.
❓ FAQ
Does a "deliverable" verdict guarantee the mailbox exists?
No, and no serverless tool can guarantee that. It means the address is well formed and its domain accepts mail, which is what removes most hard bounces. Mailbox-level confirmation needs an SMTP conversation on a port cloud platforms block, and the big providers answer misleadingly on that port anyway.
Can it tell me if a phone number is a mobile?
No. For US numbers that requires commercially licensed carrier data, and number portability makes the free approximations wrong. We leave the field out rather than invent it.
How fresh are the throwaway-domain and area-code lists?
The disposable-domain list is a community blocklist updated daily; the area-code table comes from the North American numbering administrator's own public database. Both are baked into the Actor and refreshed when it is rebuilt.
Is it legal to verify e-mail addresses?
Checking the technical validity of an address you already hold is routine practice and involves no message being sent. How you obtained the list and what you send to it are governed by your local rules — GDPR, CAN-SPAM and their equivalents. Ask a lawyer about your campaign, not about this check.
Does it send any e-mail?
No. Nothing is sent, and no address leaves the run except as a DNS question about its domain.
Can I use it with the Apify API or an MCP server?
Yes. It runs from the API and the official clients, and it is available to AI agents through the Apify MCP server without any extra setup.
Can it clean the output of another Actor?
Yes — that is what inputDatasetId is for. Give it the dataset id of a previous run and the field names to read.
How does it find a company website?
It builds candidate domains from the name, resolves them, and then requires the company's own name to appear on the page before reporting a match. A guess that cannot prove itself is discarded rather than returned.
What happens to my own fields?
Anything you attach to a contact object is copied to the output row untouched, so the results line up with your records.
Your feedback
Found a case it gets wrong, or need a check that is missing? Open an issue on the Issues tab — every one gets answered, and rules that turn out to be wrong get fixed.
You might also like
| Actor | What it does |
|---|---|
| Airbnb Scraper | Airbnb listings for any place and dates: nightly price, rating, beds, amenities, host |
| US New Business Leads | Newly registered US businesses with phone and e-mail, already checked |
| Google Flights Scraper | Live flight prices, layovers and booking options |
| Agoda Reviews Scraper | Hotel reviews and ratings, including the Booking.com reviews shown on Agoda |
| Mercado Libre Scraper | Latin American marketplace listings, prices and reviews |
Also known as
People look for this Actor when they need to verify email addresses, validate phone numbers, check an email list, or clean contacts before a campaign. It is an email verifier, an email validator, an email checker, a bulk email verification API, an MX record checker, a disposable email checker, a role address filter, a phone number validator, a phone validation API, a phone number checker, a contact verification tool and an email list cleaner — all in one run. It is all of those in one run, over a pasted list, a CSV, or another Actor's dataset.