Claim 250 credits on our Scale plan for free

Enrich email addresses via API

Pass a work email address and get back the complete person and company behind it — verified contact data, current title, seniority, employer firmographics, and email deliverability status. Reverse email lookup powered by 25+ providers.

POSThttps://api.cleanlist.ai/v1/enrich/email

AuthorizationBearer clnl_live_…

Content-Typeapplication/json

{
  "email": "jane@acme.com"
}
  • 1 creditA verified work email, however many providers it took to find it.
  • 11 creditsEmail and direct dial together, on the same call.
  • 25+ providersQueried in cost order. The first source that returns wins, and a miss costs nothing.
  • 98% / 85%Verified work email and direct dial, measured on a 500-lead stratified test.

One call in.16 fields back.

The payload for a single email lookup, and every field the record can carry. Same shape on every plan.

Response200 OK · email
{
  "id": "ev_e2p5tf9",
  "status": "completed",
  "email": {
    "address": "sarah.park@growthco.com",
    "status": "valid",
    "mx_verified": true,
    "smtp_verified": true,
    "is_catch_all": false,
    "is_disposable": false,
    "is_role_based": false,
    "risk_score": 0.05,
    "first_name": "Sarah",
    "last_name": "Park",
    "title": "Head of Growth",
    "seniority": "director",
    "company_name": "GrowthCo",
    "company_domain": "growthco.com",
    "company_industry": "Marketing Technology",
    "company_size": "51-200"
  },
  "meta": {
    "credits_used": 1,
    "providers_queried": 25,
    "providers_matched": 7,
    "confidence": 0.94,
    "enriched_at": "2026-04-15T16:42:11Z"
  }
}
Field reference16 fields
  • addressstringThe email address that was verified.
  • statusenumVerification result: valid, invalid, risky, catch-all, disposable, role-based, unknown.
  • mx_verifiedbooleanWhether the domain has valid MX records configured for receiving email.
  • smtp_verifiedbooleanWhether the SMTP handshake confirmed the specific mailbox exists.
  • is_catch_allbooleanWhether the domain accepts mail to any address (catch-all configuration).
  • is_disposablebooleanWhether the address uses a temporary/disposable email service.
  • is_role_basedbooleanWhether the address is a group alias (info@, support@, admin@).
  • risk_scorefloat0.0 to 1.0 risk score. Lower = safer to send. Factors: catch-all probability, domain age, complaint history.
  • first_namestringContact first name associated with the email address.
  • last_namestringContact last name.
  • titlestringCurrent job title of the email owner.
  • seniorityenumSeniority level: entry, individual_contributor, manager, director, vp, c_level, owner.
  • company_namestringCompany name associated with the email domain.
  • company_domainstringCompany primary domain.
  • company_industrystringIndustry classification.
  • company_sizestringEmployee count range.

Call it from anything.Pay for what comes back.

One POST from curl, Node or Python. Credits are drawn from one wallet the whole team shares, and a call that finds nothing is never charged.

Client librariesenrich.email
curl
curl -X POST https://api.cleanlist.ai/v1/enrich/email \
  -H "Authorization: Bearer $CLEANLIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com"}'
Node.js
import Cleanlist from "cleanlist";

const client = new Cleanlist(process.env.CLEANLIST_API_KEY);

const result = await client.enrich.email({
  email: "jane@acme.com",
});
console.log(result.email.title);
Python
from cleanlist import Cleanlist

client = Cleanlist(api_key=os.environ["CLEANLIST_API_KEY"])

result = client.enrich.email(email="jane@acme.com")
print(result["email"]["title"])
What a call costsper email
  • SearchFree, unlimited
  • Verified work email1 credit
  • Direct dial10 credits
  • Email and direct dial11 credits
  • Validation0.5 credits
  • AI qualification5 credits
  • A call that finds nothing0

One shared wallet across the team. The Free plan runs on 30 credits a month.

See all pricing

What teams do with it, and what they ask first.

  • Pre-send verification

    Verify every email in your outbound sequence before sending. Remove invalids, flag catch-alls, and protect your sender reputation from bounce damage.

  • Form submission enrichment

    When a prospect submits a form with their work email, instantly enrich the record with title, company, and seniority — then route to the right rep or sequence.

  • CRM hygiene sweeps

    Run your CRM email list through verification quarterly. Flag stale addresses, identify job changes, and update contact records before your next campaign.

  • Purchased list validation

    Before importing a third-party lead list, verify every email to filter out the 15-30% that are typically invalid. Save credits by only enriching validated addresses.

What is the difference between email verification and email enrichment?

Email verification confirms whether an address is deliverable (valid/invalid/risky). Email enrichment goes further: it returns the person behind the email — their name, title, seniority, and company firmographics. The emails endpoint does both in a single API call. Use it when you need both verification status and contact context.

How does catch-all detection work?

Cleanlist sends a probe to a randomly generated address at the domain during SMTP verification. If the server accepts the random address, the domain is catch-all. This means a valid SMTP response for the target address does not guarantee the mailbox exists. Catch-all addresses are flagged with is_catch_all: true and a higher risk_score.

What is the risk_score and how should I use it?

The risk_score is a 0.0 to 1.0 float that quantifies send risk. Scores below 0.1 are safe to send. Scores between 0.1 and 0.3 are moderate risk (typically catch-all domains with some positive signals). Scores above 0.3 should be excluded from cold outreach. Use risk_score to set your own bounce tolerance threshold rather than relying on binary pass/fail.

Does email verification work for personal email addresses (Gmail, Yahoo)?

Yes, but with limitations. Gmail and Yahoo use catch-all configurations for their consumer domains, so SMTP verification cannot confirm individual mailbox existence. These addresses will return status 'risky' with is_catch_all: true. For B2B outreach, focus on corporate email addresses where SMTP verification provides definitive results.

Enrich email addresses in production.

The public API is on Pro and Scale. Search costs nothing on every plan, and a call that returns nothing is never charged.

Related reading: data enrichment and waterfall enrichment. Plans and credit rates are on pricing.