{
  "openapi": "3.0.1",
  "info": {
    "title": "CSV & Excel Dataset Merger / Splitter [Bulk Optimizer]",
    "description": "High-speed tool to merge multiple CSV & Excel files or split large datasets into smaller chunks by rows, file size, or specific patterns. Clean duplicates, optimize data formats, and structure columns. The ultimate utility for handling millions of B2B cold email leads and data lists.",
    "version": "1.0",
    "x-build-id": "8NKjqEzVRtqDbglMY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thecfmarketing~csv-xlsx-dataset-merger-pattern-splitter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thecfmarketing-csv-xlsx-dataset-merger-pattern-splitter",
        "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/thecfmarketing~csv-xlsx-dataset-merger-pattern-splitter/runs": {
      "post": {
        "operationId": "runs-sync-thecfmarketing-csv-xlsx-dataset-merger-pattern-splitter",
        "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/thecfmarketing~csv-xlsx-dataset-merger-pattern-splitter/run-sync": {
      "post": {
        "operationId": "run-sync-thecfmarketing-csv-xlsx-dataset-merger-pattern-splitter",
        "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": {
          "sourceType": {
            "title": "Source Type",
            "enum": [
              "upload",
              "url",
              "dataset"
            ],
            "type": "string",
            "description": "Choose how you want to provide your files.",
            "default": "upload"
          },
          "file": {
            "title": "Upload Single File (CSV, XLSX, ZIP)",
            "type": "string",
            "description": "Upload a single CSV, Excel (.xlsx), or ZIP file from your computer."
          },
          "files": {
            "title": "📁 Bulk Upload Multiple Files (CSV, XLSX, ZIP)",
            "type": "array",
            "description": "Upload multiple CSV, Excel (.xlsx), or ZIP files at once directly from your computer.",
            "items": {
              "type": "string"
            }
          },
          "zipFileUrl": {
            "title": "ZIP File Direct Link (URL)",
            "type": "string",
            "description": "Direct download link to a .zip file (e.g. Google Drive, Dropbox, or public URL)."
          },
          "fileUrls": {
            "title": "Direct File URLs",
            "type": "array",
            "description": "List of direct public URLs to CSV or Excel files.",
            "items": {
              "type": "string"
            }
          },
          "apifyDatasetIds": {
            "title": "Apify Dataset IDs",
            "type": "array",
            "description": "List of Apify Dataset IDs to download and merge directly from your scrapers.",
            "items": {
              "type": "string"
            }
          },
          "rowsPerFile": {
            "title": "Rows Per Split File",
            "minimum": 1000,
            "maximum": 2000000,
            "type": "integer",
            "description": "Maximum number of rows allowed per split file in the output (e.g. 50,000 for CRMs, 100,000 for Google Sheets, 500,000 for balanced processing).",
            "default": 500000
          },
          "autoStandardizeHeaders": {
            "title": "Auto-Standardize Header Names",
            "type": "boolean",
            "description": "Automatically map alias column names (e.g. 'Email Address', 'e-mail', 'Contact Email' -> 'email') so files with slight variations merge into one format.",
            "default": true
          },
          "removeDuplicates": {
            "title": "Remove Duplicate Rows",
            "type": "boolean",
            "description": "Enable to remove duplicate records across merged datasets.",
            "default": true
          },
          "dedupColumn": {
            "title": "Deduplication Column (Optional)",
            "type": "string",
            "description": "Column name to base deduplication on (e.g. 'email' or 'phone'). Leave blank to deduplicate on exact full row match."
          },
          "trimWhitespace": {
            "title": "Trim Whitespace & Clean Text",
            "type": "boolean",
            "description": "Trim leading and trailing spaces from all text fields.",
            "default": true
          },
          "lowercaseEmails": {
            "title": "Lowercase Email Addresses",
            "type": "boolean",
            "description": "Convert all email addresses to lowercase (e.g., USER@GMAIL.COM -> user@gmail.com).",
            "default": true
          },
          "splitFullNames": {
            "title": "Split Full Name into First & Last Name",
            "type": "boolean",
            "description": "Split 'Full Name' or 'name' columns into 'first_name' and 'last_name' columns.",
            "default": false
          },
          "extractDomains": {
            "title": "Extract Company Domain",
            "type": "boolean",
            "description": "Extract domain names from email addresses or website URLs into a 'domain' column.",
            "default": false
          },
          "outputFormat": {
            "title": "Output File Format",
            "enum": [
              "csv",
              "xlsx",
              "json"
            ],
            "type": "string",
            "description": "Format for output files (CSV, XLSX, or JSON).",
            "default": "csv"
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}