Dataset Diff & Change Detector avatar

Dataset Diff & Change Detector

Pricing

from $5.00 / 1,000 difference detecteds

Go to Apify Store
Dataset Diff & Change Detector

Dataset Diff & Change Detector

Returns what was added, removed or changed between two Apify datasets or JSON arrays, matched by key, field by field, with an optional CSV or Excel diff report. Inputs: old and new dataset IDs or inline data, key fields. Agent-ready: pay per event (x402 and MCP), per difference found and file.

Pricing

from $5.00 / 1,000 difference detecteds

Rating

0.0

(0)

Developer

Adam Pearce

Adam Pearce

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Compare two datasets and get exactly what changed, no manual spreadsheet comparison, no writing your own diff script. Point it at two Apify datasets (or paste in two JSON arrays), give it a key field like id, sku, or email, and it tells you precisely which rows were added, removed, or changed, down to which fields on each row actually moved. Works with the output of any scraper, any monitor Actor, or your own exported data.

Why use Dataset Diff & Change Detector?

If you scrape or export the same source more than once, you already have this problem: two big JSON files, and no fast way to answer "what actually changed since last time?" without eyeballing thousands of rows.

  • Re-scraping the same source on a schedule? Feed it yesterday's dataset and today's, and skip building your own comparison logic.
  • Reconciling two exports from different systems? Match them on a shared key (email, SKU, ID) and see exactly where they diverge.
  • Auditing a data migration? Confirm nothing silently dropped or changed during a transfer.
  • QA-checking a scraper you just changed? Diff its old output against its new output to see the real impact of your change, not just "does it run."

No scraping involved at all, it only processes data you already have, so there's nothing to break when a website changes and nothing to worry about on data-source terms.

How to use it

  1. Pick your two snapshots: either an existing Apify dataset for Old dataset and New dataset, or paste JSON arrays directly into Old data (inline) / New data (inline).
  2. Set Key field(s) to whatever uniquely identifies a row (e.g. sku, id, email). This is what lets the Actor tell "this row changed" apart from "this row was removed and a different one was added".
  3. Optionally list fields to ignore (like a scrapedAt timestamp that always differs) under Fields to ignore, so it doesn't flag every row as changed for no real reason.
  4. Run it. Check the added / removed / changed rows in the dataset, or turn on a CSV/Excel export for a shareable report.

Input

  • Old dataset / New dataset — pick existing Apify datasets via the resource picker (limited-permissions safe, it can only read the dataset you point at).
  • Old data / New data (inline) — paste a JSON array directly instead, for one-off comparisons.
  • Key field(s) — the field(s) that identify a row across both snapshots. Leave empty to match by full row content instead (still works, but then a changed row shows as a remove+add pair, not a single "changed" row).
  • Fields to compare — optionally restrict comparison to specific fields only.
  • Fields to ignore — field names to exclude from comparison (timestamps, run IDs, anything that always differs).
  • Include unchanged rows in the output — off by default, since most people only want the deltas.
  • Export diff report as file — optionally generate a real downloadable CSV and/or Excel file on top of the dataset.

Output

One row per difference, for example:

{
"status": "changed",
"key": { "sku": "A100" },
"oldValues": { "sku": "A100", "title": "Blue Widget", "price": 19.99, "stock": 42 },
"newValues": { "sku": "A100", "title": "Blue Widget", "price": 17.99, "stock": 30 },
"changedFields": ["price", "stock"]
}

status is one of added, removed, changed, or (if you turned that option on) unchanged. You can download the dataset in various formats such as JSON, CSV, or Excel directly from the Output tab, or turn on the built-in export for a ready-to-open diff report file.

Pricing

Pay-per-event, anchored the same way as every low-maintenance data tool in this line: you're charged $0.005 per real difference found (an added, removed, or changed row), $0.0005 per unchanged row confirmed (only if you turn that option on), and $0.01 per file export. Comparing two 1,000-row datasets where 50 rows actually changed costs about $0.25, not $5, since you're only billed for the parts of the answer that are actually useful. There's no separate platform-usage charge; it's included.

Tips

  • Always set Key field(s) if your data has any kind of stable identifier. Without one, the Actor still works, but "changed" rows show up as a remove+add pair instead, which is technically correct but less useful for spotting exactly what moved.
  • Add any always-changing field (timestamps, scrape IDs, "last checked" dates) to Fields to ignore, otherwise every single row will look "changed" every time.
  • Duplicate key values within one snapshot are handled gracefully (the last-seen row wins) and flagged in the run's warnings, so you'll know if your chosen key field isn't actually unique.

FAQ

Does this work with any Apify dataset? Yes, point "Old dataset" and "New dataset" at any two dataset IDs from your own account, including the output of another Actor's run.

What if I don't have two dataset IDs, just two JSON files? Use the inline "Old data" / "New data" fields instead and paste the arrays directly.

Is my data safe? This Actor never sends your data anywhere outside your own Apify account's storage. It doesn't scrape, doesn't call any external API, and doesn't retain anything beyond the run's own output.

Found a bug or want a feature? Use the Issues tab, replies come from a real person, usually within hours.