All notable changes to this Actor and to its input schema are listed here. The input schema is versioned
(INPUT_SCHEMA_VERSION, shown in the input form title and written to every RUN_SUMMARY.json) with semantic versioning:
a MAJOR bump means an input field was removed/renamed or its meaning changed; MINOR adds optional fields; PATCH changes
only texts/limits. The summary format has its own summarySchemaVersion.
- Fixed: the input schema was rejected by Apify's validator (one property had an empty description), which made the Console show
"No input schema found". All
.actor/*.json files are now validated against Apify's official JSON schemas in the test suite.
- Added: Actor output schema (
.actor/output_schema.json, required for the Store): the run's Output tab lists cleaned rows,
clean files, rejected rows, change log, column profile and run summary. Key-value store collections reorganized.
- Added: Data file upload field (
fileUrl now uses the Console's file upload; Apify key-value store references are read with the run's
own credentials) and an optional Settings file (JSON) (settingsFileUrl) so data and settings can be two uploaded files.
- Added:
PUBLISHING.md (deploy, pricing, publish), scripts/clean_local.py (run locally without Apify).
- Fixed: memory guard now works on Windows (no
resource module).
- Inputs: pasted text, file URL, Apify dataset, key-value store record; CSV/TSV, XLSX, JSON/JSON Lines.
- Cleaning: trim, collapse spaces, encoding/mojibake repair, smart quotes, invisible characters, header normalization,
blank/null normalization, find/replace (literal/regex), value casing, include/exclude columns, required columns.
- Typed conversion: currency/percent stripping into true numbers, date normalization (ISO/US/EU), email and phone format flags.
- Duplicates: exact, key-based and fuzzy detection; first/last/most-complete precedence; duplicates quarantined with an audit trail.
- Audit: before/after counts, row-level change log, column profiling report, rejected-row quarantine,
RUN_SUMMARY.json
(with disclaimer), preserve-originals option.
- Outputs: dataset (overview view), CSV, JSON, multi-sheet XLSX (Clean, Rejected, Summary, Profile).
- Saved cleaning profiles (by name or inline JSON).
- Pay-per-event charging (
cleaned-record) with clean stop at the user's max charge limit; dry run is never charged.
- Hard limits: rows, input size, output size, timeout, memory guard; chunked processing.
- Golden-file and edge-case tests.
- Excel serial-number dates in CSV, two-digit years and non-English month names are not parsed.
.xls (legacy) input is not supported.