CSV Data Cleaner
Pricing
from $50.00 / 1,000 csv file cleaneds
CSV Data Cleaner
Upload a CSV file and get back a clean version: duplicate rows removed, whitespace trimmed, null-like values normalized, empty rows dropped. Includes a stats report of everything that was fixed.
Pricing
from $50.00 / 1,000 csv file cleaneds
Rating
0.0
(0)
Developer
Luqin Wang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Upload a messy CSV and get back a clean one — duplicates removed, whitespace trimmed,
null-like values (null, n/a, none, -, …) normalized to empty cells, and empty
rows dropped. You also get a STATS.json report showing exactly what changed.
Input
| Field | Description |
|---|---|
| CSV file to clean | Upload a .csv file from your computer |
| Or: CSV file URL | Public URL of a CSV file |
| Or: paste CSV text | Paste raw CSV content directly |
| Delimiter | , ; tab or ` |
| Remove duplicate rows | On by default |
| Trim whitespace | On by default |
| Normalize null-like values | On by default |
| Remove empty rows | On by default |
Only one source is needed; priority is uploaded file → URL → pasted text.
Output
- Dataset: one item per cleaned row, with a stable
recordId. Duplicate headers receive deterministic__2,__3, … suffixes and cells beyond the source header useextraColumn_1,extraColumn_2, … so no cell is lost. - Key-value store
CLEANED: the cleaned CSV file (text/csv) - Key-value store
STATS: JSON report, e.g.
{"totalInputRows": 1000,"chargedInputRows": 1000,"outputRows": 972,"duplicatesRemoved": 21,"nullsNormalized": 45,"emptyRowsRemoved": 7,"columns": 8,"sourceColumnNames": ["id", "name", "email", ...],"datasetFieldNames": ["id", "name", "email", ...],"delimiterUsed": ","}
Pricing (pay-per-event)
- $0.05 per CSV file cleaned
- $0.0001 per input row processed
Charges are journaled before paid work, and each intent links to a partitioned
source snapshot. If the normal post-charge journal update fails, an immutable
acceptance receipt retains the accepted count and snapshot link. If a charge is
only partly accepted, only its charged prefix is delivered and the raw suffix
is preserved in byte-bounded RECOVERY-* records. Recovery carries actual
fitted cleaned values as well as raw rows. Terminal dataset or key-value-store
failures also create a PRESERVATION-REPORT for record-ID reconciliation; a
partial preservation report lists every successful key and record ID rather
than claiming all-or-nothing success.
Runs admit at most 8 MiB of CSV input, 100,000 parsed rows, and 500,000 conservatively estimated CSV cells. Larger inputs fail before parser allocation, cleaning, or row billing instead of risking unbounded memory use.
Run via API
curl -H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"csvUrl": "https://example.com/messy.csv"}' \"https://api.apify.com/v2/acts/<username>~csv-data-cleaner/runs?waitForFinish=60"
Local development
mkdir -p storage/key_value_stores/defaultcp test/INPUT.json storage/key_value_stores/default/INPUT.jsonAPIFY_LOCAL_STORAGE_DIR=./storage python3 -m src.main# results: storage/datasets/default/ + storage/key_value_stores/default/CLEANED + STATS