CSV Deduper Normalizer avatar

CSV Deduper Normalizer

Pricing

from $1.95 / 1,000 item processeds

Go to Apify Store
CSV Deduper Normalizer

CSV Deduper Normalizer

Deduplicate and normalize CSV-style rows. Clean whitespace, casing, domains, URLs, and emails, then output kept and duplicate rows plus clean CSV/JSON files.

Pricing

from $1.95 / 1,000 item processeds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Normalize CSV-style rows, detect duplicate keys and invalid values, and export clean JSON and CSV files for downstream imports.

What It Cleans

  • Leading, trailing, and repeated whitespace.
  • Domain names, including protocol, path, query, and www removal.
  • URLs, including hostname casing, fragments, trailing slashes, and common tracking parameters.
  • Email casing and basic email syntax.
  • Configured lowercase and title-case fields.
  • Duplicate rows based on one or more normalized key fields.
  • Missing key fields and duplicate CSV header names.

The CSV parser handles quoted delimiters, escaped quotes, embedded newlines, CRLF input, and UTF-8 byte-order marks. Structured row objects are also accepted.

Input

Provide one source: csvText, rows, or a public csvUrl with fetchUrls enabled.

FieldPurpose
csvTextCSV content with a header row.
csvUrlPublic CSV URL fetched only when fetchUrls is true and csvText is empty.
rowsStructured row objects used instead of CSV text.
delimiterSingle-character delimiter; comma by default.
keyFieldsNormalized fields combined into the duplicate key.
domainFieldsFields normalized as domains.
urlFieldsFields normalized as URLs.
emailFieldsFields lowercased and checked for basic email syntax.
lowercaseFieldsAdditional fields converted to lowercase.
titleCaseFieldsFields converted to title case.
trimWhitespace / collapseWhitespaceString whitespace controls.
includeDuplicatesInclude duplicate rows in the dataset; clean files always contain kept rows only.
maxItemsRow cap, from 1 through 50,000.
maxCsvBytesRetrieved CSV size cap, up to 5,000,000 bytes.
includeReportWrite result, summary, clean-file, and Markdown report records.
{
"csvText": "company,domain,url,email\n ACME INC ,https://www.Example.com/path,https://Example.com/pricing/?utm_source=ad,Sales@Example.com\nAcme Inc,example.com,example.com/pricing,sales@example.com",
"keyFields": ["domain", "email"],
"domainFields": ["domain"],
"urlFields": ["url"],
"emailFields": ["email"],
"titleCaseFields": ["company"],
"includeDuplicates": true,
"maxItems": 100,
"includeReport": true
}

Dataset Rows

Each row describes one kept, duplicate, invalid, or diagnostic result. Important fields include:

  • rowIndex, status, action, dedupeKey, and duplicateOfRowIndex.
  • originalRow, normalizedRow, and changedFields.
  • issueCount and issues, with codes such as duplicate-row, missing-key-field, and invalid-email.
  • sourceType, sourceId, processedAt, and recommendation.
  • diagnosticCode and sourceError for blocked retrieval or missing data rows.

Row statuses are clean, changed, duplicate, and invalid. A duplicate points to the zero-based index of the first matching normalized key.

Stored Artifacts

  • Dataset: emitted row results after the includeDuplicates filter.
  • CSV_DEDUPER_NORMALIZER_RESULTS.json: the same emitted result rows.
  • CSV_DEDUPER_NORMALIZER_SUMMARY.json: full processed, kept, duplicate, changed, invalid, issue, diagnostic, and charge-limit counts.
  • CSV_DEDUPER_NORMALIZER_CLEAN.csv: normalized kept rows.
  • CSV_DEDUPER_NORMALIZER_CLEAN.json: normalized kept rows as JSON.
  • CSV_DEDUPER_NORMALIZER_REPORT.md: readable QA report.

Usage Charges

The actor uses pay per event. Platform usage is included in these event prices.

EventPriceWhen charged
actor-start$0.00500Once before paid work starts.
row-checked$0.00390Before each non-diagnostic dataset row is emitted.
issue-detected$0.00372Once per issue on a row, before that row is emitted.
qa-report-generated$0.05000Before result, summary, clean-file, and report records are written.

If Apify reports that a charge was limited or only partly accepted, the actor stops before the corresponding paid output. Set includeReport to false when KVS artifacts are not needed, and set includeDuplicates to false when duplicate dataset rows are not needed.

Public Tasks

Five capped task inputs cover domain and email deduplication, URL cleanup, company-name casing, missing-key QA, and clean-file export. Each task supplies concrete data and bounded row counts.

Retrieval Safety

  • Only public http and https CSV URLs are accepted.
  • Credentials in URLs and redirects are rejected.
  • Loopback, link-local, and private network destinations are blocked unless allowPrivateUrls is explicitly enabled for controlled testing.
  • Response length, retained CSV bytes, row count, and request duration are bounded.
  • Fetch failures and empty inputs produce explicit diagnostic rows rather than fabricated data.

Limitations

  • Deduplication is exact after configured normalization; fuzzy entity matching is not performed.
  • Email checks validate syntax only and do not prove mailbox ownership or deliverability.
  • Domain and URL normalization does not verify that a host exists.
  • Inputs larger than the configured byte or row cap must be split by the caller.