# ZeroBounce

> Validate email addresses individually or in bulk using the ZeroBounce API. Returns deliverability status, sub-status, and contact metadata including name, location, and SMTP provider.

Source: https://cotera.co/docs/reference/tools/individual-tools/zerobounce

---

**Authentication Type:** API Key
**Description:** Validate email addresses individually or in bulk using the ZeroBounce API. Returns deliverability status, sub-status, and contact metadata including name, location, and SMTP provider.

***

## Authentication

To authenticate, you'll need a ZeroBounce API key. [Sign up at zerobounce.net](https://www.zerobounce.net) and find your API key in the [ZeroBounce dashboard](https://www.zerobounce.net/members/api/).

***

### Validate Email

Validate a single email address. Returns the full deliverability status along with contact metadata such as name, gender, location, and SMTP provider.

**Operation Type:** Query (Read)

**Parameters:**

* **email** `string` (required): The email address to validate
* **ipAddress** `string` (nullable): Optional IP address of the user who submitted the email, used to improve validation accuracy. Default: null
* **timeout** `number` (nullable): Timeout in seconds (3-60). Uses your account's default when null. Default: null

**Returns:**

* **address** `string`: The validated email address
* **status** `string`: Validation result. Values: `"valid"`, `"invalid"`, `"catch-all"`, `"unknown"`, `"spamtrap"`, `"abuse"`, `"do_not_mail"`
* **subStatus** `string`: Detailed sub-status code (e.g., `"mailbox_not_found"`, `"no_dns_entries"`, `"disposable"`)
* **freeEmail** `boolean`: Whether the email is from a free email provider (Gmail, Yahoo, etc.)
* **catchallDomain** `string` (nullable): The catch-all domain if status is `"catch-all"`
* **didYouMean** `string` (nullable): A suggested corrected email if a typo was detected
* **account** `string` (nullable): The local part of the email address (before `@`)
* **domain** `string` (nullable): The domain part of the email address
* **domainAgeDays** `string` (nullable): Age of the domain in days
* **activeInDays** `number` (nullable): Days since the mailbox was last active
* **activeFirstSeen** `string` (nullable): Date the mailbox was first seen active
* **smtpProvider** `string` (nullable): The email service provider detected for the domain
* **mxFound** `string`: Whether a valid MX record was found (`"true"` or `"false"`)
* **mxRecord** `string` (nullable): The primary MX record hostname
* **firstname** `string` (nullable): First name associated with the email if found
* **lastname** `string` (nullable): Last name associated with the email if found
* **gender** `string` (nullable): Predicted gender based on the first name
* **country** `string` (nullable): Country associated with the email
* **region** `string` (nullable): Region/state associated with the email
* **city** `string` (nullable): City associated with the email
* **zipcode** `string` (nullable): ZIP/postal code associated with the email
* **processedAt** `string`: Timestamp when the validation was processed

**Example Usage:**

```json
{
  "email": "john.doe@example.com",
  "ipAddress": "99.110.204.1"
}
```

***

### Validate Email Batch

Validate a batch of up to 200 email addresses in a single request. Each address is validated with the same depth as the single validation endpoint.

**Operation Type:** Query (Read)

**Parameters:**

* **emailBatch** `array of objects` (required): Array of email addresses to validate (up to 200)
  * **emailAddress** `string` (required): The email address to validate
  * **ipAddress** `string` (nullable): Optional IP address of the user who submitted this email. Default: null
* **timeout** `number` (nullable): Timeout in seconds for the entire batch (10-120). Uses your account's default when null. Default: null

**Returns:**

* **emailBatch** `array of objects`: Validation results for each email (same shape as single validate)
  * **address** `string`: The validated email address
  * **status** `string`: Validation result (`"valid"`, `"invalid"`, `"catch-all"`, `"unknown"`, `"spamtrap"`, `"abuse"`, `"do_not_mail"`)
  * **subStatus** `string`: Detailed sub-status code
  * **freeEmail** `boolean`: Whether the domain is a free email provider
  * **catchallDomain** `string` (nullable): Catch-all domain if applicable
  * **didYouMean** `string` (nullable): Suggested corrected email if a typo was detected
  * **account** `string` (nullable): Local part of the email
  * **domain** `string` (nullable): Domain part of the email
  * **domainAgeDays** `string` (nullable): Domain age in days
  * **activeInDays** `number` (nullable): Days since last active
  * **activeFirstSeen** `string` (nullable): Date first seen active
  * **smtpProvider** `string` (nullable): Email service provider
  * **mxFound** `string`: Whether MX record was found
  * **mxRecord** `string` (nullable): Primary MX record hostname
  * **firstname** `string` (nullable): First name if available
  * **lastname** `string` (nullable): Last name if available
  * **gender** `string` (nullable): Predicted gender
  * **country** `string` (nullable): Country associated
  * **region** `string` (nullable): Region/state associated
  * **city** `string` (nullable): City associated
  * **zipcode** `string` (nullable): ZIP code associated
  * **processedAt** `string`: Timestamp when processed
* **errors** `array of objects`: Addresses that could not be processed
  * **error** `string`: Error description
  * **emailAddress** `string`: The email address that failed

**Example Usage:**

```json
{
  "emailBatch": [
    { "emailAddress": "alice@example.com" },
    { "emailAddress": "bob@company.org", "ipAddress": "192.0.2.1" },
    { "emailAddress": "invalid.email@nonexistent-domain.xyz" }
  ]
}
```

***

## Common Use Cases

**List Hygiene:**

* Clean email lists before sending campaigns to reduce bounce rates and protect sender reputation
* Filter out spamtraps, abuse addresses, and do-not-mail entries from prospect lists
* Identify and remove invalid emails from CRM contact records

**Lead Qualification:**

* Validate emails from form submissions before storing them in your database
* Use the `status` field to prioritize outreach — focus on `"valid"` addresses first
* Use `catch-all` status to flag addresses that need manual verification

**Contact Enrichment:**

* Retrieve contact metadata (name, gender, location) to fill gaps in CRM records
* Identify the email service provider using `smtpProvider` for deliverability strategy
* Use `activeInDays` to gauge how recently a mailbox was active

**Bulk Processing:**

* Validate large lists in batches of up to 200 addresses per request
* Process errors separately using the `errors` array to retry or flag failures
* Combine with list segmentation to route emails by validation status

