Metaworld Data Cleaner avatar

Metaworld Data Cleaner

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Metaworld Data Cleaner

Metaworld Data Cleaner

Messy CSV in — validated, deduplicated, typed records out, with a data-quality report naming every rejected row and why.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Metaworld Systems

Metaworld Systems

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 hours ago

Last modified

Share

Messy CSV in → validated, deduplicated, typed records out — with a data-quality report that names every rejected row and why.

Small-business data is never clean. This Actor is the boring, reliable step you actually want before anything touches your CRM, ledger, or dashboard: it validates, normalizes, and deduplicates a CSV, then hands you a clean dataset plus a report you can show a stakeholder.

Built and maintained by Metaworld Systems.

What it does

  • Normalizes every field — trims whitespace, strips control characters, and standardizes dates (YYYY-MM-DD), phone numbers ((727) 450-9666), and currency (1234.50) based on the column name.
  • Validates rows against required columns you choose — anything missing a required value is rejected, not silently dropped.
  • Deduplicates on a key column, with optional latest-wins survivorship using a timestamp column.
  • Reports — a quality report is written to the key-value store (QUALITY_REPORT) listing row counts and every rejected row with the reason.

Input

FieldDescription
csvUrlPublic URL of a CSV to clean.
csvTextOr paste raw CSV (with a header row).
requiredColumnsRows missing any of these are rejected.
dedupeKeyColumn used to detect duplicates (optional).
timestampColumnWhen deduping, keep the newest row by this column.

Provide either csvUrl or csvText.

Output

  • Dataset — one item per cleaned, validated, deduplicated row (export as CSV, JSON, or Excel).
  • Key-value store QUALITY_REPORTrows_in, rows_cleaned, rows_rejected, and the full list of rejected rows with reasons.

Example

Input csvText:

order_id,customer,order_date,amount,phone
1001, Acme Co ,2026-1-3,$1,299.00,7274509666
1001,Acme Co,01/03/2026,1299,(727) 450-9666
1002,,2026-02-15,89.5,555 123 4567

With requiredColumns=["order_id","customer"], dedupeKey="order_id", timestampColumn="order_date":

  • Row 1002 is rejected (missing customer).
  • The two 1001 rows collapse to one (latest-wins).
  • Dates become 2026-01-03, amount becomes 1299.00, phone becomes (727) 450-9666.

Why this one

We don't sell you the happy path. The value is the report that tells you exactly which rows failed and why — so you fix your data instead of finding out downstream. Same pattern we run in production for our own operations.

All processing happens inside the Actor run; nothing is stored or shared beyond your run's own storages.