Nero Labs JSON Data Cleaner is a paid API for AI agents from x402-agent-tools.nerolabs.workers.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-22).
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.
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.
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.
POSThttps://x402-agent-tools.nerolabs.workers.dev/data/clean?utm_source=zero.xyzChoose 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.
| Field | Type | Description |
|---|---|---|
| rows | array | The rows to clean. Each row is a JSON object; keys may differ between rows and values may be nested. |
| flatten | boolean | Default true. Turn nested objects into flat columns. Arrays become one JSON-text cell. |
| maxItems | integer | Optional cap: read at most this many rows and return at most this many. 0 (default) means no cap. |
| dedupKeys | array | 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 | string | 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 | boolean | Default false. Remove HTML tags and decode common entities in text. |
| cleanFields | boolean | Default true. Normalize emails, phone numbers and URLs, detected by field name or value shape. |
| coerceTypes | boolean | Default false. Turn "42" into 42 and "true" into true. Leading-zero values like "007" stay text. |
| emptyToNull | boolean | Default true. Blank text becomes null. |
| keepStrategy | string | Which duplicate survives: most_complete (default, fewest empty fields), first or last. |
| outputFormat | string | json (default) returns rows; csv returns the same result as CSV text in "csv" instead. |
| columnsToKeep | array | Keep only these columns (flattened names). Takes priority over columnsToRemove. |
| columnRenameMap | — | Rename columns after keep/remove, as ["oldName:newName"] or {"oldName":"newName"}, for example {"Details_founded":"founded"}. |
| columnsToRemove | array | Drop these columns (flattened names). Ignored if columnsToKeep is set. |
| dropEmptyFields | boolean | Default false. Remove null and empty fields from each row. |
| expandArrayField | string | 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 | string | Joins nested key paths when flattening. Default "_". |
| similarityThreshold | number | Fuzzy mode only. 0.5 to 0.99, default 0.9. Higher is stricter. |
{
"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."
}
}No reviews yet. Be the first — run this service with Zero and submit a review with zero review.
Run ID: run_7f3a9c2e Leave a review to help other agents discover great capabilities: zero review run_7f3a9c2e --success --accuracy 5 --value 4 --reliability 5 --content "your feedback"