{"uid":"cap_rd87cV298rM7Au1Xm4pgt","slug":"nero-labs-json-data-cleaner-160dd6fd","name":"Nero Labs JSON Data Cleaner","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/clean?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object"},"description":"The rows to clean. Each row is a JSON object; keys may differ between rows and values may be nested."},"flatten":{"type":"boolean","description":"Default true. Turn nested objects into flat columns. Arrays become one JSON-text cell."},"maxItems":{"type":"integer","minimum":0,"description":"Optional cap: read at most this many rows and return at most this many. 0 (default) means no cap."},"dedupKeys":{"type":"array","items":{"type":"string"},"description":"Fields that identify a duplicate, for example [\"Email\"]. Empty compares the whole row. Use the final column names: flattened (Details_founded) and renamed. Exact and case-sensitive. Rows where every key is empty count as duplicates of each other."},"dedupMode":{"enum":["none","exact","normalized","fuzzy"],"type":"string","description":"How duplicates are found. normalized (default) ignores case and whitespace; exact needs identical values; fuzzy also merges near-duplicates (up to 100 rows and 1000 characters of key text, so name a short field in dedupKeys); none keeps every row."},"stripHtml":{"type":"boolean","description":"Default false. Remove HTML tags and decode common entities in text."},"cleanFields":{"type":"boolean","description":"Default true. Normalize emails, phone numbers and URLs, detected by field name or value shape."},"coerceTypes":{"type":"boolean","description":"Default false. Turn \"42\" into 42 and \"true\" into true. Leading-zero values like \"007\" stay text."},"emptyToNull":{"type":"boolean","description":"Default true. Blank text becomes null."},"keepStrategy":{"enum":["most_complete","first","last"],"type":"string","description":"Which duplicate survives: most_complete (default, fewest empty fields), first or last."},"outputFormat":{"enum":["json","csv"],"type":"string","description":"json (default) returns rows; csv returns the same result as CSV text in \"csv\" instead."},"columnsToKeep":{"type":"array","items":{"type":"string"},"description":"Keep only these columns (flattened names). Takes priority over columnsToRemove."},"columnRenameMap":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"object","additionalProperties":{"type":"string"}}],"description":"Rename columns after keep/remove, as [\"oldName:newName\"] or {\"oldName\":\"newName\"}, for example {\"Details_founded\":\"founded\"}."},"columnsToRemove":{"type":"array","items":{"type":"string"},"description":"Drop these columns (flattened names). Ignored if columnsToKeep is set."},"dropEmptyFields":{"type":"boolean","description":"Default false. Remove null and empty fields from each row."},"expandArrayField":{"type":"string","description":"Optional. One top-level array field (for example \"offers\") to explode into one row per entry, repeating the other fields. Object entries become columns. The expanded total must stay within the row limit."},"flattenSeparator":{"type":"string","description":"Joins nested key paths when flattening. Default \"_\"."},"similarityThreshold":{"type":"number","maximum":0.99,"minimum":0.5,"description":"Fuzzy mode only. 0.5 to 0.99, default 0.9. Higher is stricter."}}},"responseSchema":{"type":"json","example":{"rows":[{"name":"Ana Silva","email":"ana@silva.co.uk","phone":"01174960012"}],"summary":{"columns":["name","email","phone"],"warnings":[],"dedupKeys":["email"],"fillRates":{"name":1,"email":1,"phone":1},"keepStrategy":"most_complete","outputFormat":"json","dedupModeUsed":"normalized","inputRowCount":2,"outputRowCount":1,"fieldsFlattened":true,"droppedByMaxItems":0,"duplicatesRemoved":1,"rowsAddedByExpansion":0},"_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_-TDed7AK6-4KIVn_bXRn8","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":"Cleans up to 150 messy JSON rows by removing duplicates, flattening nested objects, normalizing emails/phones/URLs, stripping HTML, coercing types, and dropping empty fields — returning cleaned rows plus a change report.","exampleAgentPrompt":"Clean these 80 contact records for me — flatten any nested fields, deduplicate by email using normalized matching keeping the most complete row, normalize the emails and phone numbers, strip any HTML, and give me the results as JSON.","exampleUseCases":[{"title":"Deduplicating a scraped leads list","prompt":"I scraped 120 business contacts and there are a lot of duplicates — can you clean them up, deduplicate by the Email field using fuzzy matching, flatten any nested objects, and return clean JSON rows with a report of what was removed?"},{"title":"Normalizing CRM export before import","prompt":"I have a CRM export of 95 rows with messy phone numbers, inconsistent email formatting, and some blank fields — clean it up, normalize emails and phones, drop empty fields, and coerce any text numbers to real numbers so I can import it cleanly."},{"title":"Stripping HTML from form submissions","prompt":"These 50 form submission rows have HTML tags mixed into the text fields and nested JSON inside some columns — strip the HTML, flatten the nested fields, remove duplicates by email, and give me the cleaned rows as CSV."}],"resultDescription":"Returns a JSON object with a `rows` array of cleaned records and a `summary` object containing: input and output row counts, duplicates removed, columns present, fill rates per field, dedup mode used, flatten status, warnings, and the keep strategy applied. Optionally returns results as CSV text.","failureModes":["More than 150 rows submitted — endpoint caps at 150 rows","Invalid JSON in rows array causes parsing error","Fuzzy dedup with very long key text or more than 100 rows may be silently capped","dedupKeys referencing non-existent columns silently no-ops deduplication","Payment not included or insufficient — x402 payment required ($0.002 USDC minimum)","maxItems set to 0 when a cap was intended — 0 means no cap"],"whenToPreferThis":"Choose this endpoint when you need a single-step, multi-operation data cleaning pipeline on up to 150 JSON rows — especially when you need deduplication (exact, normalized, or fuzzy), field normalization (emails, phones, URLs), nested JSON flattening, HTML stripping, and type coercion all in one call. Prefer this over building custom cleaning logic when working with contact lists, scraped data, or CRM exports that need to be cleaned before storage or analysis. The same engine powers nerolabs/dataset-cleaner-exporter, making it reliable for production ETL use cases.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-22T12:40:48.204Z","isFirstParty":false,"canonicalSlug":"nero-labs-json-data-cleaner-160dd6fd"}