To enrich a CSV of leads in Cleanlist, upload the file at app.cleanlist.ai, map your columns to Cleanlist 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 direct dial costs 10, both together cost 11, and a row the waterfall cannot resolve costs 0. In the Cleanlist 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 full-access trial, and on the $0 Free plan it sits behind Starter at $79 a month.
Last updated: September 1, 2026. Credit costs, file limits and plan gating on this page are the published Cleanlist 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 portal at app.cleanlist.ai, upload the CSV or drag it in, and wait for file validation. Cleanlist shows a preview of the first five rows so you can catch a header mismatch before anything runs. Map your columns to Cleanlist 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 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'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 fill gaps in either direction (Cleanlist 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 changed and which it confirmed.
What are the file limits on a Cleanlist CSV upload?
Cleanlist 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 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 bulk enrichment guide.
What comes back on each row after enrichment?
Per person, Cleanlist 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 a verified work email is 1 credit, a direct dial 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. Smart agents cost 0.5 to 3 a lead depending on the agent. So a 1,000-row CSV enriched email-only quotes at 1,000 credits, which fits inside Starter at $79 a month and its 1,500 credits. The same 1,000 rows at email and phone quotes at 11,000 credits, which needs Scale at $599 a month and its 15,000. Pro sits between at $229 for 5,000 credits. Annual billing is 25% off on all three, and extra seats are $20 each.
| What you run on a row | Credits | What Cleanlist 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?
State this one precisely, because the gate moved. Every new Cleanlist workspace starts on a 14-day full-access trial: 250 credits, 3 seats, no card, and every feature except the public API and the MCP server. CSV upload is a feature, so it is included for those 14 days, and 250 credits is 250 verified emails, or 25 direct dials, or any mix. When the trial ends the workspace drops to the $0 Free plan, which is 30 credits a month, 1 seat, CSV export on every plan, and no CSV upload. Upload unlocks on Starter at $79 a month. So the honest answer to "can I enrich a CSV for free" is: yes for two weeks with 250 credits and no card, then it takes Starter.
How do I get a price before I run the job?
Quote it first, every time. Cleanlist 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 credits and quotes).
What happens to the rows that do not resolve?
They cost you nothing, and they are the rows worth reading. Cleanlist 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 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 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 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 $229 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 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's Playbook Builder, on Scale at $599 a month, runs multi-step workflows on a cron schedule or on demand, with enrichment, verification, deduplication, ICP scoring and CRM sync as steps, so a recurring "enrich everything added this week" motion lives there. On Pro at $229 a month you can script the same thing 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 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 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, 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 compare to doing it in Clay?
Here are the three tools that answer this question, each in the compact form, with prices read from the vendor's own page on September 1, 2026.
Cleanlist: 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 direct dial, with search and export costing nothing and unresolved rows costing nothing, starting at $79/month.
Clay: Best for building a custom enrichment pipeline column by column. It combines waterfall enrichment across a large provider marketplace with direct CRM syncing and a free plan to start on, from around $167/month on its published Starter tier (clay.com/pricing, fetched September 1, 2026).
Apollo: Best for teams that want a contact database, a sequencer and enrichment on one bill. It meters export credits whenever a contact leaves Apollo, which Apollo's 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 of Apollo costs you again. On Cleanlist, 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 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 People Search for the filter inventory.
Can I run CSV enrichment from the API or from Claude?
The API yes, a chat client no. Cleanlist REST API v2 exposes CSV import on a lead list and bulk enrichment behind a signed quote, and it is available on Pro at $229 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 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. Note the trial boundary: the 14-day full-access trial covers every feature except the public API and MCP.
What can Cleanlist not do with my CSV?
Knowing the gaps saves a wasted run. Cleanlist 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 does not send email, run sequences or dial numbers, so the enriched row is handed to the tool that does. And Cleanlist 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 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 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 charge for a row it cannot enrich?
No. Cleanlist 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 bulk enrichment guide).
How long does a 5,000-row CSV take to enrich?
Cleanlist 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 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 full-access trial, which comes with 250 credits, 3 seats and no card, and covers every feature except the public API and the MCP server. After the trial, the $0 Free plan gives 30 credits a month, 1 seat and CSV export, but not CSV upload. Upload unlocks on Starter at $79 a month with 1,500 credits and 2 seats. Pro at $229 adds REST API access and CRM sync with 5,000 credits and 5 seats. Scale at $599 adds the Playbook Builder for scheduled runs with 15,000 credits and 10 seats. Annual billing takes 25% off. Full tier detail is on the Cleanlist pricing page.
Run this on your own contacts
Put your own contacts through the multi-provider waterfall and export the result. 250 credits, 3 seats, 14 days. No card required. Bulk CSV upload lands on Starter at $79/mo, and CRM import and sync on Pro at $229/mo.
250 credits, 3 seats, 14 days. No card required.
