Reference · Tools

Split Out

Separates a single item containing an array into multiple individual items.

Action Core Nodes v1

Split Out takes an array field on an item and emits one output item per element, turning a single record carrying a list into a stream the rest of the workflow can process individually. It needs no credentials. A typical build is splitting an API response's `results` array so each record gets handled on its own.

Node type
Action
Parameters
5
Outputs
Output, Error
Credentials
None required

Split Out

Loop through array items one by one

Overview

Separates a single item containing an array into multiple individual items. Essential for processing API responses where data is returned as a list within a single object.

Category: Core Nodes
Tool Name: split_out
Version: 1

Appearance: Icon: splitOut | Color: #ec4899

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool does not require any credentials.

Parameters

ParameterTypeRequiredDefaultDescription
Field To Split OutstringYesThe name of the field containing the array to split. Use dot notation for nested fields (e.g., ‘results.items’, ‘data.records’). Supports expressions like {{ $json.arrayFieldName }}.
IncludeoptionsYesnoOtherFieldsDetermines which other fields from the original item are included in each split output item.
Options: noOtherFields (only include the data from the split array), allOtherFields (include all other fields from the original item in each split item), selectedOtherFields (include only specific fields from the original item)
Fields To IncludestringNoComma-separated list of field names to include when ‘Include’ is set to ‘Selected Other Fields’. Supports dot notation for nested fields (e.g., ‘id, metadata.timestamp, user.name’). (shown when Include is selectedOtherFields)
OptionscollectionNo{}Additional options for controlling split behavior.
— Destination Field NamestringNoIf set, places the split data under this field name instead of at the root level. For example, setting ‘item’ would output { item: <splitData> } instead of <splitData> directly.
— Disable Dot NotationbooleanNofalseWhen enabled, dots in field names are treated literally rather than as nested path separators. Enable this if your field names contain actual dots.
— Include BinarybooleanNofalseWhen enabled, binary data (if any) from the input item is passed through to all split output items.
Max ConcurrencynumberNo100Maximum number of input items to process concurrently.

Output Data

This node changes how many items are in flight: one input item becomes one output item per element of the array at Field To Split Out. An input item whose array is empty produces no output items at all, and an input item whose named field is missing or is not an array is an item error. Binary data is forwarded to every split item only when Include Binary is on.

Each output item is built like this:

  • With Destination Field Name set, the element is placed whole under that name — { "item": <element> }.
  • With no Destination Field Name, an element that is a plain object is merged at the root of the output item, so its own keys become the item’s fields. Anything else — a string, number, boolean, or nested array — is wrapped under the key value.
  • Whatever Include selects is added alongside: nothing (noOtherFields), every other field of the original item (allOtherFields — the split field itself is removed), or just the fields named in Fields To Include (selectedOtherFields).

Every output item also carries _splitMeta, describing where it came from:

{
  "_splitMeta": {
    "sourcePointer": "...",
    "sourceField": "data.users",
    "arrayIndex": 0,
    "arrayLength": 3
  }
}

sourceField is the resolved path that was split, arrayIndex is the element’s position in that array and arrayLength its total length — useful for numbering or for detecting the last item downstream. sourcePointer is an internal reference to the item this one was split from.

Reference the split element downstream by expression, e.g. {{ $json.id }} when elements are objects, or {{ $json.value }} when they are not.

Usage Examples

  • loop through each item in the list
  • process every element one by one
  • split the array into individual items
  • iterate over the results
  • go through each row separately

Example Configuration

Basic split, no other fields:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "data.users",
    "include": "noOtherFields"
  }
}

Split with all other fields:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "results.items",
    "include": "allOtherFields",
    "maxConcurrency": 50
  }
}

Split with selected fields only:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "response.records",
    "include": "selectedOtherFields",
    "fieldsToInclude": "id, metadata.timestamp, status"
  }
}

Advanced split with options:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "api.data.entries",
    "include": "selectedOtherFields",
    "fieldsToInclude": "requestId, user.email",
    "options": {
      "destinationFieldName": "item",
      "disableDotNotation": false,
      "includeBinary": true
    }
  }
}

Split an API response containing multiple records:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "data.results",
    "include": "allOtherFields"
  }
}

Split an array but preserve only essential metadata:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "orders.items",
    "include": "selectedOtherFields",
    "fieldsToInclude": "orderId, customerId, timestamp"
  }
}

Split deeply nested arrays with a custom output structure:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "response.data.transactions.list",
    "include": "noOtherFields",
    "options": {
      "destinationFieldName": "transaction",
      "includeBinary": false
    }
  }
}

When field names contain actual dots rather than path separators:

{
  "type": "split_out",
  "parameters": {
    "fieldToSplitOut": "data.records",
    "include": "selectedOtherFields",
    "fieldsToInclude": "user.email.address, config.api.key",
    "options": {
      "disableDotNotation": true
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Takes an array field within each item and splits it into separate output items, one per array element. Use when a previous tool produced items containing arrays that need to be processed individually. Produces N items from each input item, where N is the length of the specified array field.

Frequently asked questions

How many items come out?

N per input item, where N is the length of the array field you nominated. Ten input items each holding five elements produce fifty output items.

When do I need this?

Whenever an upstream node returns a list inside one item — most `getAll` operations do — and the next step should act on each element separately.

What happens to the other fields on the item?

The node is designed around the nominated array, so plan your field mapping around what each split element needs to carry forward.

Does it need credentials?

No — it reshapes data already in the workflow.

Build with the Split Out node

Drop it into a workflow, wire it to an agent, or call it on a schedule.

Open BusyBot

Last updated . Spotted something wrong? Tell us.