Dataset Cleaner & Exporter
Pricing
from $2.00 / 1,000 cleaned records
Dataset Cleaner & Exporter
Deduplicate, flatten, clean and export any Apify dataset (or your own JSON) into a ready-to-use CSV and Excel file.
Pricing
from $2.00 / 1,000 cleaned records
Rating
0.0
(0)
Developer
Adam Pearce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn any messy Apify dataset into a clean spreadsheet
Just finished a scrape and got back a pile of nested JSON with duplicate rows, inconsistent casing, and half-empty fields? Dataset Cleaner & Exporter takes any Apify dataset (or your own JSON) and hands back a deduplicated, flattened, cleaned dataset plus a ready-to-open CSV and Excel file, no manual export-and-tidy-up step required.
Point it at a sourceDatasetId from any other Actor's run, or paste inline JSON, and it will:
- Deduplicate exact, normalized, or fuzzy near-duplicates, keeping the most complete record
- Flatten nested objects into spreadsheet-ready columns (
address.citybecomesaddress_city) - Clean emails, phone numbers and URLs, strip HTML, trim whitespace, coerce types
- Explode one named array field (e.g.
offersorvariants) into multiple rows, if you want that - Export a real downloadable CSV and XLSX file, not just a dataset you have to know how to export yourself
Why use this instead of exporting manually?
Apify's own dataset export already gives you a raw CSV or JSON, but it's still the dataset you started with: duplicates and all, nested fields collapsed into unreadable JSON strings, no cleanup. This Actor is the step most people do by hand in Excel or a spreadsheet formula afterwards, done automatically, and chainable straight after any scraper in a pipeline or schedule.
- Data teams: standardize scraper output before loading into a database or BI tool
- Lead generation: dedupe and normalize contact lists from multiple scraper runs
- Automation builders: drop this in as a cleanup step between a scraper and a Google Sheets/Slack/webhook integration
- AI agents: a deterministic, no-hallucination-risk primitive for "clean this data" as part of a larger pipeline
How to use it
- Run any scraper or data-producing Actor and copy its dataset ID from the Storage tab (or grab
defaultDatasetIdfrom its API response). - Run this Actor with that dataset ID in Source dataset, or paste your own JSON array into Inline data.
- Pick the cleaning options you want (deduplication mode, flatten, field cleaning) or leave the sensible defaults.
- Download the CSV or Excel file from the run's Output tab, or read the cleaned dataset via the API for further automation.
Input
The full list of options is in the Input tab. The two you'll use most:
- Source dataset: pick an existing Apify dataset from any of your runs.
- Inline data: paste a JSON array instead, for ad-hoc or piped data.
Everything else (deduplication mode, flatten, field cleaning, column keep/remove/rename, export formats) has a sensible default, so you can run it with just a dataset picked and get a good result.
Output
Three things land in every run:
- Cleaned dataset (the Actor's own dataset): the same records, deduplicated, flattened and cleaned.
- CSV and/or Excel file, in the run's key-value store, linked directly from the Output tab.
- Quality report (
QUALITY_REPORTin the key-value store): input/output counts, duplicates removed, per-field fill rates, and any warnings from the run.
Example cleaned record:
{"Company Name": "Acme Corp","Email": "sales@acme.com","Phone": "+15551234567","Website": "https://acme.com","Details_hq_city": "Austin","Details_hq_state": "TX"}
Pricing
Pay per event, no subscription:
- $0.002 per cleaned record written to the output dataset
- $0.01 per exported file (CSV and Excel each count once, so both together is $0.02 per run)
A realistic run cleaning 2,000 scraped leads with both CSV and Excel export costs roughly $4.02. A quick one-off cleanup of 50 records with just a CSV export costs about $0.11. There's no charge for records removed as duplicates, only for what actually ends up in your cleaned output.
Tips
- If you're not sure what a source dataset looks like, run it with Max output records set low (e.g. 20) first to check the result before running the full dataset.
- Combining Field to expand into rows with deduplication needs a small adjustment: if you explode an array field (like
offers) into multiple rows and then deduplicate, make sure your Deduplication keys include a field that varies per exploded row (likeplanorsku), not just a field shared across every row of that record (likeemail). Otherwise rows that only differ in the exploded field will be treated as duplicates of each other. - Fuzzy deduplication is recommended for datasets under 5,000 records. Above that, it automatically falls back to normalized matching so the run still completes reliably, and the quality report tells you when that happened.
FAQ
Does this work with the output of any Actor, or just specific ones? Any Actor's dataset. It makes no assumptions about field names or shape, it works on whatever JSON structure your source dataset actually has.
Will it invent or guess data? No. Every operation is deterministic (no AI/LLM in the loop), and anything it can't confidently interpret (an unparseable phone number, an array it wasn't told to expand) is left as-is or reported in the quality report rather than guessed at.
What happens to duplicate records, are they billed? No, you're only billed for records that end up in the cleaned output. Records removed as duplicates cost nothing.
Can I run this on a schedule after another Actor? Yes, that's the intended pattern: schedule your scraper, then schedule this Actor a few minutes later pointed at the same dataset, or chain them via an integration.
If this saved you a manual export-and-clean-up pass, a review on this page helps a lot. Found a bug or have a request? Use the Issues tab, replies are personal, not automated.