To enrich contacts in Cleanlist, import the list at app.cleanlist.ai/lists, choose an enrichment mode, and run one bulk job across every row. Partial costs 1 credit and returns a verified work email plus LinkedIn URL, job title and company. phone_only costs 10 credits and returns a direct dial. full costs 11 credits and returns email and phone together. Cleanlist charges on results, so a row the waterfall cannot complete costs nothing. In the Cleanlist 500-Lead Enrichment Benchmark 2026, run on 500 stratified B2B leads, the waterfall returned 98% verified email and 85% direct dial.
Last updated: August 10, 2026. Prices and credit costs on this page are the published Cleanlist rates as of that date.
What does it mean to enrich contacts?
Enriching contacts in Cleanlist means taking records you already have, usually a name plus a company or a LinkedIn URL, and filling in the fields you need to actually reach someone: a verified work email, a direct dial phone, a LinkedIn URL, a job title and a current company. Cleanlist resolves those fields at request time through a waterfall across 15+ providers, rather than reading them out of a database it owns. Cleanlist does not own or resell a contact database, which is why enrichment is metered per resolved record (1 credit for an email, 10 for a phone) and an unresolved row costs 0. See the contact enrichment definition for the field-level breakdown.
How do I enrich a contact list from start to finish?
Five steps, and only two of them cost credits. First, get the list into Cleanlist, either by importing a CSV at app.cleanlist.ai/lists or by saving results from a people search. Second, check the input columns so rows can be matched. Third, call the cost estimate to get a signed quote before any spend. Fourth, dispatch one bulk job with the mode you want: partial at 1 credit, phone_only at 10, full at 11. Fifth, export to CSV or JSON, or sync to your CRM at 0.2 credits per lead. Cleanlist runs the enrichment asynchronously, so you dispatch the job and collect results rather than watching rows resolve one at a time.
How do I import a contact list into Cleanlist?
CSV file import runs in the Cleanlist app at app.cleanlist.ai/lists. Create a lead list, upload the file, map your columns to the Cleanlist fields, and the rows land as leads ready to enrich. CSV Upload is a Starter feature, so it unlocks at $79 per month; the Free plan (30 credits, no card) covers waterfall enrichment, the Chrome Extension, manual entry and CSV export, but not file upload. If you would rather automate the import, the Cleanlist REST API v2 exposes POST /lead-lists/{id}/csv-import on Pro plans and above at $229 per month. The MCP server has no CSV tool, so a Claude conversation cannot take a file.
What columns does my file need before I import it?
Give Cleanlist enough to identify a person unambiguously. A LinkedIn profile URL is the strongest single input, because Cleanlist's people records are keyed to LinkedIn profiles. Failing that, first name, last name and company domain together will match. A name plus a company name with no domain is the weakest input and produces the most unresolved rows, especially for common names at companies with several legal entities. Keep any existing email or phone column in the file so you can see what changed after the run. Since Cleanlist charges only when a verified result comes back, weak input costs you coverage rather than credits, but a 5,000-row file with no domains will return far less than the 98% verified email rate in the benchmark.
Which enrichment mode should I choose: partial, phone_only, or full?
Pick the mode by channel, because the price gap between them is 11x. Cleanlist's partial mode costs 1 credit and is the right default for email-only outbound. phone_only costs 10 credits and is for calling motions where you already hold good emails. full costs 11 credits and returns email and phone in one request, the same 11 credits as running partial and then phone_only in sequence, in a single pass. On the $79 Starter plan's 1,500 credits, that is 1,500 emails, or 150 phones, or roughly 136 full contacts. Most teams over-buy here: running full on an entire list when only the accounts that reach a call stage need a phone number is the single most common way to burn a Cleanlist credit balance.
| Mode | Credits | What Cleanlist returns |
|---|---|---|
partial | 1 | Verified work email, LinkedIn URL, job title, company |
phone_only | 10 | Direct dial phone |
full | 11 | Email and phone together, plus the partial fields |
| Company enrichment | 1 | Company name, domain, HQ location, LinkedIn URL |
| Search | 0 | Profile-side match data, no contact details |
What fields come back from each Cleanlist enrichment mode?
Person enrichment in Cleanlist returns the verified work email, direct dial phone, LinkedIn URL, job title and current company, gated by the mode you requested. Company enrichment costs 1 credit and returns company name, domain, HQ location and LinkedIn URL. Two fields deserve a warning before you build a workflow on them: industry and employee count are documented company fields that always come back empty today, so do not design a segmentation rule around them. Every Cleanlist response carries the same envelope regardless of endpoint, including credits_charged, so the settled cost of each record is machine-readable rather than something you reconcile from an invoice at month end.
How do I estimate the cost before I run the enrichment?
Quote the job first. Cleanlist exposes a cost estimate in the app, as POST /credits/estimate on the REST API, and as estimate_cost on the MCP server. It returns the credit cost of the job, your current balance, and whether that balance is sufficient, as a signed quote with a five-minute time to live. POST /enrichment/bulk then runs the job with that quote attached, which is the mechanism that stops an automated run from overspending your balance. A 1,000-contact email-only job quotes at 1,000 credits. The same 1,000 contacts at full quotes at 11,000. An automated Cleanlist run that reads the quote first can stop before dispatch when the balance is not sufficient.
What happens when Cleanlist cannot find a contact?
You are not charged. Cleanlist reserves credits when an enrichment workflow is dispatched and refunds the unused portion when it settles, so a row the waterfall cannot complete costs nothing. The settled response reports credits_charged, which can be lower than the amount reserved and can be zero. This is why credits_reserved on dispatch should be read as a ceiling rather than a bill. Pay-for-results changes how you should size a test: uploading 500 uncertain rows to Cleanlist and seeing what resolves has a bounded downside, because the misses are free and only the hits draw down the 30 credits on the free plan or the 1,500 on Starter at $79 per month.
What hit rate should I expect from bulk contact enrichment?
Use the Cleanlist 500-Lead Enrichment Benchmark 2026 as the reference point. Across 500 stratified B2B leads, the Cleanlist waterfall returned 98% verified email and 85% direct dial. On identical input, single-source providers returned 70% to 80% on email and 30% to 60% on phone. The gap is structural: one provider has one set of blind spots, and querying 15+ providers in sequence closes the holes any single source leaves. Your own rate will move with input quality and geography, and phone coverage varies more by region than email does. The full benchmark methodology documents the sample construction.
How much does it cost to enrich 1,000 contacts?
Multiply rows by mode, then map to a plan. 1,000 contacts at partial costs 1,000 credits, which fits inside Cleanlist's $79 per month Starter plan and its 1,500 credits. 1,000 contacts at phone_only costs 10,000 credits, which Pro covers at its $449 per month 10,000-credit option. 1,000 at full costs 11,000 and needs the $599 per month Scale plan and its 15,000 credits. Pro starts at $229 per month for 5,000 credits. Annual billing is 25% off across all three. Unused credits roll over for up to three months, and the whole team draws from one shared org balance. Starter includes 2 seats, Pro 5 and Scale 10, with extra seats at $20 each. Full tier detail is on the Cleanlist pricing page.
Is bulk contact enrichment instant, or do I collect results later?
Cleanlist bulk enrichment is asynchronous. You dispatch the job, the call returns a workflow_id immediately, and you poll that ID until the results settle. This matters for how you script it: an automated pipeline should dispatch, store the workflow ID, and check back, rather than holding a connection open waiting for 1,000 rows to resolve through a 15+ provider waterfall. Single-company enrichment through the Cleanlist API is synchronous at 1 credit, so a one-off lookup does behave like a normal request and response. In the app, a dispatched bulk job keeps running whether or not the tab stays open, and the list shows resolved fields as they land.
How do I get the enriched contacts back out of Cleanlist?
Exports are free. Cleanlist returns a signed CSV link through POST /export/csv/signed-url and inline records through GET /export/json, and CSV export is available in the app on every plan, including the Free tier's 30 credits. CRM and sequencer sync is the paid path at 0.2 credits per lead, pushing to HubSpot, Salesforce and Outreach through POST /sync/crm and to Lemlist through POST /sync/sequencer. Sync is one-way out of Cleanlist. Cleanlist does not send email, run sequences or dial numbers itself, so the enriched record is handed to the tool that does that job.
How do I enrich contacts that already live in HubSpot or Salesforce?
Pull the segment in, enrich it, and push it back. Cleanlist integrates natively with Salesforce, HubSpot, Pipedrive, Outreach, Salesloft and Lemlist, and CRM import plus CRM integrations unlock on the Pro plan at $229 per month. The pattern that works is narrow: select the records missing an email or a phone rather than re-running the whole database, quote the job with the cost estimate, enrich, then sync back at 0.2 credits per lead. Set the rule that Cleanlist never overwrites a manually verified field before you run the first sync. The HubSpot data enrichment walkthrough and the HubSpot integration page cover the field mapping.
Run one bulk job on the contact list you already have
Import a CSV, quote the job, and enrich every row through a waterfall of 15+ providers. Free tier is 30 credits a month, no card. Search costs 0 credits, an email is 1, a phone is 10, both together are 11, and an unresolved row costs nothing.
Can I enrich contacts without uploading a file?
Yes, build the list inside Cleanlist instead. People Search filters on 20+ dimensions including job title with include and exclude, seniority, contact country, state and city, company industry, headcount band and HQ location, and it costs 0 credits to run, so you can refine the filters as many times as you like before spending anything. Company Search has exactly 9 filters. Saving matches to a lead list is charged at 0.5 credits per newly added lead, and then the same bulk enrichment runs across the saved list. This route skips the CSV entirely, and both People Search and CSV Upload unlock on Starter at $79 per month. See Cleanlist People Search for the filter inventory.
Can I run contact enrichment from Claude or from my own code?
Both ship today. The Cleanlist MCP server, in beta on self-serve accounts and excluded from AppSumo licenses, exposes enrichment to Claude and other MCP clients, where estimate_cost returns the signed quote and enrich_list runs the job, at the same 1, 10 and 11 credit rates as the app. The Cleanlist REST API v2 covers the same jobs from your own code and is available on Pro at $229 per month, with keys generated from the dashboard and no approval queue. One distinction is load-bearing: Copilot and the MCP server accept natural language, while the public API v2 takes structured filters and has no natural-language endpoint. Details on the Cleanlist MCP server and the Cleanlist API.
What can Cleanlist not enrich?
Knowing the gaps saves a wasted workflow. Cleanlist sells no intent data. There are no technographic filters and no revenue filters, and both are rejected by the backend if you send them. funding_stage is accepted by the API but the underlying column is empty, so it silently returns zero results and is not a usable filter. There is no job-change alerting. Company industry and employee count are documented Cleanlist fields that always come back empty today. And Cleanlist owns no contact database, so there is nothing sitting in a table waiting to be unlocked: every field is resolved through the waterfall at request time, which is exactly why an unresolved row costs 0 credits.
How do I keep an enriched contact list from going stale?
Re-enrich on a schedule instead of trusting one run forever. A Cleanlist enrichment result is a snapshot of the day it ran, and people change roles and companies continuously, so a list enriched in January is a different asset by July. The Cleanlist mechanics make a re-run cheap to scope: search costs 0 credits, the cost estimate gives you a signed number before you dispatch, and rows that resolve to nothing cost nothing. The practical pattern is to re-run partial at 1 credit across the segment your reps are actually working, rather than full at 11 credits across the whole database. Waterfall enrichment and CRM cleanup cover the recurring workflow.
FAQ
What is the difference between email enrichment and contact enrichment?
In Cleanlist, email enrichment returns one field, a verified work email address, and contact enrichment returns the reachable record around that person: email, direct dial, LinkedIn URL, job title and company. The two are separate price points rather than separate products. Cleanlist's partial mode at 1 credit is email enrichment plus the profile fields, and full at 11 credits is contact enrichment with the phone attached. If your motion is email-only, paying 11 credits per row buys you a phone number nobody will dial. If your motion is multi-channel, running two separate jobs at 1 and 10 credits costs the same 11 and takes twice as long.
Can I enrich contacts for free?
Partly. The Cleanlist Free plan gives 30 credits a month with no card required, which is 30 verified emails at 1 credit each, or 3 direct dials at 10 each, or a mix. Search costs 0 credits on every plan that includes it, and unresolved rows cost nothing, so the 30 credits only move when a record actually resolves. What the Free plan does not include is CSV Upload or People Search, both of which unlock on Starter at $79 per month, so free-tier enrichment runs through the Chrome Extension or manual entry rather than a file.
How accurate is bulk contact enrichment?
In the Cleanlist 500-Lead Enrichment Benchmark 2026, run across 500 stratified B2B leads, the waterfall returned 98% verified email and 85% direct dial. Single-source providers on identical input returned 70% to 80% on email and 30% to 60% on phone. Two caveats worth stating plainly: accuracy tracks input quality, so rows with a LinkedIn URL or a company domain resolve far better than a bare name, and phone coverage varies by region more than email does. The complete lead enrichment guide covers how to read vendor-published match rates against your own list.
Run this on your own list
Upload a CSV, enrich every row across 15+ providers, and export the result back to your CRM. First 30 rows free.
Enrich 30 rows free30 credits free every month · No credit card
