# Email Address Validator (`web.harvester/email-address-validator`) Actor

A powerful tool for validating and assessing the quality of email addresses. This Actor provides comprehensive information about email deliverability, format validity, and classification.

- **URL**: https://apify.com/web.harvester/email-address-validator.md
- **Developed by:** [Web Harvester](https://apify.com/web.harvester) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 651 total users, 0 monthly users, 100.0% runs succeeded, 8 bookmarks
- **User rating**: 2.45 out of 5 stars

## Pricing

from $1.20 / 1,000 validated emails

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Emails Validator

A powerful tool for validating and assessing the quality of email addresses. This Actor provides comprehensive information about email deliverability, format validity, and classification.

![Emails Validator Banner](https://img.shields.io/badge/Emails%20Validator-blue)

### Why Use Emails Validator?

- **Reduce Bounce Rates**: Identify undeliverable emails before sending campaigns
- **Improve Data Quality**: Clean your email lists by removing invalid addresses
- **Enhance Security**: Detect disposable email addresses that might be used for fraud
- **Optimize Marketing**: Focus on high-quality email addresses for better engagement
- **Save Resources**: Avoid wasting resources on emails that will never reach their destination

### Features

- **Comprehensive Validation**: Checks email format, domain MX records, and SMTP validity
- **Quality Scoring**: Assigns a 0-100 quality score to each email address
- **Visual Status Indicators**: Clear ✅, ❌, ⚠️ symbols for quick assessment
- **Email Classification**: Identifies free, disposable, and role-based emails
- **Typo Detection**: Suggests corrections for potential typos in email addresses
- **Organized Results**: Multiple views for different analysis perspectives

### Input

Provide a list of email addresses to validate:

```json
{
    "emails": [
        "contact@company.com",
        "info@example.com",
        "john.doe@gmail.com",
        "support@nonexistentdomain123.com"
    ]
}
```

### Output

For each email address, the Actor provides detailed validation results:

```json
{
    "summary": "❌ security@company.com - Quality: 0%",
    "email": "security@company.com",
    "status": {
        "isDeliverable": false,
        "qualityScore": 0
    },
    "validation": {
        "format": true,
        "mx": true,
        "smtp": false,
        "catchall": null
    },
    "classification": {
        "free": false,
        "disposable": false,
        "role": true
    },
}
```

#### Understanding the Results

##### Status Indicators

- ✅ **DELIVERABLE**: The email is valid and can receive messages
- ❌ **UNDELIVERABLE**: The email cannot receive messages
- ⚠️ **RISKY**: The email might have deliverability issues

##### Quality Score

A numerical score from 0 to 100 indicating the overall quality of the email address:

- **80-100**: Excellent quality, highly likely to be deliverable
- **50-79**: Good quality, likely to be deliverable
- **20-49**: Fair quality, may have deliverability issues
- **0-19**: Poor quality, likely undeliverable

##### Validation Checks

- **Format**: Whether the email has a valid syntax
- **MX Records**: Whether the domain has valid mail exchange records
- **SMTP**: Whether the email address can receive messages
- **Catchall**: Whether the domain accepts all emails regardless of username

##### Classification

- **Free Email**: Whether the email is from a free provider (Gmail, Yahoo, etc.)
- **Disposable**: Whether the email is from a temporary/disposable service
- **Role-based**: Whether the email is a functional address (info@, support@, etc.)

### Data Views

The Actor provides multiple organized views for analyzing your results:

#### 1. Overview

A summary view showing email addresses, their deliverability status, and quality scores.

#### 2. Validation Details

Technical validation results including format checks, MX records, SMTP validation, and catchall status.

#### 3. Email Classification

Classification information showing which emails are free, disposable, or role-based.

### Use Cases

- **Marketing Teams**: Clean email lists before campaigns to improve deliverability rates
- **CRM Management**: Validate customer email addresses to ensure data quality
- **User Registration**: Verify email addresses during sign-up to prevent fake accounts
- **Lead Generation**: Assess the quality of collected email addresses
- **Data Migration**: Validate emails before transferring to a new system

### How It Works

1. The Actor takes a list of email addresses from your input
2. Each email undergoes comprehensive validation checks
3. The results are processed and formatted into a structured, easy-to-understand format
4. The data is presented in multiple organized views for analysis

# Actor input Schema

## `emails` (type: `array`):

List of email addresses to validate and assess for quality

## Actor input object example

```json
{
  "emails": [
    "contact@company.com",
    "info@example.com",
    "john.doe@gmail.com",
    "support@nonexistentdomain123.com"
  ]
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "emails": [
        "contact@company.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("web.harvester/email-address-validator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "emails": ["contact@company.com"] }

# Run the Actor and wait for it to finish
run = client.actor("web.harvester/email-address-validator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "emails": [
    "contact@company.com"
  ]
}' |
apify call web.harvester/email-address-validator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,web.harvester/email-address-validator"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2gSIoUuCHpN0s77It/builds/f3YFpNeJdc2dfrMqC/openapi.json
