{
  "openapi": "3.0.1",
  "info": {
    "title": "Excel to JSON Converter: XLSX, XLS & CSV to JSON API",
    "description": "Excel to JSON converter API: XLSX to JSON, XLS to JSON, CSV to JSON and ODS to JSON from file URLs, uploaded files or pasted text. Detects headers, types, delimiter and encoding, reads every sheet, and returns one JSON row per source row with file, sheet and row details.",
    "version": "0.1",
    "x-build-id": "IZOcybYevnSGjE6Os"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data-done-right~excel-to-json-converter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data-done-right-excel-to-json-converter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/data-done-right~excel-to-json-converter/runs": {
      "post": {
        "operationId": "runs-sync-data-done-right-excel-to-json-converter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/data-done-right~excel-to-json-converter/run-sync": {
      "post": {
        "operationId": "run-sync-data-done-right-excel-to-json-converter",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "fileUrls": {
            "title": "File URLs",
            "type": "array",
            "description": "Direct links to the files to convert: .xlsx, .xlsm, .xls, .ods, .csv or .tsv. Example: https://example.com/reports/sales-2024.xlsx. Google Sheets links shared with 'anyone with the link' also work (read as Excel). Up to 500 files per run. Private network addresses are blocked, and a file that cannot be read is skipped for free.",
            "items": {
              "type": "string"
            }
          },
          "inlineCsv": {
            "title": "Or paste CSV / TSV text",
            "type": "string",
            "description": "Paste CSV or TSV text to convert it without a file (the delimiter is detected). The first row is the header unless you change Header row. This is converted as one file named inline.csv."
          },
          "storeKeys": {
            "title": "Files in a key-value store",
            "type": "array",
            "description": "Keys of files already stored in a key-value store (for example uploaded with the Apify API or console), one per line. They are read from the store in 'Key-value store ID or name', or from this run's own store when that is empty. Example: monthly-report.xlsx.",
            "items": {
              "type": "string"
            }
          },
          "storeId": {
            "title": "Key-value store ID or name",
            "type": "string",
            "description": "The store that holds the files listed in 'Files in a key-value store'. Leave empty to use this run's default store. Example: my-uploads."
          },
          "sheets": {
            "title": "Sheets to convert",
            "type": "array",
            "description": "Sheet names or positions (1 is the first sheet), one per line. Leave empty or write all to convert every sheet. Example: Sales and 3. Ignored for CSV and TSV files.",
            "items": {
              "type": "string"
            }
          },
          "headerRow": {
            "title": "Header row",
            "enum": [
              "auto",
              "row",
              "none"
            ],
            "type": "string",
            "description": "Where the column names are. Auto skips blank rows and title rows above the table. 'Row number' uses the row you set below. 'None' creates column_1, column_2, ... and treats every row as data.",
            "default": "auto"
          },
          "headerRowNumber": {
            "title": "Header row number",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Row number of the header (1 is the first row of the sheet). Used only when Header row is set to Row number. Rows above it are skipped.",
            "default": 1
          },
          "skipEmptyRows": {
            "title": "Skip empty rows",
            "type": "boolean",
            "description": "Leave out rows where every cell is blank. Blank rows after the last data row are always dropped.",
            "default": true
          },
          "trim": {
            "title": "Trim whitespace",
            "type": "boolean",
            "description": "Remove leading and trailing spaces from text cells and column names. Cells that end up empty become null.",
            "default": true
          },
          "inferTypes": {
            "title": "Detect numbers, booleans and dates",
            "type": "boolean",
            "description": "Turn text in CSV files into numbers, true/false and ISO dates when that is unambiguous ('007', '+1555' and 20-digit IDs stay text). Excel cells already have types. Turning this off returns every value, Excel cells included, as text.",
            "default": true
          },
          "dateFormat": {
            "title": "Date format",
            "enum": [
              "iso",
              "text",
              "epochMs",
              "excelSerial"
            ],
            "type": "string",
            "description": "How date and time cells are written in the JSON. ISO gives 2024-01-15 for dates and 2024-01-15T10:30:00 for date-times.",
            "default": "iso"
          },
          "outputShape": {
            "title": "Output shape",
            "enum": [
              "objects",
              "arrays",
              "sheetObjects"
            ],
            "type": "string",
            "description": "Rows as objects gives one dataset item per row with column names as keys. Rows as arrays gives the cell values as a list in values. One object per sheet gives one item per sheet with its columns and all rows (limited to about 9 MB per item).",
            "default": "objects"
          },
          "maxRows": {
            "title": "Max rows per sheet",
            "minimum": 1,
            "maximum": 5000000,
            "type": "integer",
            "description": "Stops reading a sheet after this many data rows. Protects your budget on huge files.",
            "default": 100000
          },
          "delimiter": {
            "title": "CSV delimiter",
            "enum": [
              "auto",
              "comma",
              "semicolon",
              "tab",
              "pipe"
            ],
            "type": "string",
            "description": "Field separator of CSV and TSV files. Auto-detect chooses between comma, semicolon, tab and pipe from the first lines.",
            "default": "auto"
          },
          "encoding": {
            "title": "CSV text encoding",
            "enum": [
              "auto",
              "utf-8",
              "utf-16",
              "cp1252",
              "latin-1"
            ],
            "type": "string",
            "description": "Auto-detect reads a byte order mark, then tries UTF-8 and falls back to Windows-1252 (Latin-1 as a last resort). Pick one only if accents come out wrong.",
            "default": "auto"
          },
          "flatten": {
            "title": "Nest dotted column names",
            "type": "boolean",
            "description": "Turn headers like address.city and address.zip into a nested object {\"address\": {\"city\": ..., \"zip\": ...}}. Headers that clash (a and a.b) stay as they are.",
            "default": false
          },
          "dedupeHeaders": {
            "title": "Rename duplicate column names",
            "type": "boolean",
            "description": "Number repeated column names (name, name_2, name_3) so no column is lost. Off keeps the last column of the same name. Blank headers always become column_N.",
            "default": true
          },
          "includeMetadata": {
            "title": "Add _file, _sheet and _row",
            "type": "boolean",
            "description": "Add the source file name, sheet name and row number to every item so you can trace it back. Turn off for clean rows.",
            "default": true
          },
          "jsonFile": {
            "title": "Also save a JSON file",
            "type": "boolean",
            "description": "Save the full result of each file as one JSON file in the key-value store, with a public link in the SUMMARY record. Included in the price.",
            "default": false
          },
          "maxFileSizeMb": {
            "title": "Max file size (MB)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Files larger than this are skipped for free. Spreadsheet archives that expand to more than 1 GB are always rejected.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}