CSV Version Diff — Added, Removed and Changed Records
Pricing
from $50.00 / 1,000 completed csv comparison reports
CSV Version Diff — Added, Removed and Changed Records
Compare two CSV snapshots by unique composite keys. Detect added and removed records, changed fields and schema changes. Preserve leading-zero identifiers and exact text values. Deterministic JSON for agents and automation.
Pricing
from $50.00 / 1,000 completed csv comparison reports
Rating
0.0
(0)
Developer
Miguel Stuardo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
CSV Version Diff
Compare two CSV snapshots using unique keys and receive added records, removed records, and before/after values for changed fields. Useful for inventory exports, product catalog snapshots, and automation checks. This compares text data; it does not reconcile payments or infer transaction identity.
Run locally
Python 3.11+; the local CLI uses only the standard library.
python compare.py < example_input.json > result.jsonpython -m unittest -v
Successful runs write one JSON object to stdout and exit 0. Invalid inputs write a generic JSON error and exit 2. Run from this directory. No network service, credentials or payment setup is needed locally.
Input
leftCsv is the earlier snapshot, rightCsv the later one, keys a nonempty list of exact header names. delimiter is comma by default; semicolon, tab and pipe are supported. Supply CSV text, not URLs or paths. Both files use the same delimiter. Column names must be nonempty and unique; key values must be nonempty and unique within each snapshot. A UTF-8 BOM is accepted at the start. Blank physical lines are skipped.
All values, including IDs such as 001, remain strings. Whitespace, capitalization, and number formatting are significant. Headers and values are not trimmed or normalized. A key 001 is different from 1. Composite keys follow the order of keys.
Output
added contains records only in the right snapshot; removed contains records only in the left. changed includes each shared key with changes to shared non-key columns. Added/removed columns appear in schemaChanges; schema-only differences do not count as changed records. unchangedCommonFields counts shared records without changes to the compared shared fields, including when there are no shared non-key fields. Ordering is deterministic lexicographic string-key order, not numeric order. CSV source row order is not compared.
Limits and exclusions
- Maximum serialized JSON input: 1,000,000 UTF-8 bytes.
- At most 10,000 data records and 200 columns per file.
- Maximum serialized report: 8,000,000 UTF-8 bytes.
- Duplicate/empty keys, inconsistent row widths, duplicate/empty headers and malformed quoted CSV are rejected.
- No fuzzy matching, Excel/PDF parsing, type/date inference, formulas, URL fetching, or external system writes.
The CLI processes input in memory and does not save it itself. Shell redirection saves the output only where the caller requests. The optional Apify adapter stores inputs, output dataset and platform metadata under Apify's policies; it does not provide zero retention. Avoid uploading data you are not authorized to process. The application does not log CSV contents.
Hosted pricing and operation
One completed report is one comparison-report event, independent of changed row count. Check the Pricing tab for the current configured price and automatic start event charge. Invalid input is rejected before requesting the custom report event. No custom per-row event is requested. Platform start or usage charges can still apply.
The Actor requires positive pay-per-event pricing and rejects a separate default dataset item charge. It checks the available event budget before writing output. If a restarted run already contains a report, no second report event is requested. Dataset storage and charging are not atomic: an interruption between writing and charging may leave an unbilled report. Review run billing before retrying a failed delivery.
The hosted version stores inputs, reports and metadata on Apify. Manage access and retention through the platform. It does not fetch external URLs, execute formulas or call a language model. Local tests do not establish cloud deployment, sales, buyer demand or revenue.