> Enrich.chat gives AI agents verified work emails and mobiles. To use it from an agent, read https://enrich.chat/agents.md . This is the Markdown version of https://enrich.chat/blog/bulk-email-verification/

# Bulk email verification: how to clean a list safely, step by step

Six steps from a raw export to a list you can send to, with the labels six verifiers use, their prices checked October 16, 2026, and what to do with catch-all and unknown rows.

By Enrich.chat Editorial. Updated October 16, 2026.

**Short answer:** Bulk email verification checks every address in a file against its mail server and labels each row valid, invalid, catch-all or unknown. To clean a list safely, back it up, dedupe it, drop role and disposable rows, upload it, send to valid rows first, hold catch-all and unknown rows, and re-verify any address not checked in the last [90 days](https://www.smartlead.ai/blog/cold-email-bounce-rate).

## Key takeaways

- Do the free steps before you pay: back up the file, dedupe it, and drop role and disposable addresses. Spamhaus says role addresses published in registration records should almost never be on a marketing list.
- Pay-as-you-go prices for 100,000 addresses, read on October 16, 2026, run from $90 at Truelist to $649 at ZeroBounce. Every tool in this guide gives a free test allowance of 100 to 250 credits.
- Labels differ by tool. Valid, deliverable and ok mean send. Catch-all, risky and unknown mean hold. Four of the six tools say unknown results cost nothing.
- Vendors disagree on catch-all rows: Hunter says to prioritise those with a confidence score above 85%, and Smartlead says to leave them out of cold sends.
- Enrich.chat is not a bulk verifier. It returns a status with each new work email it finds, so a new list starts labelled, but it will not clean an existing list.

## What is bulk email verification, and what does it check?

Bulk email verification runs a file of addresses through a verifier and returns one status for each row. The verifier tests the shape of the address, looks up the domain's mail records, asks the mail server whether it accepts the mailbox, and flags types such as catch-all, disposable and role. Our guide to [email validation](https://enrich.chat/blog/email-validation/) explains each layer. This guide covers the file work around them.

A status is a reading from one moment, not a promise. [MillionVerifier's help page](https://help.millionverifier.com/email-verification/email-verification-results) says an address it marks invalid would have hard bounced at the time of the check, but the mailbox may have existed before or may exist later. [Hunter's FAQ](https://help.hunter.io/en/articles/15899247-email-verification-faqs) says results can change after the check and advises re-verifying regularly, especially before large sends.

The reason to clean a list is your bounce rate. [Yahoo's sender guide](https://senders.yahooinc.com/best-practices/) tells senders to monitor hard and soft bounces and to remove invalid recipients promptly. [Google's sender guidelines](https://support.google.com/a/answer/81126) say to reduce sending volume if messages start bouncing. Our [email bounce rate guide](https://enrich.chat/blog/email-bounce-rate/) lists the limits that sending platforms enforce. Figure 1 shows the six steps in order.

**Figure 1: Six steps to clean a list with bulk email verification.** Six numbered steps in order. Step 1 backs up the file and keeps an ID column. Step 2 dedupes it. Step 3 drops role and disposable addresses. Step 4 uploads the file to a verifier and is the only paid step. Step 5 sorts the results into send, hold and drop. Step 6 re-verifies about every 90 days.

*The workflow this guide follows. The 90-day re-check comes from [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) and [Apollo](https://www.apollo.io/insights/whats-a-reasonable-benchmark-for-email-bounce-rates-when-using-a-paid-data-provider), which are vendors, not inbox providers.*

## How do you prepare a list before you verify it?

Back up the original, then clean a copy: one address per row, no stray spaces, an ID column, no duplicates, and no role or disposable addresses. Each row you remove here is a credit you do not spend.

1. **Keep the original and add an ID.** Upload only the ID and email columns. The verifier does not need names or phone numbers, and the ID lets you merge the results back.
2. **Trim and standardise.** Strip spaces and compare addresses in lowercase. [RFC 5321](https://www.rfc-editor.org/rfc/rfc5321.html) (section 2.4) says domains are not case sensitive. It treats the part before the @ as case sensitive but discourages relying on that, so most lists match in lowercase. Send to the address as it was written.
3. **Dedupe.** [ZeroBounce](https://www.zerobounce.net/pricing) and [Bouncer](https://www.usebouncer.com/pricing/) say they do not charge for duplicates, and [Emailable](https://emailable.com/pricing) refunds them. Dedupe anyway, because two emails to one person cost more than a credit.
4. **Drop role addresses.** [Spamhaus](https://www.spamhaus.org/resource-hub/deliverability/spamtraps-fix-the-problem-not-the-symptom/) says role addresses published in registration records, such as postmaster@ and abuse@, should almost never be on a marketing list. Addresses like info@ and sales@ are real inboxes, but [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) advises leaving role-based addresses out of cold sends, and [ZeroBounce](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-status-codes) files them under do_not_mail.
5. **Drop disposable domains.** Verifiers flag these too, but a local filter saves credits. The open [disposable-email-domains list](https://github.com/disposable-email-domains/disposable-email-domains) says it cannot guarantee that every domain on it is still disposable, only that each was at one point. Review the hits before you delete people.
6. **Remove suppressed people.** Take out anyone who unsubscribed, opted out or bounced before. [Yahoo](https://senders.yahooinc.com/best-practices/) tells bulk senders to honor unsubscribes within two days. Our [database hygiene guide](https://enrich.chat/blog/database-hygiene/) covers the suppression list.
7. **Split big files.** [Hunter's bulk verifier](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter) takes up to 100,000 emails per bulk and skips rows past the credits you have left.

This short script does the free steps on your own machine. It contacts no mail server and uploads nothing. Swap the stand-in domain set for the open list.

```
ROLE = {"admin", "info", "sales", "support", "contact", "office",
        "postmaster", "abuse", "billing", "webmaster"}
DISPOSABLE = {"mailinator.com", "tempbox.example"}  # swap in the open-source list

def prefilter(rows):
    seen, keep, drop = set(), [], []
    for row in rows:
        raw = row["email"].strip()
        local, _, domain = raw.rpartition("@")
        key = local.lower() + "@" + domain.lower()
        host = domain.lower()
        if not local or "." not in domain or " " in raw:
            drop.append((row["id"], "bad shape"))
        elif key in seen:
            drop.append((row["id"], "duplicate"))
        elif local.lower() in ROLE:
            drop.append((row["id"], "role address"))
        elif any(host == d or host.endswith("." + d) for d in DISPOSABLE):
            drop.append((row["id"], "disposable domain"))
        else:
            seen.add(key)
            keep.append({"id": row["id"], "email": raw})
    return keep, drop
```

Run on seven made-up rows at example.com and similar domains, it keeps ids 1, 5 and 7. It drops id 2 as a duplicate, id 3 as a role address, id 4 as a disposable domain and id 6 for a space in the address.

## What does bulk email verification cost in 2026?

Verifying 100,000 addresses costs between $90 and $649 across six tools, going by each vendor's own pricing page on October 16, 2026. All six cut the price per address as the volume rises, and all six give away a small test allowance.

| Tool | Free allowance | 100,000 addresses | What the page says about billing |
| --- | --- | --- | --- |
| [Truelist](https://truelist.io/pricing) | 100 validations | $90 at $0.90 per 1,000 credits | 1 credit per definitive verdict. Enhanced catch-all resolution costs 3 credits and applies only where standard validation returns unknown. Credits never expire |
| [MyEmailVerifier](https://www.myemailverifier.com/pricing) | 100 credits a day | $99 pay as you go, shown as a sale price against a struck-through $264, with 5,000 bonus credits | Duplicates are free and credits never expire. A sale price can change |
| [MillionVerifier](https://www.millionverifier.com/#pricing) | 100 credits | $149 for the 100,000-credit package | No charge for catch-all or unknown results. Credits never expire |
| [Bouncer](https://www.usebouncer.com/pricing/) | 100 credits | $400 for a 100,000-credit pack | No charge for unknown results or duplicates. Credits never expire. Minimum purchase is 1,000 credits |
| [Emailable](https://emailable.com/pricing) | 250 credits | $420 pay as you go, or $357 a month on a credits subscription | Unknown results and duplicates are refunded when the list finishes. Minimum purchase is 5,000 credits |
| [ZeroBounce](https://www.zerobounce.net/pricing) | 100 credits a month | $649 pay as you go | Unknown results and duplicates are free. The ZeroBounce ONE subscription starts at $99 a month for 10,000 credits |

Figure 2 charts the same 100,000-address prices.

**Figure 2: Price to verify 100,000 email addresses at six tools.** A bar chart of pay-as-you-go prices to verify 100,000 addresses on October 16, 2026. Truelist is $90, MyEmailVerifier is $99 on sale against a $264 list price, MillionVerifier is $149, Bouncer is $400, Emailable is $420 and ZeroBounce is $649.

*Pay-as-you-go prices read on October 16, 2026 from [Truelist](https://truelist.io/pricing), [MyEmailVerifier](https://www.myemailverifier.com/pricing), [MillionVerifier](https://www.millionverifier.com/#pricing), [Bouncer](https://www.usebouncer.com/pricing/), [Emailable](https://emailable.com/pricing) and [ZeroBounce](https://www.zerobounce.net/pricing). MyEmailVerifier shows a $99 sale price with a struck-through $264, drawn as the dashed outline, and its 100,000 package adds 5,000 bonus credits.*

Three details can move your real bill. First, check what each tool charges for. Four of the six say unknown results cost nothing, as the table shows. Second, check how credits behave: five of the six say credits never expire. ZeroBounce's Terms say its credits never expire on accounts created on or before June 1, 2026, and follow a two-year rule on newer accounts. Third, check the minimum purchase, which is 1,000 credits at Bouncer and 5,000 at Emailable.

Price is not the only thing to weigh. The pricing pages publish no independent accuracy test. ZeroBounce claims 99.6% validation accuracy and MillionVerifier claims 99% or better. Those are the vendors' own claims, and we did not test them. A fair test is to send the same 1,000 rows from your own list to two tools and compare the labels, then compare the bounces. Our guides to [email verification tools](https://enrich.chat/blog/email-verification-tools/), the [email verification API](https://enrich.chat/blog/email-verification-api/), [ZeroBounce pricing](https://enrich.chat/blog/zerobounce-pricing/) and [NeverBounce pricing](https://enrich.chat/blog/neverbounce-pricing/) go deeper.

## Are free bulk verifiers and browser extensions safe for a real list?

A free allowance is a good way to test a tool on a small sample. Before you upload a real customer list, ask where the file is stored, for how long, and whether the vendor signs a data processing agreement. Retention rules differ.

- [ZeroBounce](https://www.zerobounce.net/pricing) says it erases your data 30 days after you upload a file, unless you delete it sooner.
- [Hunter](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter) keeps paid bulk verification results for 15 months and unpaid results for 6 months, then deletes them.
- [MillionVerifier](https://www.millionverifier.com/) says you can sign its data processing agreement on every plan, including the free one.

Treat these as examples of what to ask, not as a ranking. This is not legal advice.

Browser extensions are a different case. The top Google result for this search is a Chrome Web Store listing named [Bulk Email Verifier & Checker](https://chromewebstore.google.com/detail/bulk-email-verifier-check/ckkkfjkhmnkleikoobfnkmfgnehonmpn). When we read it on October 16, 2026, it showed 889 users and a 1.0 rating from 2 ratings. Its description lists syntax, MX record, disposable, role and free-provider checks, plus a reachability field, and says the data you process stays on your own computer. It does not say how reachability is measured. We read the listing only and did not install it. For any extension, check who publishes it and which permissions it asks for, and try it on made-up addresses first.

## How do you upload a list and read the results?

Upload the cleaned file, point the tool at the email column, start the job, and download a results file with one status per row. Most tools take CSV. [Hunter](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter) also lets you paste addresses, [Truelist](https://truelist.io/use-cases/bulk-email-verification) accepts CSV and Excel files, and [MillionVerifier](https://www.millionverifier.com/) lists CSV, TXT and XLSX.

Check when credits are taken. Hunter's help article says a bulk job begins using credits as soon as it launches, and it offers a Cancel button for a wrong file. Speed is a vendor claim: [ZeroBounce](https://www.zerobounce.net/pricing) says it cleans 100,000 addresses in 45 minutes, and [Truelist](https://truelist.io/use-cases/bulk-email-verification) says under 30 minutes.

Every tool uses its own words for the result. The table groups them into the three piles you act on. The grouping is ours, and the vendors' advice for the middle pile differs, as the next section shows.

| Tool | Send | Hold or review | Suppress |
| --- | --- | --- | --- |
| [ZeroBounce](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-status-codes) | valid | catch-all, unknown, do_not_mail | invalid, spamtrap, abuse |
| [Hunter](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter) | valid | accept all, unknown | invalid, disposable |
| [Bouncer](https://docs.usebouncer.com/integration-guidelines) | deliverable | risky, unknown | undeliverable |
| [MillionVerifier](https://help.millionverifier.com/email-verification/email-verification-results) | ok | catch-all, unknown | invalid, disposable |
| [Emailable](https://emailable.com/email-verifier) | deliverable | risky, unknown | undeliverable |
| [Truelist](https://truelist.io/use-cases/bulk-email-verification) | valid | risky, unknown | invalid |

Read the sub-status too. ZeroBounce files some catch-all domains under valid with an accept_all sub-status. It says long-term sending data shows a bounce rate under 2% for domains on its own allow-list, and it keeps the plain catch-all status for domains that are not on it. Bouncer's integration guide says to remove risky results that carry a full-mailbox flag. A status alone can hide the reason behind it. Figure 3 turns the labels into actions.

**Figure 3: From a verification label to an action.** Five rows. Valid, also called ok or deliverable, means the server accepts the mailbox, so send first in small batches. Invalid or undeliverable means the mailbox does not exist, so suppress it in every tool. Catch-all, accept-all or risky means the server says yes to every address, so hold it or test a small share. Unknown means the check could not finish, so retry later and then hold. Disposable or role means a throwaway domain or shared inbox, so drop it from marketing lists.

*How the common labels map to an action. The meanings follow [ZeroBounce's status codes](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-status-codes), [Hunter's FAQ](https://help.hunter.io/en/articles/15899247-email-verification-faqs) and [MillionVerifier's results page](https://help.millionverifier.com/email-verification/email-verification-results). The actions are this guide's suggestion for a list you did not collect yourself.*

## What do you do with catch-all and unknown results?

Treat catch-all as unconfirmed and unknown as unfinished. Neither means the address is bad. Retry the unknown rows once or twice, then keep both groups out of your first send.

### How do you handle unknown results?

An unknown result means the check did not finish, often because of an offline server, an anti-spam system or greylisting. [ZeroBounce](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-status-codes) says greylisted addresses often validate when you resubmit them, and that it does not charge for unknown results. [Hunter](https://help.hunter.io/en/articles/15899247-email-verification-faqs) uses no credits for them and suggests trying again later, because filters sometimes reset after a few hours. If the status stays unknown, Hunter says to keep the address out of email sequences. ZeroBounce adds that about 80% of its unknown results turn out to be invalid, which is a vendor statement we did not test.

### How do you handle catch-all results?

A catch-all server says yes to every address, so no verifier can confirm one mailbox there. Our guide to [catch-all emails](https://enrich.chat/blog/what-is-a-catch-all-email/) explains why, and the free [catch-all checker](https://enrich.chat/tools/catch-all-checker/) tests a domain. Vendors give different advice on what to do next:

- [Hunter](https://help.hunter.io/en/articles/15899247-email-verification-faqs) says to proceed carefully and prioritise accept-all addresses with a confidence score above 85%. Its [accept-all guide](https://hunter.io/email-verification-guide/accept-all-catch-all/) suggests keeping them to 2% to 5% of a campaign.
- [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) says to leave catch-all addresses out of cold email, and that some catch-all-heavy lists bounce at 8% or more.
- [Bouncer's integration guide](https://docs.usebouncer.com/integration-guidelines) lists accept-all results among those to keep if your deliverability is not impacted and the list is relatively clean.
- [MillionVerifier](https://help.millionverifier.com/email-verification/email-verification-results) says risky results may be safe to use if they are real subscribers who signed up recently.

The advice splits because the risk depends on where the address came from. A person who confirmed a sign-up by link has shown they control the mailbox, and [Yahoo recommends that step](https://senders.yahooinc.com/best-practices/) for new subscribers. An address from a reply, a signature or the company's own website is a fair candidate for a small test batch. An address guessed from a name pattern is the weakest case, and our [catch-all checker page](https://enrich.chat/tools/catch-all-checker/) walks through when to send, test or skip.

Some vendors sell a deeper check. [Truelist](https://truelist.io/pricing) charges 3 credits per resolved address for enhanced catch-all resolution and says it runs only where standard validation returns unknown. That is the vendor's description, and we did not test it. A paid resolution is still a probability, so watch the bounces from that group.

## What should you do after the results come back?

Suppress the bad rows in every tool, write the status and check date back to your records, and send the valid rows first in small batches.

1. **Suppress invalid rows everywhere.** [Yahoo](https://senders.yahooinc.com/best-practices/) says to remove invalid recipients promptly, and [Google](https://support.google.com/a/answer/81126) says to unsubscribe recipients who have multiple bounced messages automatically. Keep the addresses on a suppression list instead of deleting them, so nobody imports them again.
2. **Store the label and the date.** Add columns for the email status, the tool and the check date. The re-check step later picks rows by that date.
3. **Start with a small send to valid rows.** Google says to start with a low sending volume to engaged users and raise it slowly. [Apollo](https://www.apollo.io/insights/whats-a-reasonable-benchmark-for-email-bounce-rates-when-using-a-paid-data-provider) suggests a pilot of 200 to 500 contacts and a look at bounces within 48 hours.
4. **Read the bounces.** Aim for under 2%, as our [bounce rate guide](https://enrich.chat/blog/email-bounce-rate/) explains, and use the [hard versus soft bounce](https://enrich.chat/blog/hard-bounce-vs-soft-bounce/) guide to read the codes.

A verified list is not a permitted list. Verification tells you whether a mailbox exists. It does not tell you whether you may email the person. [Google](https://support.google.com/a/answer/81126) and [Yahoo](https://senders.yahooinc.com/best-practices/) both tell senders not to buy lists, and our [guide to buying email lists](https://enrich.chat/blog/buying-email-lists/) covers the rules in short form. This is not legal advice.

## How often should you re-verify an email list?

Re-verify any address that has not been checked in the last 90 days before you send to it. No inbox provider sets a schedule, so this rule comes from sending and data vendors.

- [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) says to run every address not verified in the last 90 days through a verifier.
- [Apollo](https://www.apollo.io/insights/whats-a-reasonable-benchmark-for-email-bounce-rates-when-using-a-paid-data-provider) says to re-verify segments older than 90 days before sending at scale.
- [Bouncer](https://www.usebouncer.com/best-email-verification-tools-for-bulk-emails/) suggests verifying a very large list each quarter and smaller lists before each campaign.
- [Hunter](https://help.hunter.io/en/articles/15899247-email-verification-faqs) advises regular re-checks, especially before large sends.

[Yahoo](https://senders.yahooinc.com/best-practices/) and [Google](https://support.google.com/a/answer/81126) publish no cadence. Yahoo says to monitor bounces and inactive recipients and to consider a reconfirmation email to inactive subscribers from time to time. Google says to unsubscribe people after repeated bounces.

Work emails age faster than most data, because people change jobs. Our guide to [B2B data decay](https://enrich.chat/blog/b2b-data-decay/) compares the published rates. Re-checking only the rows past 90 days keeps the cost tied to the stale part of the list, not the whole file. To stop bad rows at the door, check new sign-ups as they arrive. The email validation guide explains [where to validate](https://enrich.chat/blog/email-validation/).

## How does Enrich.chat fit into list cleaning?

Enrich.chat is not a bulk email verifier. It will not clean an existing 100,000-row list. What it does is return a status with every work email it finds, so a new list starts with `verified`, `catch_all` or `unknown` already attached. The dashboard's [Bulk enrich](https://enrich.chat/features/bulk-enrichment/) does this for a CSV of names and websites, up to 5,000 rows a run, and a run on the server keeps going after you close the tab (see [background jobs](https://enrich.chat/features/background-jobs/)). The status is a label, not a delivery guarantee, and every contact is a strong lead, not a certainty.

Here is a lookup for a fictional person. The response is illustrative. Give `/v1/person` a name and a company website, and ask for the email field only.

```
GET /v1/person?name=Priya%20Nair&company=example.com&fields=email

{
  "found": true,
  "name": "Priya Nair",
  "title": "Head of Finance",
  "company": {"name": "Example Co"},
  "work_email": {"value": "priya.nair@example.com", "status": "verified"},
  "credits_used": 10,
  "free_lookups_remaining": 9
}
```

On a catch-all domain the same call returns the same shape with `"status": "catch_all"`. When nothing matches, the response is `{"found": false}` and the lookup uses 0 credits. A work email found uses 10 credits. A starter list of 2,000 people uses 20,000 credits if every row matches, which fits the Growth plan at $29 a month. Sent one at a time at about one request a second, 2,000 lookups take a little over half an hour. The batch endpoint takes up to 25 records per call, and a background job takes up to 5,000.

Your agent can sort the results as it goes. This prompt builds the three groups from this guide:

```text
Use www.enrich.chat to find the work email for each person in this list of names and company websites. Show the status exactly as returned. Put verified rows in a send group, catch_all and unknown rows in a hold group, and not found rows in a skip group. Give me the three groups as separate lists and tell me the total credits_used. Never guess an address from a pattern.
```

Know the gaps before you build on it:

- It cannot test an address you already hold. The email input on `/v1/person` goes the other way: it finds the person behind a work email, and personal mailboxes such as Gmail are not looked up. For an existing list, use a verifier from the table above.
- A bulk run takes up to 5,000 rows, so split a bigger file. It finds new work emails and does not verify the ones you hold. A custom Enterprise plan covers bulk files.
- Responses carry no typo suggestion and no disposable or role flag.
- A search with `with_email=true` returns the work email with the status `unknown`. Use `/v1/person` when you need the status.
- The company must be a website such as example.com, not a company name.

Watch the bounce rate of your first batch, and keep your own suppression list. Your agent gets 10 free lookups a day with no signup. After that, monthly plans start at $29 for 100,000 credits, as the [pricing page](https://enrich.chat/pricing/) shows. The [email finder API](https://enrich.chat/api/email-finder/) page covers the endpoint, the free [email finder](https://enrich.chat/tools/email-finder/) works in your browser, and the [install page](https://enrich.chat/install/) has steps for ChatGPT, Claude, Cursor and Codex. For adding more fields to records you already hold, see [contact enrichment](https://enrich.chat/blog/contact-enrichment/).

## Frequently asked questions

### How do you verify a list of emails in bulk?

Back up the file, dedupe it and remove role and disposable addresses. Then upload the CSV to a bulk verifier, wait for the job to finish and download one status per row. [Hunter's help article](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter) shows the usual flow: upload or paste, wait, download. Send to valid rows first, hold catch-all and unknown rows, and suppress invalid ones.

### How much does bulk email verification cost?

On October 16, 2026, vendor pages showed $90 for 100,000 addresses at [Truelist](https://truelist.io/pricing), $149 at [MillionVerifier](https://www.millionverifier.com/#pricing), $400 at [Bouncer](https://www.usebouncer.com/pricing/), $420 at [Emailable](https://emailable.com/pricing) and $649 at [ZeroBounce](https://www.zerobounce.net/pricing) on pay as you go. [MyEmailVerifier](https://www.myemailverifier.com/pricing) showed a $99 sale price against $264. Each tool has a free allowance of 100 to 250 credits.

### How often should you verify your email list?

Re-verify any address not checked in the last 90 days, as [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) and [Apollo](https://www.apollo.io/insights/whats-a-reasonable-benchmark-for-email-bounce-rates-when-using-a-paid-data-provider) advise. [Bouncer](https://www.usebouncer.com/best-email-verification-tools-for-bulk-emails/) suggests a quarterly check for very large lists and a check before each campaign for smaller ones. Google and Yahoo set no schedule. Our guide to [B2B data decay](https://enrich.chat/blog/b2b-data-decay/) explains why work emails age fast.

### What should you do with catch-all emails after bulk verification?

Keep them out of your first send. [Hunter](https://help.hunter.io/en/articles/15899247-email-verification-faqs) says to prioritise accept-all addresses with a confidence score above 85%, and its [accept-all guide](https://hunter.io/email-verification-guide/accept-all-catch-all/) suggests 2% to 5% of a campaign. [Smartlead](https://www.smartlead.ai/blog/cold-email-bounce-rate) leaves them out of cold email. Test a domain with our free [catch-all checker](https://enrich.chat/tools/catch-all-checker/).

### Do email verifiers charge for unknown results?

Mostly no. [ZeroBounce](https://www.zerobounce.net/pricing), [Bouncer](https://www.usebouncer.com/pricing/) and [MillionVerifier](https://help.millionverifier.com/email-verification/email-verification-results) say they do not charge for unknown results, [Emailable](https://emailable.com/pricing) refunds them when the list finishes, and [Hunter](https://help.hunter.io/en/articles/15899247-email-verification-faqs) uses no credits for them. Retry unknown rows later, because a greylisted server often answers on a second pass.

### Can Enrich.chat verify a list of emails in bulk?

No. Enrich.chat is not a bulk verifier and has no endpoint that tests an address you already hold. It returns a status of verified, catch_all or unknown with each work email it finds, so a new list starts labelled. Use a verifier from this guide for an existing list. See the [email finder API](https://enrich.chat/api/email-finder/) and the [email validation guide](https://enrich.chat/blog/email-validation/).

## Sources

1. [Pricing](https://www.zerobounce.net/pricing)
2. [API Status Codes (v2)](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-status-codes)
3. [Pricing](https://www.usebouncer.com/pricing/)
4. [Integration Guidelines](https://docs.usebouncer.com/integration-guidelines)
5. [Best Email Verification Tools for Bulk Emails](https://www.usebouncer.com/best-email-verification-tools-for-bulk-emails/)
6. [Pricing Plans](https://truelist.io/pricing)
7. [Bulk Email Verification](https://truelist.io/use-cases/bulk-email-verification)
8. [Pricing](https://emailable.com/pricing)
9. [Email Verifier](https://emailable.com/email-verifier)
10. [MillionVerifier home page and credit packages](https://www.millionverifier.com/#pricing)
11. [Email Verification Results](https://help.millionverifier.com/email-verification/email-verification-results)
12. [Pricing](https://www.myemailverifier.com/pricing)
13. [Bulk verify emails with Hunter](https://help.hunter.io/en/articles/12628683-bulk-verify-emails-with-hunter)
14. [Email Verification FAQs](https://help.hunter.io/en/articles/15899247-email-verification-faqs)
15. [What Are Accept-all Email Addresses, and How to Use Them](https://hunter.io/email-verification-guide/accept-all-catch-all/)
16. [Cold email bounce rate: what's good and how to fix it](https://www.smartlead.ai/blog/cold-email-bounce-rate)
17. [What's a Good Email Bounce Rate for Paid Data?](https://www.apollo.io/insights/whats-a-reasonable-benchmark-for-email-bounce-rates-when-using-a-paid-data-provider)
18. [Email sender guidelines](https://support.google.com/a/answer/81126)
19. [Sender Requirements & Recommendations](https://senders.yahooinc.com/best-practices/)
20. [RFC 5321: Simple Mail Transfer Protocol](https://www.rfc-editor.org/rfc/rfc5321.html)
21. [Spamtraps: fix the problem, not the symptom](https://www.spamhaus.org/resource-hub/deliverability/spamtraps-fix-the-problem-not-the-symptom/)
22. [disposable-email-domains](https://github.com/disposable-email-domains/disposable-email-domains)
23. [Bulk Email Verifier & Checker](https://chromewebstore.google.com/detail/bulk-email-verifier-check/ckkkfjkhmnkleikoobfnkmfgnehonmpn)

## Try this prompt

Find new work emails and sort them by status

```text
Use www.enrich.chat to find the work email for each person in this list of names and company websites. Show the status exactly as returned. Put verified rows in a send group, catch_all and unknown rows in a hold group, and not found rows in a skip group. Give me the three groups as separate lists and tell me the total credits_used. Never guess an address from a pattern.
```

## Related

- [Best email verification tools (2026): 9 compared on price, limits and AI agent access](https://enrich.chat/blog/email-verification-tools/)
- [Email bounce rate: what is good](https://enrich.chat/blog/email-bounce-rate/)
- [Catch-all email checker](https://enrich.chat/tools/catch-all-checker/)
