API Reference · core
Enrich leads via API
Send a raw lead — just an email or name + company — and get back a fully scored ICP record with verified contact data, firmographics, intent signals, and a 0-100 fit score. One API call replaces the manual research loop.
Endpoint
POST https://api.cleanlist.ai/v1/enrich/leadRequest
POST https://api.cleanlist.ai/v1/enrich/lead
Authorization: Bearer clnl_live_...
Content-Type: application/json
{
"email": "jane@acme.com"
}Response
{
"id": "ev_l4m8np2",
"status": "completed",
"lead": {
"email": "mike.chen@techflow.io",
"email_status": "valid",
"first_name": "Mike",
"last_name": "Chen",
"title": "Director of Revenue Operations",
"seniority": "director",
"company_name": "TechFlow",
"company_domain": "techflow.io",
"company_size": "51-200",
"company_industry": "SaaS",
"company_revenue": "$10M-$25M",
"icp_score": 87,
"icp_signals": [
"target_seniority",
"target_department",
"company_size_fit",
"industry_match"
],
"intent_signals": [
"hiring_sales_ops",
"evaluated_competitor"
]
},
"meta": {
"credits_used": 11,
"providers_queried": 15,
"providers_matched": 6,
"confidence": 0.92,
"enriched_at": "2026-04-15T09:18:44Z"
}
}Field reference
| Field | Type | Description |
|---|---|---|
| string | Verified work email address with SMTP-level validation. | |
| email_status | enum | Verification result: valid, invalid, risky, catch-all, disposable, role-based, unknown. |
| first_name | string | Lead's first name. |
| last_name | string | Lead's last name. |
| title | string | Normalized job title. |
| seniority | enum | Seniority level classification. |
| company_name | string | Current employer. |
| company_domain | string | Company primary domain. |
| company_size | string | Employee count range. |
| company_industry | string | Industry classification. |
| company_revenue | string | Estimated annual revenue. |
| icp_score | integer | 0-100 fit score against your configured ICP. 80+ = high priority, 50-79 = nurture, below 50 = deprioritize. |
| icp_signals | string[] | Array of specific ICP match signals explaining the score breakdown. |
| intent_signals | string[] | Active buying intent signals detected: hiring patterns, technology evaluations, competitor engagement. |
Code samples
curl -X POST https://api.cleanlist.ai/v1/enrich/lead \
-H "Authorization: Bearer $CLEANLIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane@acme.com"}'import Cleanlist from "cleanlist";
const client = new Cleanlist(process.env.CLEANLIST_API_KEY);
const result = await client.enrich.lead({
email: "jane@acme.com",
});
console.log(result.lead.title);from cleanlist import Cleanlist
client = Cleanlist(api_key=os.environ["CLEANLIST_API_KEY"])
result = client.enrich.lead(email="jane@acme.com")
print(result["lead"]["title"])Common use cases
Enrich and score every form submission in real time. Route high-ICP leads to reps instantly, send low-fit leads to nurture sequences automatically.
Run purchased lead lists through enrichment before importing to CRM. Remove invalids, fill missing fields, and score against ICP — so only qualified leads enter your pipeline.
Enrich a raw list of target companies into scored lead records. Sort by ICP score to prioritize the highest-fit accounts for each rep's territory.
Use icp_score, seniority, and company_size in your routing rules to assign leads to the right rep, sequence, or SLA tier without manual triage.
Pricing
Credit-based, no per-seat fees. This endpoint uses the standard enrichment rate:
- Email only: 1 credit per enriched lead.
- Email + phone: 11 credits per enriched lead.
- Free tier: 30 credits/mo. See all pricing.
FAQ
How does ICP scoring work in the lead enrichment endpoint?
ICP scoring compares enriched lead attributes (title, seniority, company size, industry, revenue, tech stack) against your configured Ideal Customer Profile. You define your ICP criteria in the Cleanlist dashboard, and every enriched lead receives a 0-100 score with a breakdown of which signals matched. Scores above 80 indicate a strong fit.
What is the difference between lead enrichment and contact enrichment?
Contact enrichment returns verified contact data (email, phone, title, company). Lead enrichment returns the same contact data plus ICP scoring and intent signals. Use contact enrichment when you need data accuracy. Use lead enrichment when you also need qualification and prioritization.
Can I enrich leads with just a company name and no email?
Yes. The lead enrichment endpoint accepts email, name + company, domain, or LinkedIn URL as input. When you provide a company name without an email, Cleanlist identifies the best-fit contacts at that company based on your ICP criteria and returns enriched records for them.
How fresh are the intent signals?
Intent signals are refreshed weekly from hiring data, technology adoption signals, and web activity patterns. The recency of each signal is included in the response so you can weight recent signals more heavily in your routing logic.
Next steps
- Full REST reference: /product/api.
- Related glossary: data enrichment, waterfall enrichment.
- Ready to ship? Start free with 30 credits.