# Verify an email list before sending — Ravn

Canonical: https://askravn.com/use-cases/verify-email-list

Use case

# Verify an email list before you hit send.

Run the list through validate_email with one CLI command, then send only to addresses graded valid with a risk score of A or B. Everything else gets a second look or gets dropped.
[Start free: 1,000 lookups](https://askravn.com/#start) [Read the docs](https://askravn.com/docs)

Playbook
## From raw CSV to a send-ready list
You need the list as a CSV with one email per row. Every other column is kept.
- / 01
### Sign in once
Run `npx ravn login`. You get a 6-digit code by email, and the key is saved to `~/.config/ravn`. The free plan gives you 1,000 lookups to start, no card.
- / 02
### Dry-run the file
Add `--dry-run` to see how many rows will be checked before anything is spent. Remove obvious duplicates first: each address you send costs a lookup.
- / 03
### Run the check
The CLI adds `rw_*` columns with the status, risk score and reason for each row. It saves progress every 25 rows, so a dropped connection resumes where it stopped.
- / 04
### Sort by verdict
Keep `valid` with grade A or B. Drop `invalid` and anything graded D or F. Look at `risky` rows by reason: `catch_all_domain` and `disposable_domain` need different decisions.
- / 05
### Decide on unknowns
An `unknown` means the mailbox could not be checked. We never call an address valid if the mailbox was not checked. Send to these in a small batch first, or hold them back.
- / 06
### Send, then keep it fresh
Re-verify before each big send if the list is more than a few months old. People change jobs and mailboxes close.
Run it
## The exact commands
CLI for a file, REST for up to 1,000 addresses in one call, or plain English in Claude.
```
# CLI: verify a whole CSV, keep every column, add rw_* results
npx ravn login
npx ravn enrich list.csv --tool validate_email --column Email --dry-run
npx ravn enrich list.csv --tool validate_email --column Email --out verified.csv

# REST: up to 1,000 addresses per request, one verdict per unique address
curl https://api.askravn.com/v1/tools/validate_emails \
-H "Authorization: Bearer $RAVN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"emails": ["jane@acme.com", "info@acme.com", "old.contact@example.org"]}'

# Claude (with the Ravn connector added)
Verify every address in the attached CSV with Ravn. Give me three lists:
send (valid, grade A or B), review (risky or unknown, with the reason),
and drop (invalid, or grade D or F). Do not change any other column.
```

## What a list costs in lookups
Email verification is one of our own checks: one lookup per address from your plan, no provider key needed. Ravn is $24 a month with 10,000 lookups included, then $1 per 1,000, and a miss is free.
List size | Free (1,000 total) | Ravn ($24/mo, 10,000 included) | 
800 addresses | Fits, 200 left over | Included | 
5,000 addresses | Not enough | Included | 
40,000 addresses | Not enough | 10,000 included + 30,000 at $1 per 1,000 = $30 extra | If you set a spending cap and reach it mid-file, the run stops cleanly and resumes when you raise it or the period renews. See [pricing](https://askravn.com/pricing) and [fair use](https://askravn.com/fair-use).
Reading the grades
## What A to F means
Every verdict has a `risk_score` from A to F, built from a 0-100 score: A is 90 or more, B is 75 or more, C is 55 or more, D is 30 or more, and F is below that. The `reason` field says why, for example `mailbox_exists`, `mailbox_not_found`, `no_mx` or `bad_syntax`.Flags such as `role_account`, `free_provider` and `disposable` are there so you can apply your own rules. A role address like info@ can be real and still be a poor fit for a personal campaign. The full field list is in the [validate_email docs](https://askravn.com/docs#validate_email), and the [email verification API page](https://askravn.com/features/email-verification-api) explains each check.Before you reach out. Contact people only where you have a lawful basis, honour every opt-out, and never use this data for credit, employment, insurance or housing decisions (FCRA uses are forbidden by our [terms](https://askravn.com/terms)). People who opt out at [our opt-out page](https://askravn.com/privacy#optout) are never returned again. The full rules are on the [compliance page](https://askravn.com/compliance).
FAQ
## Common questions.
[All questions →](https://askravn.com/faq)How many addresses can I verify in one API call?validate_emails takes up to 1,000 addresses per request and returns one verdict per unique address. For bigger files, use the CLI enrich command, which works through the file in batches and resumes if interrupted.Should I send to catch-all addresses?A catch-all domain accepts mail for any name, so no service can prove the mailbox exists. We mark these risky with the reason catch_all_domain. Send to them only if the contact came from a good source, and send in small batches.Can I try it before signing up?Yes. The [free email verifier](https://askravn.com/tools/email-verifier) and the demo on the homepage check single addresses with no key. For a whole list, the free plan gives you 1,000 lookups with no card.Does verifying an address send the person an email?No. The check looks at the domain, its mail servers and, where enabled, asks the mail server whether the mailbox exists. Nothing is delivered to the person.

## More in [use cases](https://askravn.com/use-cases)
Every page uses the same account, plan and tools. [See pricing →](https://askravn.com/pricing)
- [Build a B2B prospect list with ClaudeAsk Claude for companies that match your customer profile, the right people at each, and verified work emails, using Ravn through the MCP connector..](https://askravn.com/use-cases/build-prospect-list)
- [Check a number is a real mobile before textingNormalise numbers to E.164 and read the number-plan line type with validate_phone, then confirm the live carrier and real line type with phone_to_carrier..](https://askravn.com/use-cases/check-phone-before-texting)
- [Clean and dedupe CRM contact dataExport your CRM contacts, dedupe on email, verify what is left, fill missing company fields and import the cleaned file back, with the Ravn CLI..](https://askravn.com/use-cases/clean-crm-data)
- [Enrich inbound sign-ups automaticallyWhen someone signs up, check their email, skip free-mail addresses and add company size, industry and location from the domain, all in one webhook step..](https://askravn.com/use-cases/enrich-inbound-leads)
- [Find decision makers at target accountsTurn target company domains into named decision makers with titles and work emails, using people search on your own provider key and a verified email finder..](https://askravn.com/use-cases/find-decision-makers)
- [Identify companies visiting your websiteMatch visitor IPv4 addresses from your logs to the organisation that owns the network with ip_to_company.](https://askravn.com/use-cases/identify-website-visitors)
- [Reduce email bounce rateCut hard bounces by verifying before every send, dropping D and F grades, sending to catch-all addresses with care and re-checking lists that have gone stale..](https://askravn.com/use-cases/reduce-bounce-rate)
- [Account research with ClaudeHave Claude read a company website, pull its firmographics and find the right people with scrape_website, domain_to_company and search_people, in one brief..](https://askravn.com/use-cases/research-accounts-with-claude)
