{"uid":"cap_ydUUV-r0Sa1rpW8lbqRCy","slug":"nero-labs-dataset-diff-detector-c770824a","name":"Nero Labs Dataset Diff Detector","description":"Pay-per-call tools for AI agents, 31 in all: read web pages and RSS feeds, OCR, PDF text, transcription; email, phone and domain checks; UK, Irish and Polish company lookups and UK risk reports; website contacts, tech stack and SEO audits; PageSpeed; AI review, job post and row enrichment; data cleaning, joins, dedupe and diffs; US and EU compliance rules. No account or API key: pay each call in USDC on Base over x402.","url":"https://x402-agent-tools.nerolabs.workers.dev/data/diff?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"newRows":{"type":"array","items":{"type":"object"},"description":"The after snapshot: a JSON array of row objects, the same kind of rows as oldRows. At least one row."},"oldRows":{"type":"array","items":{"type":"object"},"description":"The before snapshot: a JSON array of row objects. At least one row. Keys may differ between rows."},"keyFields":{"type":"array","items":{"type":"string"},"description":"Field name(s) that uniquely identify a row on both sides, for example [\"sku\"] or [\"country\",\"sku\"]. Strongly recommended: without it a changed row is reported as one removed row plus one added row."},"ignoreFields":{"type":"array","items":{"type":"string"},"description":"Optional. Fields never compared, for example [\"scrapedAt\",\"lastChecked\"], so a timestamp alone does not mark a row changed."},"compareFields":{"type":"array","items":{"type":"string"},"description":"Optional. Only these fields decide whether a matched row changed. Default: every field on either row."},"includeUnchanged":{"type":"boolean","description":"Optional, default false. Set true to also return matched rows with no difference (status \"unchanged\"). They are always counted in the summary."}}},"responseSchema":{"type":"json","example":{"rows":[{"key":{"sku":"B2"},"status":"removed","oldValues":{"sku":"B2","price":20}},{"key":{"sku":"A1"},"status":"changed","newValues":{"sku":"A1","price":12},"oldValues":{"sku":"A1","price":10},"changedFields":["price"]},{"key":{"sku":"C3"},"status":"added","newValues":{"sku":"C3","price":5}}],"summary":{"counts":{"added":1,"changed":1,"removed":1,"unchanged":0},"warnings":[],"keyFieldsUsed":["sku"],"newRecordCount":2,"oldRecordCount":2,"differenceCount":3,"returnedRowCount":3,"duplicateRowsSkipped":{"new":0,"old":0},"rowsMissingKeyFields":{"new":0,"old":0},"unchangedRowsIncluded":false},"_example_note":"Real output, trimmed: long lists cut to their first items and long text shortened."}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_dKHHQFJGDCyGN8T3nTAgC","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Compares two snapshots of JSON row arrays by key fields and returns which rows were added, removed, or changed, with field-level diff details.","exampleAgentPrompt":"Compare these two product catalog snapshots for me — use 'sku' as the key field, ignore the 'scrapedAt' timestamp column, and tell me which products were added, removed, or had their price changed between the two lists.","exampleUseCases":[{"title":"Price change monitoring between scrapes","prompt":"I scraped a competitor's product page yesterday and again today. Here are both JSON arrays — key them by 'product_id', ignore the 'lastSeen' field, and tell me which products had a price change, which are new, and which were removed."},{"title":"New lead detection in CRM exports","prompt":"I have last week's CRM export and this week's export as JSON arrays. Key them by 'email', and show me only the newly added contacts and any records where the 'status' or 'company' field changed."},{"title":"Inventory deletion audit","prompt":"Here are two snapshots of our warehouse inventory JSON — before and after the weekend. Key rows by 'item_code' and tell me which items were completely removed from inventory and which had quantity changes."}],"resultDescription":"A JSON object with a 'rows' array where each entry has a 'key' object, a 'status' of 'added', 'removed', or 'changed', 'oldValues' and/or 'newValues' objects, and a 'changedFields' array for changed rows. Also includes a 'summary' with counts of added/changed/removed/unchanged rows, key fields used, record counts, duplicate and missing-key warnings, and whether unchanged rows were included.","failureModes":["More than 500 rows on either side — request rejected","No rows provided in oldRows or newRows — validation error","keyFields specified but not present in any rows — rows counted as missing key fields and skipped","Malformed JSON input — parse error","Payment below $0.002 minimum — payment rejected"],"whenToPreferThis":"Use this endpoint when you have two JSON snapshots of the same dataset and need a structured, field-level diff — especially for price monitoring, lead tracking, inventory audits, or any scraping workflow where you need to detect adds, deletes, and changes programmatically. It is preferable over generic diff tools because it understands row identity via composite key fields, supports ignoring noisy fields like timestamps, and returns machine-readable summaries with per-field change details up to 500 rows per side.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-22T12:41:36.991Z","isFirstParty":false,"canonicalSlug":"nero-labs-dataset-diff-detector-c770824a"}