Product Catalog Diff by SKU | Revenue Pilot avatar

Product Catalog Diff by SKU | Revenue Pilot

Pricing

$50.00 / 1,000 comparison completeds

Go to Apify Store
Product Catalog Diff by SKU | Revenue Pilot

Product Catalog Diff by SKU | Revenue Pilot

For catalog-import reviewers: compare two complete JSON product catalogs by SKU. Get added, removed and field-level changes, a summary and detailed JSON. USD0.05 per completed comparison, including no changes. No CSV, Excel or URL input. Run without individual approval.

Pricing

$50.00 / 1,000 comparison completeds

Rating

0.0

(0)

Developer

Revenue Pilot

Revenue Pilot

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Features

Limited permissions

Share

Product Snapshot Diff

Compare an earlier and a later product catalog. Get added products, removed products and field-level changes in one JSON result. Use it after collecting two snapshots, or before reviewing a catalog import.

Current availability

This version supports general use without individual approval. Processing can be paused by the operator; a paused run does not start a new comparison or submit a new comparison charge after the pause is detected. Requests already sent before detection cannot be guaranteed to be cancelled. Review the current availability and Pricing tab before starting. A completed comparison can incur a charge even when it finds no changes.

Each row needs a unique string identifier, such as sku. Input order does not affect the comparison. A missing field and a field containing null are different; boolean and numeric values are also different. Nested objects are compared as field values. Arrays inside a field preserve their order.

Input

Supply before, after, key, before_complete, and after_complete. Only mark a snapshot complete if the upstream collection has finished. The Actor cannot independently verify that declaration.

Limits: 10,000 rows per snapshot, 5 MiB input JSON, and 16 MiB result JSON. Identifiers must be strings; use "00123" when leading zeros matter. URLs, CSV files and Excel files are not accepted in this version.

Example 1: price change, added product, removed product

{
"key": "sku",
"before_complete": true,
"after_complete": true,
"before": [{"sku":"A","price":100},{"sku":"B","price":200}],
"after": [{"sku":"A","price":110},{"sku":"C","price":300}]
}

The result has status: "completed", counts of one added, one removed and one changed product, and a changes array containing the affected fields.

Example 2: identical snapshots

{
"before_complete": true,
"after_complete": true,
"before": [{"sku":"A","price":100}],
"after": [{"sku":"A","price":100}]
}

The result is completed with an empty changes array. A completed comparison is a billable event even when it finds no changes.

Example 3: an unexpected empty snapshot

{
"before_complete": true,
"after_complete": true,
"before": [{"sku":"A","price":100}],
"after": []
}

The result is held with empty_after_requires_explicit_intent, with no comparison event charged. If the empty catalog is intentional, set allow_empty_after: true to receive the removal list.

Retrieve the result

Open the run's default key-value store and read the OUTPUT record as JSON. The API equivalent is GET /v2/key-value-stores/{storeId}/records/OUTPUT. Use the authenticated access method shown by Apify for your run.

For a completed comparison, the run's dataset also contains one summary row with the added, removed and changed counts. That row is not the full list of changes; use OUTPUT for the field-level details. Dataset storage or later exports can incur platform usage charges under your Apify plan.

completed means a valid comparison was produced. held means the completeness or empty-input declaration needs attention. rejected means an input limit or validation rule was violated. Check reason for held or rejected results.

Charging and retries

One completed comparison costs USD 0.05 under the existing comparison-completed event. Confirm the active Pricing tab before running. Set the run's maximum charge to at least that amount. Held and rejected comparisons do not trigger the comparison event. There is no per-row comparison event.

The result is saved before the comparison event is submitted. Restarts of the same run do not deliberately resubmit an uncertain charge. Starting a new run is a new comparison and can incur a separate charge; retrieve the existing run before submitting again. If an event's status is uncertain, the system leaves it for reconciliation instead of charging again.

Data handling

Input and output are processed in the run and stored in Apify's run storage. This Actor does not send product data to a language model or fetch product pages. It does not change your catalog, stock, or prices. Use only data you are authorized to process. Avoid personal information and secrets in product rows.

Support

Use this Actor's Issues tab for reproducible defects. Include the error reason and a minimal example with invented product values. Do not post credentials, private catalog records, or private run links in a public issue.