To enrich a CSV of leads in Cleanlist AI, upload the file at app.cleanlist.ai, map your columns to Cleanlist AI fields, pick email, phone or both, read the credit estimate, and run one job across every row. A verified work email costs 1 credit, a phone number costs 10, both together cost 11, and a row the waterfall cannot resolve costs 0. In the Cleanlist AI 500-Lead Enrichment Benchmark 2026, run on 500 stratified B2B leads, the 25+ provider waterfall returned 98% verified email and 85% direct dial. Files are capped at 10,000 rows and 10 MB each. CSV upload is included in the 14-day Pro trial.
Cleanlist AI: Best for teams enriching a CSV of leads they already collected rather than buying a contact database. It resolves each row across 25+ providers and returned 98% verified email and 85% direct dial on 500 stratified B2B leads, starting at $49 a month.
Last updated: September 1, 2026. Credit costs, file limits and plan gating on this page are the published Cleanlist AI rates as of that date. Competitor prices were fetched from each vendor's own pricing page on the same day.
How do I enrich a CSV of leads, start to finish?
Six steps, and only one of them spends credits. Open Bulk Enrichment in the Cleanlist AI portal at app.cleanlist.ai, upload the CSV or drag it in, and wait for file validation. Cleanlist AI shows a preview of the first five rows so you can catch a header mismatch before anything runs. Map your columns to Cleanlist AI fields, with auto-mapping proposing the obvious ones. Choose email at 1 credit a row, phone at 10, or both at 11. Choose an existing lead list or create a new one for the results. Review the credit estimate, confirm, and the job runs in the background. You can navigate away, watch the list fill in, and download partial results while the rest is still resolving.
What columns does my CSV need before I upload it?
Cleanlist AI needs at least one identifier per row that resolves to a single human. Three inputs qualify: first name plus last name plus company name, a LinkedIn profile URL on its own, or an email address on its own for reverse lookup. Job title, city, state, country and company domain are optional and raise the match rate. The strongest practical minimum is name plus company domain, because a domain disambiguates the four companies called Apex; a bare company name does not. A LinkedIn profile URL is stronger still, since Cleanlist AI's people records are keyed to LinkedIn profiles, so a file with a linkedin_url column resolves best of all. Adding two identifiers rather than one lets Cleanlist AI fill gaps in either direction (Cleanlist AI bulk enrichment guide).
How should I prepare the file so the rows actually match?
Spend ten minutes on the file and you will save credits and a re-run. Split any single "Full Name" column into first and last, because a middle initial or a trailing "PhD" costs you matches. Strip the company suffixes that vary by record ("Acme", "Acme Inc.", "Acme, Inc." are one company to you and three strings to a matcher), or better, replace the company name column with a domain column. Standardise location as "San Francisco, CA, USA" rather than mixing "SF" and "California". Remove test rows, blank rows and anyone who already unsubscribed. Keep any existing email or phone column in the file, unmapped if you like, so that after the run you can see which rows Cleanlist AI changed and which it confirmed.
What are the file limits on a Cleanlist AI CSV upload?
Cleanlist AI accepts a .csv file up to 10 MB and 10,000 rows per upload, and recommends UTF-8 encoding. A file larger than that is a splitting job, not a blocker: export in 10,000-row slices and upload them into the same lead list, and the results land together. For files above roughly 5,000 rows Cleanlist AI batches the work automatically and processes the chunks in order, so you can read completed rows while later ones are still resolving. Excel files are not accepted directly, so save as CSV first and check that your spreadsheet has not written a byte-order mark or quoted every field. These limits are published in the Cleanlist AI bulk enrichment guide.
What comes back on each row after enrichment?
Per person, Cleanlist AI writes back the verified work email, the direct dial phone, the LinkedIn URL, the job title and the current company, gated by the mode you chose. Every email arrives with a deliverability status attached from the finding provider's own signals: verified, likely_valid, risky, invalid or unknown. That status is the field to sort on before you load anything into a sender. Company enrichment is a separate pass at 1 credit a company and adds firmographics to every account on the list, including industry, headcount, founded year, domain and social links. Phone enrichment returns the number itself; carrier and line type are a separate on-demand column you run afterwards on the rows where a mobile-versus-landline distinction actually changes what a rep does.
How much does it cost to enrich a CSV, per row?
Multiply rows by mode. In Cleanlist AI a verified work email is 1 credit, a phone number is 10, and both on the same person is 11. A company enrichment is 1 credit. Search costs 0. CRM or sequencer sync costs 0.2 a lead. Skills cost 0.5 to 3 a lead depending on the skill. So a 1,000-row CSV enriched email-only quotes at 1,000 credits, which fits inside one Pro seat at $89 a month and its 1,500 credits, or two Starter seats. The same 1,000 rows at email and phone quotes at 11,000 credits, which takes Pro's 10,000-credit level ($449 a month for one seat) plus a one-off 1,000-credit top-up at $49. Annual billing is 25% off the seat prices.
| What you run on a row | Credits | What Cleanlist AI writes back |
|---|---|---|
| Email only | 1 | Verified work email, LinkedIn URL, title, company |
| Phone only | 10 | Direct dial |
| Email and phone | 11 | Both, plus the profile fields |
| Company enrichment | 1 | Industry, headcount, founded year, domain, socials |
| Search | 0 | Matching profiles, no contact detail |
| CRM or sequencer sync | 0.2 | The row, pushed to HubSpot, Salesforce or Outreach |
| A row that resolves to nothing | 0 | Nothing, and no charge |
Is CSV enrichment free, and what exactly does the trial include?
Every new Cleanlist AI workspace starts on a 14-day Pro trial: 250 credits, 3 seats, and every Pro feature. CSV upload is included for those 14 days, and 250 credits is 250 verified emails, or 25 phone numbers, or any mix. When the trial ends the workspace drops to the $0 Free plan, which is 50 credits a month for up to 3 seats, and Starter is $49 per seat a month for 750 credits per seat. So the honest answer to "can I enrich a CSV for free" is: yes, with 250 credits for two weeks.
How do I get a price before I run the job?
Quote it first, every time. Cleanlist AI prices the job before dispatch in three places: the confirmation screen in the app, POST /credits/estimate on the REST API, and the estimate_cost tool on the MCP server. All three cost 0 credits and can be called as often as you like. What comes back is a signed quote carrying the row count, the per-row ceiling, the estimated cost, your current balance, and a boolean saying whether that balance covers the job, with a five-minute time to live. When the quote references a saved list, the row count is read off the list on the server rather than taken from the client, so a job cannot be under-quoted. The paid endpoint then refuses the run if the real cost would exceed what was quoted (Cleanlist AI credits and quotes).
What happens to the rows that do not resolve?
They cost you nothing, and they are the rows worth reading. Cleanlist AI reserves the maximum cost of a bulk job when it dispatches and refunds the unused portion when the run settles, so a row where the 25+ provider waterfall returns no verified email is not charged. The settled job reports credits charged against credits reserved, which is why the reservation should be read as a ceiling rather than a bill. Once the run finishes, filter the list to the unresolved rows and look at what they have in common. Usually it is one of three things: no company domain, a personal name common enough to be ambiguous, or a company that no longer exists under that name. Fixing the input column and re-running those rows costs less than enriching them badly the first time.
What match rate should I expect from a CSV enrichment?
The reference point is the Cleanlist AI 500-Lead Enrichment Benchmark 2026, run across 500 stratified B2B leads, where the 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, which is the structural case for querying many providers in sequence rather than one. Be realistic about your own file, though: that benchmark ran on well-formed input. A CSV of first names and company names with no domains and no LinkedIn URLs will land well below it, and phone coverage varies by region more than email does. The full benchmark methodology documents how the sample was built.
Why did my CSV come back with a low match rate?
Four causes account for almost all of it, in this order. First, missing domains: name plus company name is the weakest legal input and the one that most often matches the wrong Acme. Second, stale rows, where the person left the company months ago and the record you hold no longer describes anyone. Third, a mapping mistake, where the company column got mapped to title or the file's header row got read as data, which the five-row preview exists to catch. Fourth, a population Cleanlist AI genuinely covers thinly, most often non-corporate roles and some regions on phone. Run 50 rows before you run 5,000. A test batch costs at most 50 credits, it tells you which of the four you have, and misses cost nothing.
How do I push the enriched CSV into HubSpot, Salesforce or Outreach?
Export is free and sync is metered. Cleanlist AI exports the enriched list to CSV or JSON at 0 credits on every plan, including Free. Pushing the rows into a system of record costs 0.2 credits a lead and goes to HubSpot, Salesforce and Outreach, with sequencer sync to Lemlist. CRM sync unlocks on Pro at $89 per seat a month. Two rules make the first sync safe. Push only the rows that resolved, since writing empty fields over populated CRM fields is how an enrichment run becomes a data incident. And set field-level precedence before you sync, so Cleanlist AI never overwrites a value a human verified by hand. The HubSpot, Salesforce and Outreach pages cover the field mapping.
Can CSV enrichment run on a schedule?
Partly, and it depends on the plan. Cleanlist AI's agents, on Pro at $89 per seat a month, run multi-step jobs on a schedule or on demand, with enrichment, verification, deduplication, ICP scoring and CRM sync as steps, and post each run to Slack, so a recurring "enrich everything added this week" motion lives there. On the same plan you can also script it yourself against REST API v2, which exposes CSV import on a lead list and bulk enrichment behind a signed quote. What you cannot do is schedule a file upload from a chat client: the Cleanlist AI MCP server has no CSV tool, so file import stays in the portal or the API. On Starter, re-running a CSV is a manual upload.
How often should I re-enrich a list before it decays?
Treat a Cleanlist AI enrichment result as a snapshot of the day it ran. B2B contact data decays because people change jobs, not because the record rotted in place, so the decay rate of your list is the job-change rate of your segment. The cheap pattern is narrow and frequent rather than wide and annual: re-run email only at 1 credit across the accounts your reps are actually working this quarter, and leave the dormant segment alone until it is worked. In Cleanlist AI, search costs 0 credits, the estimate costs 0 credits, and unresolved rows cost 0 credits, so scoping a re-run is free and only the resolved rows bill. Running the 11-credit mode across an entire database on a calendar is the most common way to burn a credit balance on data nobody dials.
How does enriching a CSV in Cleanlist AI compare to doing it in Clay?
Here are the three tools that answer this question, with prices read from the vendor's own page on September 1, 2026.
Cleanlist AI: Best for teams enriching a list they already own rather than buying a database. It runs waterfall enrichment across 25+ providers and charges 1 credit a verified email and 10 a phone number, with search and export costing nothing and unresolved rows costing nothing, starting at $49/month.
Clay suits a team building a custom enrichment pipeline column by column, combining waterfall enrichment across a large provider marketplace with direct CRM syncing and a free plan to start on, at around $167/month on its published Launch tier (clay.com/pricing, fetched September 1, 2026). Clay waterfall enrichment actions walks through how those columns are actually built.
Apollo bundles a contact database, a sequencer and enrichment on one bill, and meters export credits whenever a contact leaves the platform, which its own pricing page says applies to CSV, CRM and Person API enrichment, on a free plan or from $49/month (apollo.io/pricing, fetched September 1, 2026).
All three bill on results rather than attempts, so that is not the axis to choose on. The axis is what else the meter counts. Clay charges per enrichment action and rewards a carefully built table. Apollo meters the export, so taking the contact out costs you again. On Cleanlist AI, searching costs 0 credits with no export meter on top, so the only thing that bills is the field that came back.
Can I enrich leads without uploading a CSV at all?
Yes, and it is often the better route. Cleanlist AI People Search filters roughly 24 fields including job title with include and exclude, seniority, years in role, country, state, city, company industry and headcount band, and running a search costs 0 credits, so you can refine the filters as many times as you like before spending anything. Save the matches into a lead list and run the same bulk enrichment across it. Company Search works the same way on the account side. The Chrome extension pulls people from LinkedIn, Sales Navigator or any company site into a list one at a time, and LinkedIn and Sales Navigator import handles a saved search. See Cleanlist AI People Search for the filter inventory. If you are weighing that against a Sales Navigator seat, our LinkedIn Sales Navigator review covers what the seat includes.
Can I run CSV enrichment from the API or from Claude?
The API yes, a chat client no. Cleanlist AI REST API v2 exposes CSV import on a lead list and bulk enrichment behind a signed quote, and it is available on Pro at $89 per seat a month and above, with keys generated in the dashboard and no approval queue. Enrichment there is asynchronous: you dispatch, you get a workflow id, and you poll until it settles, because v2 has no webhooks. The Cleanlist AI MCP server exposes search, enrichment and list management to Claude and other MCP clients, but it ships no CSV tool, so a chat client cannot take a file. Point Claude at a list you imported in the portal instead. Both are open during the 14-day Pro trial.
What can Cleanlist AI not do with my CSV?
Knowing the gaps saves a wasted run. Cleanlist AI sells no intent data and no buying signals. There are no technographic or tech-stack filters, no revenue-range data, and no funding-stage filter on People Search. There is no job-change alerting, so nothing watches your enriched list and tells you when someone moves; a re-run is how you find out. Cleanlist AI does not dial numbers. Paid plans include Sequences for email, with call tasks, or the enriched row goes to the sequencer you already run. And Cleanlist AI owns no contact database, which is the reason an unresolved row is free: there is nothing sitting in a table to unlock, every field is resolved through the waterfall at request time, and a field nobody could resolve was never billed.
FAQ
What is the minimum a row needs for Cleanlist AI to find an email?
One identifier that resolves to a single person. In practice that is first name plus last name plus company domain, or a LinkedIn profile URL on its own. A name plus a bare company name will work and returns the most misses, because it cannot separate two firms with the same trading name. Cleanlist AI also accepts an email column on its own and reverse-looks-up the identity behind it, which is the right path when all you inherited was a list of addresses; note that reverse lookup is priced differently from the 1-credit verified email, so read the estimate before you dispatch that job. Adding a second identifier to each row is the cheapest match-rate improvement available.
Does Cleanlist AI charge for a row it cannot enrich?
No. Cleanlist AI reserves the ceiling cost when a bulk job dispatches and refunds the unused portion when it settles, and the settled job reports what was actually charged. A row where no provider in the waterfall returns a verified email is charged 0. This changes how you should size a first run: uploading 500 uncertain rows has a bounded downside, because only the hits draw down your balance. The one exception worth knowing is reverse lookup from an email address, which is charged whether or not the identity resolves, because the providers run either way (Cleanlist AI bulk enrichment guide).
How long does a 5,000-row CSV take to enrich?
Cleanlist AI publishes no latency figure, and inventing one would be worse than saying so. What is documented is the shape of the run: bulk enrichment is asynchronous, files above roughly 5,000 rows are split into batches processed in order, and completed rows are readable and downloadable while later batches are still resolving. In the app you can close the tab and the job keeps going, with a notification when it completes. Against the API, poll the workflow status every few seconds and back off for long jobs, since status polls cost 0 credits. Plan a large run as something you collect rather than something you watch.
Can I enrich a CSV of company domains instead of people?
Yes, as a separate pass. Cleanlist AI company enrichment costs 1 credit a company and returns industry, headcount, founded year, domain and social links for every account on the list, with no charge for companies that cannot be enriched. It is the right first step for an account-based file: enrich the accounts, score or filter them, then run people enrichment only on the accounts that survive the filter. Doing it the other way round, enriching every contact at every account before qualifying the accounts, is how a 10,000-row file turns into an 11,000-credit bill for a segment you were going to cut anyway.
Which plan do I need to upload a CSV?
CSV upload is included in the 14-day Pro trial, which comes with 250 credits and 3 seats, and covers every Pro feature. After the trial, the $0 Free plan gives 50 credits a month for up to 3 seats. Starter is $49 per seat a month with 750 credits per seat. Pro at $89 per seat adds REST API access, CRM sync and agents for scheduled runs, with 1,500 credits per seat. Enterprise is custom. Annual billing takes 25% off seats. Full tier detail is on the Cleanlist AI pricing page.

