CSV/JSON Schema Normalizer avatar

CSV/JSON Schema Normalizer

Pricing

$10.00 / 1,000 result delivereds

Go to Apify Store
CSV/JSON Schema Normalizer

CSV/JSON Schema Normalizer

Normalize CSV and JSON rows into stable, typed, automation-ready records.

Pricing

$10.00 / 1,000 result delivereds

Rating

0.0

(0)

Developer

Zentra

Zentra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Normalize every row from CSV, JSON, or an Apify dataset into stable, typed, automation-ready records.

What this Actor does

  • Accepts inline JSON records, CSV text, JSON text, an Apify dataset ID, and public or user-authorized CSV/JSON URLs.
  • Follows JSON next links, page tokens, and offset pagination to the source's natural end.
  • Infers one stable schema from the complete input, or applies a buyer-supplied schema.
  • Emits exactly one default-dataset item for every delivered source row, including duplicate rows.
  • Saves the schema in SCHEMA and counts in RUN-SUMMARY in the default key-value store.
  • Charges result-delivered once per production row through Apify's charged dataset push.

There is no maxItems, maxRows, per-source, charge-derived, or overall result ceiling in this Actor. A buyer's Apify spending limit can stop paid delivery, as required by the platform.

Inputs

  • records: Inline array of JSON objects.
  • csvText: Inline RFC-style CSV text, including quoted delimiters and line breaks.
  • jsonText: Inline JSON array or an object containing items, records, results, rows, or data.
  • datasetId: Existing Apify dataset iterated to its natural end.
  • startUrls: Public or user-authorized CSV/JSON URLs. The production default reads the public Apify Store API and follows all available pages.
  • schema: Optional field map. For example, {"amount":{"type":"number","required":true}}.
  • csvHasHeader, delimiter, trimStrings, and emptyStringsAsNull: Parsing and normalization controls.
  • includeRaw: Include the original row beside the normalized row.
  • requestTimeoutSecs: Per-request network timeout; it is not a result-count limit.

sourceMode selects one input surface, so the public default URL is not mixed into an inline-record or dataset run. Rows within the selected source are not deduplicated, so a 1,200-row input produces 1,200 result records when the buyer's spending limit permits 1,200 charged deliveries.

Output

Each source row produces one item with:

  • recordId: Stable SHA-256 identity derived from source, row number, and source content.
  • rowNumber and sourceRowNumber: Global and source-local row positions.
  • sourceType and sourceReference: Input provenance.
  • normalized: Complete row normalized against the stable schema.
  • valid and validationErrors: Required-field and type-conversion results.
  • retrievedAt: Run timestamp.
  • raw: Original row only when requested.

The default dataset never adds summary rows, so its item count equals the number of delivered source rows. The inferred/applied schema and run summary are separate key-value-store records.

Quick non-billable check

{
"mode": "sample",
"sourceMode": "sample"
}

Production examples

Normalize an Apify dataset:

{
"mode": "production",
"sourceMode": "dataset",
"datasetId": "YOUR_DATASET_ID"
}

Normalize 1,200 inline records by supplying all 1,200 objects in records; no Actor input field truncates the array.

Pricing

The existing Actor pricing remains unchanged:

  • result-delivered: USD 0.01 for each validated buyer-facing row delivered to the default dataset.

Sample mode is non-billable. Production stops when Apify reports that the buyer's spending limit has been reached, preventing unpaid processing after the platform limit.

Access and limitations

  • Process only public data or inputs you are authorized to use.
  • The Actor does not bypass authentication, paywalls, CAPTCHAs, access controls, or source terms.
  • Very large sources still depend on the run's platform memory, network, and time resources; the Actor itself does not impose a record-count ceiling.
  • Invalid values are retained as null with a field error instead of being silently invented.

Existing public Actor identity

This package updates that exact public Actor in place. It does not create, clone, draft, privatize, or change pricing or visibility.