CSV Contact Cleaner: Dedupe Emails, Reject Report, Excel-Safe avatar

CSV Contact Cleaner: Dedupe Emails, Reject Report, Excel-Safe

Pricing

from $500.00 / 1,000 1,000 input rows processeds

Go to Apify Store
CSV Contact Cleaner: Dedupe Emails, Reject Report, Excel-Safe

CSV Contact Cleaner: Dedupe Emails, Reject Report, Excel-Safe

Clean contact CSVs: remove duplicate and invalid emails, get a reason for every rejected row, block Excel formula injection. CSV URL, Google Sheets or text.

Pricing

from $500.00 / 1,000 1,000 input rows processeds

Rating

0.0

(0)

Developer

Jo NuMe

Jo NuMe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Give it a contact list (CSV URL, public Google Sheets link or pasted text). Get back a clean list you can import into your CRM or emailing tool, plus a file explaining every row that was removed.

What it does

  • Removes duplicate emails (case and spaces ignored, first occurrence kept).
  • Rejects invalid emails and broken rows (wrong number of columns) with a reason per row: duplicate_email, invalid_email, malformed_row.
  • Neutralises spreadsheet formula injection (CSV injection): cells starting with =, +, -, @ get a leading apostrophe, so opening the file in Excel or Google Sheets never runs a formula. Real phone numbers like +33 6 12 34 56 78 are left untouched.
  • Keeps all your columns (city, company, tags...) and accounts for every input row: kept + duplicates + invalid = input.
  • Detects comma / semicolon / tab separators and UTF-8 or Windows-1252 encoding (French Excel exports).
  • Recognises email, e-mail, mail, courriel headers, or any column name you set.
  • Gives SHA-256 fingerprints of the input and outputs, so you can prove which file was processed.

It does not contact mail servers (no SMTP/MX check) and does not store your data after the run beyond Apify's normal storage retention.

Input

FieldDescription
csvUrlPublic CSV URL or Google Sheets link (max 20 MB)
csvTextOr paste the CSV directly
emailColumnOptional, if your email column has another name
requireFullFileOptional. Stop (nothing charged for rows) instead of cleaning only the first rows when your max cost per run is too low for the whole file

Output

  • Dataset: the cleaned rows (export as CSV, Excel, JSON from the Output tab).
  • Key-value store:
    • CLEANED_CSV: cleaned file, same separator as the input;
    • REJECTS_CSV: rejected rows with source row number and reason;
    • OUTPUT: JSON report (counts, reasons, detected separator/encoding, SHA-256).

Example report:

{"summary": {"input_rows": 5, "kept_rows": 2, "duplicate_rows": 1, "invalid_rows": 2, "escaped_cells": 1},
"reject_reasons": {"duplicate_email": 1, "invalid_email": 1, "malformed_row": 1}}

Pricing

Pay per event: $0.50 per started block of 1,000 input rows (a 250-row file costs $0.50, a 10,000-row file $5.00), plus Apify's tiny run-start fee. A file with a header but no data rows costs only the run start.

The Actor checks your maximum cost per run (Run options) before charging. If it is too low for the whole file, the first rows that fit are cleaned and only those are charged; the status message and the unprocessed_rows field of OUTPUT say how many rows were left out (duplicates are then checked within the cleaned rows). Tick requireFullFile to stop instead: nothing is charged for rows and the message tells you how many blocks the file needs.


En français

Nettoie une liste de contacts CSV : supprime les emails en double, rejette les emails invalides et les lignes cassées en expliquant chaque rejet, neutralise les formules dangereuses pour Excel (injection CSV) sans abîmer les numéros +33, conserve toutes vos colonnes et fournit des empreintes SHA-256. Séparateur , ; ou tabulation, encodage UTF-8 ou Windows-1252 détectés automatiquement. Tarif : 0,50 $ par tranche entamée de 1 000 lignes. Si votre coût maximum par exécution ne couvre pas tout le fichier, les premières lignes qui tiennent dans ce plafond sont nettoyées et seules celles-ci sont facturées ; cochez requireFullFile pour arrêter sans rien facturer.