CSV Merge & Deduplicate avatar

CSV Merge & Deduplicate

Pricing

$20.00 / 1,000 completed csv merges

Go to Apify Store
CSV Merge & Deduplicate

CSV Merge & Deduplicate

Merge CSV exports, align columns by name and remove duplicate rows. Get a clean CSV plus a mismatch report. Auto-detects separators, supports aliases and escapes spreadsheet formulas. Up to 20 files per merge. No AI model or external website access.

Pricing

$20.00 / 1,000 completed csv merges

Rating

0.0

(0)

Developer

Daniel Michałek

Daniel Michałek

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Combine differently shaped CSV exports into one consistent CSV without manually rearranging columns. Useful for recurring exports from shops, CRMs, reporting tools and spreadsheets.

What this Actor does

  • Aligns columns by name, ignoring case, accents and punctuation.
  • Supports explicit aliases, such as Amount for Kwota or Betrag.
  • Detects comma, semicolon, tab and pipe delimiters separately for each file.
  • Optionally removes identical aligned rows, ignoring the generated source filename.
  • Adds a source filename column and reports missing columns, renamed headers and inconsistent rows.
  • Preserves quoted delimiters and multiline fields. Rejects unclosed quotes rather than silently returning damaged output.
  • Escapes potential spreadsheet formulas by default. Supports a UTF-8 BOM for Excel.

No language model, proxy, target website login or additional API key is required. Processing runs on Apify. Inputs and outputs are stored by Apify under your account's storage and retention settings; this is not an offline or zero-retention service.

Example input

{
"files": [
{"name": "january.csv", "content": "Name,Amount\nAlice,10\n"},
{"name": "february.csv", "content": "amount;name;City\n20;Bob;Berlin\n"}
],
"dropDuplicateRows": true,
"outputBom": true
}

Result, without the optional BOM shown:

Name,Amount,City,source_file
Alice,10,,january.csv
Bob,20,Berlin,february.csv

For explicit aliases, add "aliases": {"Amount": ["Kwota", "Betrag"]}. Set "sourceColumn": "" to omit the generated filename column.

Output and download

The default dataset contains one object for the whole completed merge, not one object per CSV row. This object contains mergedCsv, rowCount, columnCount, header, inputHash and report.

The default key-value store contains:

  • OUTPUT.csv: the merged UTF-8 CSV, ready to download.
  • REPORT: a JSON report with per-file details and warnings.

To download the actual merged file, use OUTPUT.csv in the run's key-value store. Exporting the dataset as CSV instead produces a one-record summary that embeds the merged text. If a download mirror cannot be saved, the complete mergedCsv remains available in the dataset.

Pricing model

The Actor is designed for the merge-completed pay-per-event price shown in the Pricing tab. One successful, non-empty merged result is one event, whether it combines one file or twenty. There is no per-input-row fee and the Actor does not emit a paid startup event. A header-only input emits no completed-merge event. A maximum-charge limit that accepts no event prevents delivery of an unpaid result. Actual billing depends on the active platform pricing configuration; verify the current Pricing tab before running.

After a platform restart, an existing matching result in the same dataset is reused without emitting another result event. Starting a separate new run is a new merge. Following an interrupted or failed paid storage operation, inspect the existing run before retrying; no claim of transactional exactly-once billing across every failure mode is made.

Limits and scope

Maximums per run: 20 files; 1 MiB of combined UTF-8 CSV text; 10,000 input data rows; 100 input columns in the combined schema; 100,000 projected aligned output cells, including the optional source column; 4 MiB output CSV. Additional structural and metadata limits protect memory. Oversized or malformed inputs are rejected, not silently truncated. Limits apply before deduplication.

This version accepts CSV text in JSON, not file paths, remote URLs, XLSX workbooks or archives. File names are labels only and must be unique, without directory paths. Supply Unicode text; legacy binary encodings must be decoded before calling this Actor.

Header matching is intentionally aggressive: for example, Invoice No and invoice_no are treated as the same column. Review the report if your source systems use similar names for different concepts. Deduplication compares whole rows; it is not a database join or a customer-record identity matcher. Empty and repeated header rows are skipped and documented in the report. Additional fields can become generated columns, while missing fields stay empty.

Formula escaping prepends an apostrophe to risky output values, including negative numeric-looking values. This favors safe spreadsheet opening over automatic numeric interpretation. Turn it off only for trusted data when your downstream importer requires numbers. A CSV file itself contains text rather than a guaranteed spreadsheet cell type.

Support

Use the Issues tab for a reproducible example containing synthetic or anonymized data. Do not post confidential exports, passwords, tokens or personal customer records in a public issue.