25+ data providers behind one API key.
The Cleanlist AI API searches, saves and enriches B2B people and companies, over REST from your code or MCP from Claude.
A side-by-side demo of the same job done two ways. In Claude, over the Cleanlist AI MCP server, one request runs search_people, add_leads_to_list, estimate_cost and enrich_list. In a terminal, over the REST API, the same run is five calls: search people, add the rows to a list, estimate the cost, start a bulk enrichment and poll its status. The search asks for VPs or Heads of Sales at 51 to 500 person software companies in the US. 7 people found and saved to Series B sales leaders, all 7 with a verified work email and 5 with a phone number, quoted at 77 credits and charged 57.
10,000+ users, from founders to full sales teams
- Switched from
ZoomInfo - Case study
HackerOneSwitched from
Apollo- Switched from
Clay - Case study
Sumo LogicSwitched from
Clay- Switched from
Apollo - Case study
- Switched from
ZoomInfo - Switched from
ZoomInfo
Every endpoint, priced in credits.
Search, reads, polls, exports and saving to a list cost 0. Only enrichment and smart agents spend credits.
| Method and path | What comes back | Credits |
|---|---|---|
| Search | ||
POST/ | Matching people, plus a task_id | 0 |
POST/ | People at companies that match your filters | 0 |
POST/ | Your criteria compiled, without running the search | 0 |
GET/ | The live filter allowlist and its enums | 0 |
| Lead lists | ||
POST/ | A new list | 0 |
POST/ | Rows added, duplicates skipped | 0 |
POST/ | Rows imported, idempotency_key honoured | 0 |
GET/ | The saved rows, cursor paged | 0 |
| Enrichment | ||
POST/ | A workflow_id to poll | 1 email · 10 phone |
POST/ | One workflow_id for the whole list | 1 email · 10 phone |
POST/ | The company record, inline | 1 |
GET/ | Progress, then credits_charged | 0 |
| AI qualification | ||
POST/ | A workflow_id · AI qualification | 5 per lead |
GET/ | Scores and reasons, row by row | 0 |
| Export | ||
POST/ | A signed download link | 0 |
GET/ | The records inline, columns selectable | 0 |
| Workspace | ||
GET/ | Identity, scopes, plan and organization | 0 |
GET/ | The shared team wallet | 0 |
POST/ | A signed quote_id, five-minute life | 0 |
GET/ | What this key has spent | 0 |
Start a run. Poll until it settles.
Person and bulk enrichment answer 202 Accepted with a workflow_id and a poll_url.
A timeline of one bulk enrichment. The request returns 202 Accepted with a workflow id and holds 77 credits. Status polls at 2, 6, 14 and 30 seconds read queued, running with 3 of 7 rows done, running with 6 of 7, and completed. The hold settles into 57 credits charged and 20 released.
Scoped keys. Public limits.
Every clapi_ key is checked against 14 OAuth scopes and revocable from Settings. 30 requests a minute per key, 60 per organization.
The API keys screen in Cleanlist AI settings, with two keys, beside the three published rate limits: 30 requests a minute per key, 60 a minute per organization, and 60 People Searches a UTC day per key.
Ask Claude for a phone number. It calls Cleanlist AI over MCP.
Add mcp.cleanlist.ai as a custom connector in claude.ai, Claude Desktop, Claude Code or Cowork, then sign in.
A conversation in Claude with the Cleanlist AI connector. Asked for the phone number of Marcus Vale at Omni, Claude uses Cleanlist AI enrich_person and answers with a verified mobile number; asked to add him to the Series B sales leaders list, it uses add_leads_to_list. Beside it, the connector at mcp.cleanlist.ai lists every tool.
1 credit per verified email, however many providers it took.
Quote a run first, and it can't bill past the ceiling you saw.
The Series B sales leaders list in Cleanlist AI after one enrichment of 7 leads. All 7 have a verified work email at 1 credit each; 5 have a phone number at 10 credits each. Quoted at 77 credits, charged 57, with 20 released to the wallet.
Credit prices
- Search, list reads, exports
- 0
- Status polls and quotes
- 0
- Verified work email
- 1
- Phone number
- 10
- Email and phone on one row
- 11
- Company enrichment
- 1
- AI qualification
- 5per lead
API access starts on Pro: $89 per seat a month, 1,500 credits per seat. Annual billing takes 25% off. API keys start working on a paid plan: the 14-day Pro trial runs in the app and over MCP.
Which parts of the Cleanlist AI API are free?
Search and every read cost 0 credits: POST /people/find, POST /people/find-at-companies, GET /people/find/filters, list reads, adding leads to a list, status polls, GET /whoami, GET /credits/balance and both exports. Only enrichment and smart-agent runs spend credits.
How much does the API cost per record?
A verified work email is 1 credit however many providers it took, a phone number 10, both 11, billed per result. The API starts on Pro: $89 per seat a month with 1,500 credits per seat. Annual is 25% off.
What filters does the search API accept?
POST /people/find takes structured filters, no prose. The short form is a filters object with keys such as titles, seniority, departments, job_functions, management_levels, locations, company_headcount and company_industries. The full form is criteria, with 73 person keys, and company_criteria, with 58 company keys. Values are case-sensitive, and a wrong one silently returns zero rows, so copy them from GET /people/find/filters.
Which response fields come back empty?
POST /enrichment/company leaves industry, employee_count, revenue_range and tech_stack null. They arrive as HTTP 200 with the key present, so don't filter, score or map on them.
Can I verify a list of emails I already own?
Not through the public API: it has no /verify route for addresses you sourced elsewhere. Enrichment checks every address before billing it, and the 1-credit email price includes that check.
Does the API support webhooks?
Not on v2: webhooks exist only on the frozen legacy v1 API. Async calls return a workflow_id and a poll_url, and polls cost 0 credits. Treat completed_with_errors as terminal, or a client waits forever on any bulk run with a failed row.
Am I charged twice if I enrich the same record again?
Yes. Enrichment endpoints take no idempotency key, so a retry is a new billable workflow; keep your own ledger of enriched ids. Ingest has one: add-leads and csv-import take an idempotency_key, and a replay inside 24 hours returns idempotency_replayed: true, uncharged.
Is there an uptime SLA or a SOC 2 report?
No. As of August 22, 2026, Cleanlist AI publishes no uptime SLA and is not SOC 2 certified. The API runs over HTTPS, with published rate limits and scoped bearer tokens you can revoke.
Price it, then run it.
Create a key in Settings and make your first call.
14 days of Pro, free.
