Email Verification API - Bulk Validation and Email Finder avatar

Email Verification API - Bulk Validation and Email Finder

Under maintenance

Pricing

$10.00 / 1,000 results

Go to Apify Store
Email Verification API - Bulk Validation and Email Finder

Email Verification API - Bulk Validation and Email Finder

Under maintenance

Verify email addresses in bulk with SMTP, MX and catch-all checks, get the verdict and the reason code behind it, append the name, gender and location on the address, find a named person's work address, and detect the email pattern a company uses. Pay per result. Bring your own API key.

Pricing

$10.00 / 1,000 results

Rating

0.0

(0)

Developer

Nabeel Hassan

Nabeel Hassan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Verify a list of email addresses for deliverability, get both the verdict and the reason code behind it, append the name, gender and location sitting on each address, find a named person's work address at a company, and detect the address pattern a company uses without needing any name at all. One flat row per address, person or domain.

What this actor does

  • Validates in bulk, not one at a time. Addresses are sent to the provider's bulk endpoint in batches of up to 100, so a ten thousand address list is a hundred requests rather than ten thousand. Batch results are matched back to your input by address, not by position, so an address the provider refuses never shifts the rest of the list onto the wrong rows.
  • Returns the reason, not just the verdict. Every row carries the verdict and the reason code under it, which is what separates a temporary greylist or an unresponsive mail server from a mailbox that genuinely does not exist. Twenty six reason codes are exposed as a filter.
  • Appends the identity behind the address. Validation returns the first name, last name, gender, city, region, postcode and country the provider holds for the address, along with domain age, the SMTP provider, the MX record, the catch-all flag and the free mailbox flag.
  • Finds a named person's work address. Give the finder a list of names and a list of companies, by domain or by company name, and it pairs them up, returning the address with a confidence band of high, medium or low.
  • Detects a company's email pattern. Domain search returns the pattern a company uses, such as first dot last, with a confidence band and every runner-up pattern the provider considered. No name needed.
  • Answers the question of who is still active. The activity route returns how recently an address was seen engaging with email, which is how you retire a list without guessing.
  • Runs against the region you need. The default, United States and European Union deployments are all selectable, so a request can be kept inside a region when your data protection policy requires it.
  • Keeps the key out of every log line. This provider accepts the key only as a request parameter, never as a header, so the actor makes sure the real URL is never written to a log.
  • Never charges for a miss. Only rows carrying a resolved result are billed.

Input

FieldWhat it does
modeValidate, email finder, domain search or activity.
emailsAddresses to validate or check activity for.
ipAddressesOptional signup IPs, in the same order, to add geography.
domainsCompany domains for the finder and domain search.
companyNamesCompany names, for when you have the employer but not the domain.
fullNamesNames to find addresses for. Paired with each company.
statusesKeep only these verdicts.
subStatusesKeep only these reason codes.
excludeFreeEmailDrop free consumer mailboxes.
requireMxRecordKeep only domains that can receive mail at all.
regionDefault, United States or European Union endpoint.
batchSizeAddresses per bulk validation request, up to 100.
requestsPerMinutePace the run under your plan's rate limit.
skipNotFoundLeave unresolved inputs out of the dataset.
maxResultsHard cap on rows, and therefore on spend and run time.
apiKeyYour own API key. Stored as a secret.

Example output

{
"found": true,
"mode": "validate",
"query": "jane.doe@example.com",
"email": "jane.doe@example.com",
"status": "valid",
"subStatus": null,
"account": "jane.doe",
"domain": "example.com",
"didYouMean": null,
"domainAgeDays": 9092,
"freeEmail": false,
"mxFound": true,
"mxRecord": "mx.example.com",
"smtpProvider": "example",
"catchAllDomain": false,
"firstName": "Jane",
"lastName": "Doe",
"fullName": "Jane Doe",
"gender": "female",
"city": "San Francisco",
"region": "California",
"zipCode": "94105",
"country": "United States",
"activeInDays": 30,
"activeFirstSeen": "2019-03-14",
"processedAt": "2026-08-14 09:12:41.113",
"error": null,
"raw": { }
}

Frequently asked questions

What does an email verification API actually check?

It checks whether a mailbox can receive mail, in layers. The address is checked for syntax, the domain is checked for mail exchanger records, and the mailbox itself is probed over SMTP. On top of that the provider applies its own lists to catch spam traps, known complainers, disposable providers and role addresses. Each row returns the verdict of that whole process plus the reason code that decided it, along with the domain age, the SMTP provider, the MX record, the catch-all flag and the free mailbox flag.

What is the difference between the verdict and the reason code?

The verdict is one of valid, invalid, catch-all, unknown, spam trap, abuse or do not mail. The reason code is the detail underneath it, and it is where the useful decisions live. Two addresses can both come back as unknown when one was greylisted and will verify fine on a retry, while the other sits behind a mail server that never responded. Filtering on the reason code lets you retry the first group and drop the second.

How do I clean a list so it is safe to send to?

Run validate, set the verdict filter to valid, and turn on require a valid MX record. That leaves only addresses whose mailbox was confirmed and whose domain can receive mail. Add the drop free consumer mailboxes option when the list is meant for B2B outreach. If you would rather review catch-all domains yourself than lose them, add catch-all to the verdict filter and decide per domain, since a catch-all domain accepts everything and tells you nothing about the individual mailbox.

Can it find an email address, not just check one?

Yes, in two ways. The email finder takes a person's full name plus their employer, either as a domain or as a company name, and returns the most likely work address with a confidence band of high, medium or low. Domain search skips the person entirely and returns the address pattern the company uses, such as first dot last, with every runner-up pattern and its own confidence, which is what you want when you have a list of names and one company.

What does the activity data tell me?

It returns how recently the provider last saw that address engaging with email, expressed in days. It is the cheapest way to retire an aging list: an address can be perfectly valid and still belong to someone who has not opened a message in two years, and no amount of SMTP checking will tell you that.

Which regional endpoint should I use?

Use the default endpoint unless you have a reason not to. Choose the United States or European Union endpoint when your account is provisioned in that region, or when a data protection obligation means the addresses you are checking must not be processed outside it. All three deployments answer the same routes and return the same fields.

Do I need my own API key?

Yes. This actor does not include data access. You use your own API key from ZeroBounce, which is the provider whose email validation API this actor calls, created on their dashboard. Your own plan, credit balance and terms apply. Paste the key into the apiKey field, where it is stored as an Apify secret. This provider accepts the key only as a request parameter and not as a header, so the actor makes sure the real request URL never reaches a log line.

How does this handle rate limits and spent credits?

Requests are spaced evenly across the minute so a long list does not bunch up against the limiter, and the pace is yours to set. A rate limit response is retried with backoff, because it clears on its own. A spent credit balance is treated differently: the provider reports it inside an otherwise successful response, the actor recognises it, and the run stops with what it has rather than burning retries on a balance that waiting will not refill.

What happens when an address or a domain returns nothing?

The row is written with found: false and an error giving the provider's own reason, and the run continues to the next input. For the finder and domain search that reason is the provider's failure code, which distinguishes a free mailbox domain from a company the provider simply has no data for. Misses are not charged for. Set skipNotFound to true to leave them out of the dataset entirely.

How much does a run cost?

Pricing is pay per result: you are charged for each address, person or domain resolved into the dataset, and never for misses, for rows dropped by the verdict filters, or for duplicates. Apify platform usage is included in the per-result price. Your own API provider's credit balance is separate and billed by them.

Keyword map

email verification API, email validation API, bulk email verifier, email list cleaning, SMTP verification, MX record check, catch-all domain detection, disposable email detection, spam trap detection, role based email detection, email deliverability check, bounce rate reduction, email finder API, find email by name, company email pattern, domain search API, email activity data, list hygiene, B2B contact data, sales prospecting data