Bulk list verification guide
Upload a CSV, XLSX or TXT file of up to 1,000,000 rows in the dashboard, see what it will cost, follow the progress and download the results. Files and results are deleted automatically 30 days after upload (a list that finishes in its last day keeps its results for 7 days after it finishes).
1. Prepare the file
- CSV: any columns; one of them holds the addresses. A header row is optional.
- XLSX: the dashboard converts the sheet you pick to CSV in your browser before uploading it.
- TXT: one address per line.
- Up to 1,000,000 rows, 512 columns and 1 GB per file. A single row may not exceed 64 KB.
You do not need to clean the file first: duplicates are removed for you and malformed addresses are answered for free.
2. Upload and pick the column
Open Bulk lists in the dashboard and drop the file (or click to choose it). We show the first rows and detect the column with the addresses; change it if we guessed wrong. The file is read with the separator the preview shows (comma, semicolon, tab or |).
3. Check the cost and start
After a short analysis you see the number of rows, unique addresses, duplicates and malformed addresses, and the number of credits the job needs: one per unique address that still needs a check. Start the job when you are ready. If your balance is too low, buy a pack: the job waits and starts once the credits are there.
4. Follow the progress
The job page shows how many addresses are done and the counts per status as they come in. Large lists take a while; you can close the page and come back. Every unique address is checked once, so a job finishes as soon as the last check returns; results that end unknown are free. You can also get an email or a webhook when the job ends: every endpoint subscribed to bulk.completed or bulk.failed is notified.
5. Download the results
When the job is complete, download the results as CSV or XLSX:
- All rows with your original columns plus ours, or only some statuses (for example deliverable and risky).
- Original columns or email only.
- Formula protection (on by default) stops spreadsheet apps from running cells of your file that start with
=,+,-or@, also where a comma, semicolon, tab or line break inside a cell would start a new cell in a spreadsheet set to another list separator.
Our columns follow yours in every row. A row with fewer cells than the first row of the file gets empty cells, so our columns always sit under their headers; a row with more cells keeps them all.
Our columns:
| Column | Meaning |
|---|---|
ev_status | Status: deliverable, undeliverable, risky or unknown. |
ev_reason | Reason for the status. |
ev_action | Recommended action. |
ev_free_email | true when the domain is a free consumer mailbox service. |
ev_role_account | true for team or function addresses. |
ev_disposable | true for throwaway inbox services. |
ev_catch_all_domain | true when the domain accepts mail for any address. |
ev_did_you_mean | Suggested correction for a likely typo. |
ev_mx_found | true when the domain publishes mail records. |
ev_mx_record | Preferred mail server of the domain. |
ev_smtp_provider | Mail provider of the domain (our list; other when unnamed). |
ev_domain_age_days | Domain age in days, when known. |
What each status and reason means: statuses and reasons.
Cost
You pay one credit per unique address with a deliverable, undeliverable or risky result. Duplicates, malformed addresses, test addresses and unknown results are free: credits held for them are returned when the job ends. Cancelling a job returns the credits for work not yet done. A file that cannot be read fails for free; if a job fails after its addresses were checked, those checks are charged like a cancelled job.
Limits and storage
| Dashboard | API | |
|---|---|---|
| Formats | CSV, XLSX, TXT | CSV, plain text, JSON list |
| Largest file | 1 GB | 100 MB, or 100,000 addresses (4 MB) as JSON |
| Rows per file | 1,000,000 | 1,000,000 |
| Uploads in progress at once | 3 | – |
| Stored files (before your first purchase) | 2 GB, 2 jobs waiting to start | same |
| Stored files (after a purchase) | 20 GB | same |
| Kept for | 30 days after upload | 30 days after upload |
A list that fails or is cancelled deletes its file at once, and the file stops counting against your storage. You can also delete the upload of a failed, cancelled or expired list yourself.
To automate lists, use the bulk jobs API.