# Email Verifier & Validator | Bulk Email Verification (`michael.g/email-verifier-validator`) Actor

Bulk email verifier and email validator for email list verification. Verify email addresses, detect invalid emails, check deliverability, and clean email lists to reduce bounce rates.

- **URL**: https://apify.com/michael.g/email-verifier-validator.md
- **Developed by:** [Michael G](https://apify.com/michael.g) (community)
- **Categories:** Lead generation, Automation, MCP servers
- **Stats:** 432 total users, 169 monthly users, 100.0% runs succeeded, 37 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.60 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### What Does Email Verifier & Validator Do?

The Email Verifier actor analyzes email addresses and returns a clear deliverability decision together with detailed verification data.

For each email address, the actor:

1. Runs a verification flow inside the actor engine.
2. Normalizes verification signals into a stable schema.
3. Calculates a custom deliverability score between `0` and `100`.
4. Determines both business status (`good`, `risky`, `bad`) and technical status.
5. Stores full verification data in `verification_details`.
6. Saves results to the Apify dataset.

### What checks are performed?

| Check | Description |
|------|-------------|
| Syntax validation | Verifies that the email address format is valid |
| Domain & MX records | Checks that the domain exists and has mail servers |
| SMTP reachability | Tests if the mail server responds to mailbox verification |
| Catch-all detection | Detects domains that accept all email addresses |
| Disposable email detection | Identifies temporary email services |
| Role-based email detection | Flags addresses like `info@`, `support@`, `admin@` |
| Free email provider detection | Detects providers like Gmail, Yahoo, Outlook |
| Email tagging | Detects `+tag` addresses (for example `user+test@gmail.com`) |

### Status Fields

#### Business Status (`status`)

| Status | Meaning |
|------|------|
| good | Email appears safe to send |
| risky | Sending may work but involves uncertainty |
| bad | Sending likely results in bounce |

Status is derived from a deliverability score between 0 and 100.

#### Technical Status (`technical_status`)

| Status | Meaning |
|------|------|
| valid | Mailbox confirmed |
| invalid | Syntax or infrastructure invalid |
| unknown | Infrastructure exists but SMTP unreachable |
| catch_all | Domain accepts any email address |
| disposable | Disposable email detected |
| error | Verification request failed |

#### Reason (`reason`)

| Reason | Meaning |
|------|------|
| request_failed | Verification request failed |
| invalid_syntax | Email format is invalid |
| no_mail_infrastructure | Domain has neither MX nor A fallback records |
| disposable_email | Disposable mailbox was detected |
| catch_all_domain | Domain accepts all recipients |
| smtp_unreachable | SMTP host did not provide a reachable mailbox signal |
| ok | No risk reason was triggered |

---

### Why Verify Emails?

Email verification is not just about filtering invalid addresses. It helps protect delivery performance and keeps your outbound workflows predictable.

- **Protect sender reputation**: High bounce rates can damage domain and mailbox reputation, which reduces inbox placement over time.
- **Reduce wasted volume**: Invalid and temporary addresses consume sending capacity without creating business value.
- **Improve campaign performance**: Cleaner lists improve the quality of opens, replies, and engagement metrics.
- **Prioritize outreach**: `status`, `technical_status`, `score`, and `reason` let you segment contacts by risk before sending.
- **Keep CRM data healthy**: Verification helps prevent stale, role-based, and disposable emails from polluting your pipeline.
- **Automate decision logic**: Structured output makes it easy to build no-code or API automations for accept/review/reject flows.

Common use cases:

- **B2B lead qualification**: Filter low-quality and high-risk contacts before they enter your sales pipeline.
- **Outbound campaign control**: Segment recipients by risk and send strategy before launching cold email sequences.
- **CRM cleanup and enrichment**: Remove invalid, disposable, and role-based addresses to keep CRM records actionable.
- **Signup and onboarding validation**: Block invalid or suspicious emails at signup to reduce fake accounts and bad data.
- **Pre-campaign list QA**: Verify old or purchased lists before marketing sends to reduce bounce spikes.

---

### Example Input

Provide a list of emails to verify.

```json
{
  "emails": [
    "jon@doe.com",
    "email@example.com"
  ]
}
````

### Example Output

Each email produces one dataset item.

#### Overview

```json
{
  "email": "jon@doe.com",
  "domain": "doe.com",
  "status": "bad",
  "technical_status": "invalid",
  "reason": "smtp_unreachable",
  "free": false,
  "role": false,
  "disposable": false,
  "error": "none"
}
```

#### Verification Details

```json
{
  "email": "jon@doe.com",
  "domain": "doe.com",
  "status": "bad",
  "technical_status": "invalid",
  "score": 24,
  "reason": "smtp_unreachable",
  "free": false,
  "role": false,
  "disposable": false,
  "catch_all": false,
  "has_tag": false,
  "error": "none",
  "verification_details": {
    "normalized_email": "jon@doe.com",
    "verdict": {
      "is_valid": false,
      "status": "unknown",
      "state": "Not Deliverable",
      "confidence_score": 24,
      "primary_reason": "INVALID MAIL",
      "reasons": ["syntax_ok", "mx_missing_or_unreachable", "a_ok"]
    },
    "classification": {
      "is_free_provider": false,
      "is_role_based": false,
      "is_disposable": false,
      "has_tag": false
    },
    "checks": {
      "syntax_valid": true,
      "mx_records_valid": false,
      "a_record_valid": true,
      "smtp_reachable": false,
      "catch_all_domain": false,
      "mx_hosts": []
    }
  }
}
```

### How Do I Use Email Verifier & Validator?

The Email Verifier actor is designed to help you verify email addresses quickly, even if you have no prior experience.

Follow these steps:

1. **Enter emails**: provide a list of email addresses in actor input.
2. **Run the actor**: click `Start` and wait for verification.
3. **Review results**: open dataset items with verification results.

### How much does Email Verifier & Validator cost?

This actor uses the Pay-per-result pricing model, so your costs can be easily calculated: it will cost you **$1 to verify 1,000 emails**, which is $0.001 per email. Apify provides you with $5 in free usage credits every month on the [Apify Free plan](https://apify.com/pricing?fpr=home), allowing you to **verify up to 50 emails** for free using those credits.

For regular verification, consider upgrading to the [$29/month Starter plan](https://apify.com/pricing?fpr=home), which can **get you up to 29,000 verified emails every month.**

### Integrations and Email Verifier & Validator

Email Verifier & Validator can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. You can integrate with Make, n8n, Zapier, Apollo, Clay, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and [more](https://docs.apify.com/platform/integrations).

### Your feedback

We're always working on improving the performance of our Actors. If you've got any technical feedback for Email Verifier & Validator or simply found a bug, please create an issue on the actor's [Issues tab](https://console.apify.com/actors/u0sG3Wiy5pdt9mIfU/issues) in Apify Console.

# Actor input Schema

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

List of email addresses to verify.

## Actor input object example

```json
{
  "emails": [
    "test@test.com",
    "email@example.com"
  ]
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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": [
        "test@test.com",
        "email@example.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("michael.g/email-verifier-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": [
        "test@test.com",
        "email@example.com",
    ] }

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "test@test.com",
    "email@example.com"
  ]
}' |
apify call michael.g/email-verifier-validator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=michael.g/email-verifier-validator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Email Verifier & Validator | Bulk Email Verification",
        "description": "Bulk email verifier and email validator for email list verification. Verify email addresses, detect invalid emails, check deliverability, and clean email lists to reduce bounce rates.",
        "version": "0.0",
        "x-build-id": "JGGOv5Fnwc2hMCpgo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/michael.g~email-verifier-validator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-michael.g-email-verifier-validator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/michael.g~email-verifier-validator/runs": {
            "post": {
                "operationId": "runs-sync-michael.g-email-verifier-validator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/michael.g~email-verifier-validator/run-sync": {
            "post": {
                "operationId": "run-sync-michael.g-email-verifier-validator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "emails"
                ],
                "properties": {
                    "emails": {
                        "title": "Emails",
                        "type": "array",
                        "description": "List of email addresses to verify.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
