Dataset Transformer — Filter, Dedupe, Sort & Reshape Data avatar

Dataset Transformer — Filter, Dedupe, Sort & Reshape Data

Pricing

from $33.50 / 1,000 output rows

Go to Apify Store
Dataset Transformer — Filter, Dedupe, Sort & Reshape Data

Dataset Transformer — Filter, Dedupe, Sort & Reshape Data

Transform Apify datasets or JSON / CSV links: filter rows, remove duplicates, sort, flatten nested fields, unwind lists, pick and rename columns. Merge several datasets into one clean result for export as JSON, CSV or Excel. Part of NexGen Signal — data tools and official-source data products

Pricing

from $33.50 / 1,000 output rows

Rating

0.0

(0)

Developer

NexGen Signal

NexGen Signal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

🧮 Dataset Transformer — Filter, Dedupe, Sort & Reshape Data

Take rows from your Apify datasets, JSON / JSON Lines / CSV links, or pasted JSON, and get a clean new dataset: unwind list fields into rows, flatten nested objects into columns, filter with 17 operators, remove duplicates, sort, keep and rename fields, skip and limit.

Several datasets merge into one. Field names can be dot paths (properties.mag, offers.0.price). Numbers compare as numbers even when they arrive as text from CSV; text matching ignores case unless you ask otherwise. The result exports from Apify as JSON, CSV, Excel or XML like any dataset.

The unit of output is one output row delivered. Rows you filter out are not billed.

Who buys this and for what job

  • Apify users cleaning or merging the output of scrapers before export or integration.
  • Analysts turning nested JSON from an API into a flat table.
  • Automation builders adding a filter / dedupe step between two actors.
  • Data teams sorting and trimming large CSV files without writing code.

Buyers usually search for this as "dataset transformer", "merge datasets" or "JSON to CSV flatten".

📊 Sample Output

Table of transformed rows: magnitude, place, time and URL of the strongest recent earthquakes.

magnitudeplacetime_msurl
6.976 km NE of Ozernovskiy, Russia1792121731925https://earthquake.usgs.gov/earthquakes/eventpage/us6000u2mq
6.8central Mid-Atlantic Ridge1791894187248https://earthquake.usgs.gov/earthquakes/eventpage/us6000u214
6.7central Mid-Atlantic Ridge1791870286919https://earthquake.usgs.gov/earthquakes/eventpage/us6000u1z5
6.279 km SSE of Panguna, Papua New Guinea1791727643188https://earthquake.usgs.gov/earthquakes/eventpage/us6000u1kv
6.117 km W of Río Grande, Panama1791847236003https://earthquake.usgs.gov/earthquakes/eventpage/us6000u1wn

Rows from live run 8LuJln2xafXxCOetY on Apify (the Store example: the USGS magnitude 4.5+ weekly GeoJSON, flattened, filtered to magnitude 5 and above, sorted strongest first, with four renamed columns). Notice how nested GeoJSON features became four flat, named columns.

✅ What you get

Every field of each record:

  • Your fields — the output has the fields you choose; with no field list, every field of each row is kept.

⚙️ Sample inputs

Strongest recent earthquakes (the Store example)

{
"dataUrls": ["https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_week.geojson"],
"flatten": true,
"filters": [{"field": "properties.mag", "op": "gte", "value": 5}],
"sortBy": "properties.mag",
"sortDescending": true,
"fields": ["properties.mag", "properties.place", "properties.time", "properties.url"],
"rename": {"properties.mag": "magnitude", "properties.place": "place", "properties.time": "time_ms", "properties.url": "url"},
"maxRows": 10
}

From GeoJSON to a flat table.

Merge two of your datasets and dedupe

{
"datasetIds": ["DATASET_ID_1", "DATASET_ID_2"],
"dedupeBy": ["url"],
"maxRows": 100000
}

Pick the datasets in the Source datasets field.

One row per order line

{
"rows": [{"order": "A1", "items": [{"sku": "x", "qty": 2}, {"sku": "y", "qty": 1}]}],
"unwind": "items",
"flatten": true
}

Unwind a list, then flatten.

Input fields:

FieldMeaning
datasetIdsyour Apify datasets (picked in the input form).
dataUrlsJSON, JSON Lines or CSV links (up to 100).
rowspasted JSON array (up to 100,000).
rowsPathwhere the row list sits inside a JSON object.
unwindlist field to split into one row per element.
flattennested fields to dot-named columns.
filters, filterModeconditions (eq, ne, gt, gte, lt, lte, contains, notContains, startsWith, endsWith, in, notIn, exists, notExists, empty, notEmpty, regex), all or any.
dedupeBykeep the first row per combination of these fields.
sortBy, sortDescendingsort field and direction.
fields, rename, dropFieldspick, rename and drop columns.
offset, maxRows, maxInputRowsskip, limit (default 100,000 output rows; each billed) and input cap (default 200,000).

🧾 JSON sample record

{
"magnitude": 6.9,
"place": "76 km NE of Ozernovskiy, Russia",
"time_ms": 1792121731925,
"url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000u2mq"
}

🔧 How it works

Steps run in this order: unwind, flatten, filter, de-duplicate, sort, pick / rename / drop, skip and limit. Apify datasets are read through the API with the access you grant in the input form (the actor runs with limited permissions and cannot see other storages). Links are read with a robots.txt check.

Delivery is pushed in batches of 500 and charged after each batch. The run receipt (RUN_RECEIPT) lists every source with rows read and used, the row count after each step, and the delivered and charged counts.

💰 Pricing example

Per row delivered, no start fee, no monthly charge:

Apify planPrice per row
Free$0.05
Bronze$0.045
Silver$0.04
Gold, Platinum, Diamond$0.0335
  • 10 rows: $0.50 on the Free plan, $0.335 on Gold.
  • 10,000 rows: $500.00 on Free, $335.00 on Gold.
  • 100,000 rows: $5,000.00 on Free, $3,350.00 on Gold.

Coverage and size. Proof runs on 17 Oct 2026: 622 USGS rows read and 40 delivered in about 3 seconds; one of our own Apify datasets (30 rows) read through the dataset picker; a 139-row USGS CSV deduplicated by magnitude type to 4 rows.

It processes data you supply or point it at. You choose the links. Make sure you have the right to download and use the content you point it at; the actor fetches only what you give it (and, where you turn it on, what those pages link to).

❓ FAQ

Does it change my source datasets? No. Sources are only read; the result is a new dataset.

How large can the input be? Up to 2 million rows read in one run (maxInputRows); give the run more memory for large inputs.

Can I filter on nested fields? Yes, with dot paths, with or without flatten.

🆘 Troubleshooting

  • dataset not found or not shared with this run — Pick the dataset in the Source datasets field so the run is allowed to read it.
  • rowsPath not found — Check where the list sits inside the JSON; leave empty when the JSON has one list of objects.
  • SOURCE UNAVAILABLE — None of your sources could be reached after retries. Nothing was charged.

🏢 About NexGen Signal — data tools and official-source data products on Apify. Browse the catalog: apify.com/nexgensignal

⭐ Found this useful?

If this actor saved you time, a rating on its Apify Store page helps other buyers find it.

Part of NexGen Signal — data tools and official-source data products.