Messy data in, clean records out: RecordScrub, a data-cleaning API
Every project eventually inherits the same spreadsheet: emails in three different cases, phone numbers formatted six ways, names like "DOE, john michael", and the same customer entered twice. Cleaning it by hand, or wi
Every project eventually inherits the same spreadsheet: emails in three different cases, phone numbers formatted six ways, names like "DOE, john michael", and the same customer entered twice. Cleaning it by hand, or with a pile of regexes you don't quite trust, is nobody's favorite afternoon.
RecordScrub is a small API we built at DSP to do that job in one call. It's live on RapidAPI now, with a free tier.
What it does
- Email validation & normalization, single or batch, with valid/invalid stats and a plain-language reason for every rejection
-
Phone normalization to E.164, powered by Google's libphonenumber, so
(312) 555-0142becomes+13125550142 -
Name normalization,
"DOE, john michael"βJohn Michael Doe, with first/last split out - US address normalization, state codes, ZIP+4, standardized street suffixes
- Batch record cleaning, send CSV-style records, get snake_case keys, per-field cleaning, and exact dedupe on the fields you choose, with a duplicate report showing what was dropped and why
Every dropped or altered value comes back with a _warnings explanation. No silent data loss.
A taste
curl -X POST https://record-scrub.p.rapidapi.com/v1/normalize/phone \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"phone": "(312) 555-0142"}'
{"original": "(312) 555-0142", "normalized": "+13125550142",
"valid": true, "country_code": 1, "national_format": "(312) 555-0142"}
And the batch cleaner, deduplicating on email + phone:
{"records": [{"name": "John Doe", "email": "[email protected]",
"phone": "+13125550142"}],
"stats": {"received": 2, "returned": 1, "duplicates_removed": 1},
"duplicates": [{"index": 1, "duplicate_of": 0, "record": { "...": "..." }}]}
How it's built
FastAPI, completely stateless. Requests are processed in transit and nothing is stored, so there's no database to leak from. It runs on a free-tier host, so the first call after a quiet spell can take a few extra seconds while it wakes up; after that it's fast.
Pricing
Every endpoint is available on every plan, including the free tier. No feature gates, no Pro-only cleaners, no endpoint held back to force an upgrade. Upgrading simply gets you more requests per month: start free with 100 requests a month, move up to Pro at $10/month for 5,000, and scale from there if your batch volume grows. You pay for volume, not for access.
Try it: https://rapidapi.com/darksundarker/api/record-scrub
Feedback very welcome, especially the "I wish it also cleaned X" kind. That's how the v2 list gets written.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.