Excel Spreadsheet To Json Conversion
Under maintenancePricing
from $3.00 / 1,000 result returneds
Excel Spreadsheet To Json Conversion
Under maintenanceAutomation workflows need to turn recurring Excel spreadsheets into predictable JSON without silently accepting malformed dates, numbers, headers, or required fields. Basic converters produce rows but often do not enforce a data contract or clearly quarantine invalid records.
Pricing
from $3.00 / 1,000 result returneds
Rating
0.0
(0)
Developer
Jordan Nabbe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Excel Contract Validator to JSON
Turn recurring supplier and partner spreadsheets (.xlsx, CSV) into JSON rows you can import safely: every row is checked against a JSON Schema you supply. Press Start to try it: the prefilled input is a real .xlsx order export with European amounts and one row with an invalid date. Valid rows and rejected rows are kept apart, and each rejection says which document, sheet, row and column failed and why. It makes no web requests and never scrapes anything.
Input
documents(required, 1 to 25): each hasidandsource.csv: inline CSV text incsv(comma delimiter, RFC-style quotes).records/json: an array of objects (or a single object) inrecords/json, up to 1000 items, depth 8, 100 keys per object.base64: an XLSX file inbase64plusfileName.apifyKeyValueStore:keyValueStoreIdandrecordKey; the only storage read the Actor performs, and only when you ask for it.
rowSchema(required): JSON Schema for one row. Supported keywords: type, required, properties, additionalProperties (boolean), enum, const, minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength, pattern, minItems, maxItems, format (date,date-time). Any other keyword stops the run withUNSUPPORTED_SCHEMA_KEYWORDinstead of being silently ignored.headerAliases: canonical property name mapped to accepted header variants (case and whitespace insensitive). Headers without an alias become camelCase keys.sheetNames,headerRow,coercionMode(strictorpermissive),dateOutput,emptyCellMode,includeRejectedValues,maxRows(default 100000, max 500000).
Strict coercion only converts canonical numeric strings and true/false. Permissive also trims, reads both 1,234.56 and 1.234,56 notation and currency signs, accepts yes/no, and normalises YYYY/M/D dates. A text value such as 1.234 that means 1234 in one notation and 1.234 in the other is never guessed: it is rejected unless you set numberFormat to en or eu.
Output
The default dataset receives one item per valid row (recordType: validRow) and nothing else, so every dataset item is a usable result. The OUTPUT key-value record holds outcome (status and counts), validRows, rejectedRows (document, sheet, row, column, value and reason) and manifest (per-document status, headers and counts). Row keys are sorted alphabetically for deterministic results.
Pricing
Pay per event. The main charge is per valid row; everything else listed below is free.
| Event | Price (USD) | Charged when |
|---|---|---|
Run start (apify-actor-start) | $0.005 | once per run; the default 512 MB memory is one event |
Valid row (apify-default-dataset-item) | $0.003 | per valid row delivered to the dataset |
Not charged:
- rejected rows with the sheet, row, column and reason (in the OUTPUT record)
- documents that could not be opened (corrupt, encrypted, legacy .xls, unsafe)
- the manifest with per-document status and detected headers
Examples (default 512 MB memory, one start event):
- Weekly supplier file with 200 valid rows: $0.005 start + 200 × $0.003 = $0.605
- Monthly export with 5,000 valid rows: $0.005 start + 5000 × $0.003 = $15.005
- A file that cannot be opened: $0.005 start + 0 × $0.003 = $0.005
Spending limit: when you set a maximum cost per run, the Actor stops before it would exceed it, keeps every valid row it already delivered and reports limitReached in the OUTPUT record. It never delivers results beyond the limit.
The Store's Pricing tab shows the prices in force. If this section and the Pricing tab ever differ, the Pricing tab applies.
Limits
25 documents, 25 MB per compressed document, 200 MB expanded, ZIP expansion ratio 100, 5 million cells, 500000 rows per run. Documents are processed one at a time.
Failure behaviour
- Invalid input or schema: the run fails with a non-zero exit before any processing.
- A document that is unreadable, encrypted, legacy XLS (
UNSUPPORTED_XLS), oversized, unsafe (ZIP path traversal, DTD/entity XML, zip bomb) or overmaxRowsis markedFAILEDin the manifest and its rows are discarded; other documents continue. - Row errors are quarantined in
rejectedRows. - Run outcome (
OUTPUT.outcome.status):SUCCEEDEDwhen all is clean,PARTIALwhen any row or document was rejected,LIMIT_REACHEDwhen your spending limit stopped delivery,FAILEDwhen no valid row was produced. AFAILEDrun ends as a failed run after saving OUTPUT, so integrations and webhooks see the failure.
Only common OOXML workbooks are supported. Formulas are never evaluated (cached values are used), macros and external links are ignored, and formatting-based date detection covers Excel built-in and common custom date formats. Logs contain document IDs, counts and error codes, never cell values.

