AutomationFlowsWeb Scraping › Robust API Error Handling Workflow

Robust API Error Handling Workflow

Original n8n title: Error Handling

Error Handling. Uses start, json, httpRequest. Manual trigger; 9 nodes.

Manual trigger★★★★☆ complexity9 nodesStartJSONHTTP Request
Web Scraping Trigger: Manual Nodes: 9 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "updatedAt": "2025-12-28T18:44:02.721Z",
  "createdAt": "2025-07-24T15:54:31.480Z",
  "id": "WbISMAIlclQfzorG",
  "name": "Error Handling",
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.errorTrigger",
      "typeVersion": 1,
      "position": [
        -368,
        -288
      ],
      "id": "0e8c2373-3278-483a-b695-095a265f5acd",
      "name": "Error Trigger"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ",
          "mode": "list",
          "cachedResultName": "n8n Errors",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Tabellenblatt1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "date": "={{ $now.format('yyyy-MM-dd') }}",
            "time": "={{ $now.format('HH:mm') }}",
            "workflow name": "={{ $json.workflow.name }}",
            "workflow id": "={{ $json.workflow.id }}",
            "message": "={{ $json.execution.error.message }}",
            "execution": "={{ $json.execution.url }}",
            "stacktrace": "={{ $json.execution.error.stack }}",
            "node": "={{ $json.execution.lastNodeExecuted }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "date",
              "displayName": "date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "time",
              "displayName": "time",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "workflow name",
              "displayName": "workflow name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "workflow id",
              "displayName": "workflow id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "message",
              "displayName": "message",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "execution",
              "displayName": "execution",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "stacktrace",
              "displayName": "stacktrace",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "node",
              "displayName": "node",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.6,
      "position": [
        -144,
        -288
      ],
      "id": "2fe5cfcd-36e0-4b8c-aee4-c6a654e0d922",
      "name": "Append row in sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "165e5051-3364-4772-94b8-d5551c819f74",
  "activeVersionId": "165e5051-3364-4772-94b8-d5551c819f74",
  "triggerCount": 0,
  "shared": [
    {
      "updatedAt": "2025-07-24T15:54:31.485Z",
      "createdAt": "2025-07-24T15:54:31.485Z",
      "role": "workflow:owner",
      "workflowId": "WbISMAIlclQfzorG",
      "projectId": "B7QJE85HA2Vij1it"
    }
  ],
  "activeVersion": {
    "updatedAt": "2025-11-26T20:39:59.471Z",
    "createdAt": "2025-11-26T20:39:59.471Z",
    "versionId": "165e5051-3364-4772-94b8-d5551c819f74",
    "workflowId": "WbISMAIlclQfzorG",
    "nodes": [
      {
        "parameters": {},
        "type": "n8n-nodes-base.errorTrigger",
        "typeVersion": 1,
        "position": [
          -368,
          -288
        ],
        "id": "0e8c2373-3278-483a-b695-095a265f5acd",
        "name": "Error Trigger"
      },
      {
        "parameters": {
          "operation": "append",
          "documentId": {
            "__rl": true,
            "value": "1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ",
            "mode": "list",
            "cachedResultName": "n8n Errors",
            "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ/edit?usp=drivesdk"
          },
          "sheetName": {
            "__rl": true,
            "value": "gid=0",
            "mode": "list",
            "cachedResultName": "Tabellenblatt1",
            "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1uJgVKic8z9oLtmvS1wTPAZBY611BjVaIG4td4JrZBwQ/edit#gid=0"
          },
          "columns": {
            "mappingMode": "defineBelow",
            "value": {
              "date": "={{ $now.format('yyyy-MM-dd') }}",
              "time": "={{ $now.format('HH:mm') }}",
              "workflow name": "={{ $json.workflow.name }}",
              "workflow id": "={{ $json.workflow.id }}",
              "message": "={{ $json.execution.error.message }}",
              "execution": "={{ $json.execution.url }}",
              "stacktrace": "={{ $json.execution.error.stack }}",
              "node": "={{ $json.execution.lastNodeExecuted }}"
            },
            "matchingColumns": [],
            "schema": [
              {
                "id": "date",
                "displayName": "date",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "time",
                "displayName": "time",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "workflow name",
                "displayName": "workflow name",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "workflow id",
                "displayName": "workflow id",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "message",
                "displayName": "message",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "execution",
                "displayName": "execution",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "stacktrace",
                "displayName": "stacktrace",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              },
              {
                "id": "node",
                "displayName": "node",
                "required": false,
                "defaultMatch": false,
                "display": true,
                "type": "string",
                "canBeUsedToMatch": true
              }
            ],
            "attemptToConvertTypes": false,
            "convertFieldsToString": false
          },
          "options": {}
        },
        "type": "n8n-nodes-base.googleSheets",
        "typeVersion": 4.6,
        "position": [
          -144,
          -288
        ],
        "id": "2fe5cfcd-36e0-4b8c-aee4-c6a654e0d922",
        "name": "Append row in sheet",
        "credentials": {
          "googleSheetsOAuth2Api": {
            "id": "qJ5ck4AVx9Jx37Fr",
            "name": "Google Sheets account"
          }
        }
      }
    ],
    "connections": {
      "Error Trigger": {
        "main": [
          [
            {
              "node": "Append row in sheet",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Append row in sheet": {
        "main": [
          []
        ]
      }
    },
    "nodeGroups": [],
    "authors": "system migration",
    "name": null,
    "description": null,
    "autosaved": false
  },
  "tags": []
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Error Handling. Uses start, json, httpRequest. Manual trigger; 9 nodes.

Source: https://github.com/neul-labs/m9m/blob/main/examples/advanced-patterns/error-handling.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

API Integration. Uses start, httpRequest, json. Manual trigger; 4 nodes.

Start, HTTP Request, JSON
Web Scraping

FTS. Uses httpRequest, itemLists, functionItem, start. Manual trigger; 16 nodes.

HTTP Request, Item Lists, Function Item +1
Web Scraping

FQA_GoogleSheet_Website103. Uses start, your-custom-node, googleSheets, httpRequest. Manual trigger; 14 nodes.

Start, Your Custom Node, Google Sheets +2
Web Scraping

CBPF. Uses start, httpRequest, itemLists. Manual trigger; 13 nodes.

Start, HTTP Request, Item Lists
Web Scraping

Claude Prompt Pre-Processor (Pro V2). Uses start, httpRequest, returnJson. Manual trigger; 10 nodes.

Start, HTTP Request, Return Json