The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"parameters": {},
"id": "97bf70d8-9d47-4abf-bd75-e3d500a9be1b",
"name": "Initial data",
"type": "n8n-nodes-base.noOp",
"position": [
-520,
720
],
"executeOnce": true,
"notesInFlow": true,
"typeVersion": 1,
"notes": "for reference."
},
{
"parameters": {
"errorMessage": "={{ $json[\"statusCode\"] }}: {{ JSON.stringify($json[\"body\"]) }}"
},
"id": "c18335f7-293f-43b7-93a5-c95880f73f72",
"name": "Trigger error",
"type": "n8n-nodes-base.stopAndError",
"position": [
680,
720
],
"typeVersion": 1
},
{
"parameters": {
"amount": 5,
"unit": "seconds"
},
"id": "012dc678-ae6f-4cd3-9aa8-9ece0634c922",
"name": "Wait 5s for retry",
"type": "n8n-nodes-base.wait",
"position": [
680,
1020
],
"typeVersion": 1
},
{
"parameters": {
"dataType": "string",
"value1": "={{ Math.floor($json[\"statusCode\"] / 100) }}xx",
"rules": {
"rules": [
{
"value2": "2xx"
},
{
"value2": "3xx",
"output": 1
},
{
"value2": "4xx",
"output": 2
},
{
"value2": "5xx",
"output": 3
}
]
}
},
"id": "61caa7c2-e779-4510-a766-65683e975aeb",
"name": "Check response code",
"type": "n8n-nodes-base.switch",
"position": [
200,
720
],
"notesInFlow": true,
"typeVersion": 1,
"notes": "Output: 2xx, 3xx, 4xx, 5xx"
},
{
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$json[\"body\"][\"items\"].length > 0}}",
"value2": true
}
]
}
},
"id": "4305c283-2b78-4dd8-9c81-3fec40a1e38e",
"name": "Response has items?",
"type": "n8n-nodes-base.if",
"position": [
440,
540
],
"typeVersion": 1
},
{
"parameters": {
"fieldToSplitOut": "body.items",
"options": {}
},
"id": "4f2d7f14-74cd-4362-a65f-072bfbab81a5",
"name": "Extract items",
"type": "n8n-nodes-base.itemLists",
"position": [
680,
320
],
"notesInFlow": true,
"typeVersion": 1
},
{
"parameters": {
"jsCode": "let allItems = [],\n runIndexCounter = 0;\n\ndo {\n try {\n $('Extract items').all(0, runIndexCounter).map(item => allItems.push(item));\n } catch (error) {\n return allItems;\n }\n\n runIndexCounter++; \n} while (true);"
},
"id": "655b6c3b-65a9-407c-b7d9-c61992a302c7",
"name": "Aggregate all items",
"type": "n8n-nodes-base.code",
"position": [
680,
560
],
"typeVersion": 1
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return {\n \"json\": {\n \"search_criteria\": {\n \"filter_groups\": [\n {\n \"filters\": $('Initial data').item.json.filters\n }\n ],\n \"sort_orders\": $('Initial data').item.json.sort_orders,\n \"page_size\": $('Initial data').item.json.page_size,\n \"current_page\": ($runIndex+1)\n }\n }\n};"
},
"id": "6136089b-d567-41c8-930f-da46d56c521e",
"name": "Prepare search criteria",
"type": "n8n-nodes-base.code",
"position": [
-280,
720
],
"executeOnce": true,
"typeVersion": 1
},
{
"parameters": {
"keepOnlySet": true,
"options": {}
},
"id": "67a3070e-71a7-4e1d-b78f-5ae08e7b7255",
"name": "Reset iteration data",
"type": "n8n-nodes-base.set",
"position": [
920,
320
],
"executeOnce": true,
"typeVersion": 1,
"alwaysOutputData": true
},
{
"parameters": {
"values": {
"number": [
{
"name": "page_size",
"value": "={{ $json[\"page_size\"] || 25 }}"
}
]
},
"options": {}
},
"id": "324fa844-63aa-46ca-a516-995eda5e07bb",
"name": "Set default page size",
"type": "n8n-nodes-base.set",
"position": [
-760,
720
],
"executeOnce": true,
"notesInFlow": true,
"typeVersion": 1,
"notes": "if not already set."
},
{
"parameters": {
"jsCode": "return $('Prepare search criteria').first();"
},
"id": "08aca0f2-f5c8-4477-b0f8-3619234b22c8",
"name": "Restore last search criteria",
"type": "n8n-nodes-base.code",
"position": [
920,
1020
],
"typeVersion": 1
},
{
"parameters": {},
"id": "727eaaa9-6ce2-4498-99f1-5eb0acbb2972",
"name": "When Called By Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1,
"position": [
-1020,
720
]
},
{
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$runIndex+1}}",
"operation": "larger",
"value2": 5
}
]
}
},
"id": "71b13727-7bdb-4210-bdba-7997f8d6757e",
"name": "Max retries reached?",
"type": "n8n-nodes-base.if",
"position": [
440,
880
],
"typeVersion": 1
},
{
"parameters": {
"url": "={{$env['VDSHOP_MAGENTO_API_ENDPOINT']}}/{{$('Initial data').first(0, 0).json[\"endpoint\"]}}",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"specifyQuery": "json",
"jsonQuery": "={{JSON.stringify($json)}}",
"options": {
"batching": {
"batch": {
"batchSize": 1,
"batchInterval": 500
}
},
"queryParameterArrays": "indices",
"response": {
"response": {
"fullResponse": true,
"neverError": true,
"responseFormat": "json"
}
}
}
},
"id": "03b1ae89-ff0d-4c8d-af88-bf3bbd03cad3",
"name": "Retrieve data",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
-40,
720
],
"notesInFlow": true,
"retryOnFail": true,
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"notes": "from Magento API."
}
],
"connections": {
"Initial data": {
"main": [
[
{
"node": "Prepare search criteria",
"type": "main",
"index": 0
}
]
]
},
"Wait 5s for retry": {
"main": [
[
{
"node": "Restore last search criteria",
"type": "main",
"index": 0
}
]
]
},
"Check response code": {
"main": [
[
{
"node": "Response has items?",
"type": "main",
"index": 0
}
],
[
{
"node": "Trigger error",
"type": "main",
"index": 0
}
],
[
{
"node": "Trigger error",
"type": "main",
"index": 0
}
],
[
{
"node": "Max retries reached?",
"type": "main",
"index": 0
}
]
]
},
"Response has items?": {
"main": [
[
{
"node": "Extract items",
"type": "main",
"index": 0
}
],
[
{
"node": "Aggregate all items",
"type": "main",
"index": 0
}
]
]
},
"Extract items": {
"main": [
[
{
"node": "Reset iteration data",
"type": "main",
"index": 0
}
]
]
},
"Prepare search criteria": {
"main": [
[
{
"node": "Retrieve data",
"type": "main",
"index": 0
}
]
]
},
"Reset iteration data": {
"main": [
[
{
"node": "Prepare search criteria",
"type": "main",
"index": 0
}
]
]
},
"Set default page size": {
"main": [
[
{
"node": "Initial data",
"type": "main",
"index": 0
}
]
]
},
"Restore last search criteria": {
"main": [
[
{
"node": "Retrieve data",
"type": "main",
"index": 0
}
]
]
},
"When Called By Another Workflow": {
"main": [
[
{
"node": "Set default page size",
"type": "main",
"index": 0
}
]
]
},
"Max retries reached?": {
"main": [
[
{
"node": "Trigger error",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 5s for retry",
"type": "main",
"index": 0
}
]
]
},
"Retrieve data": {
"main": [
[
{
"node": "Check response code",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpHeaderAuth
About this workflow
Search-Criteria. Uses noOp, stopAndError, itemLists, executeWorkflowTrigger. Event-driven trigger; 14 nodes.
Source: https://gitlab.com/vdshop/public/n8n-workflows/-/blob/master/workflows/data-provider/api/magento/search-criteria.json — original creator credit. Request a take-down →