AutomationFlowsData & Sheets › HTML to Airtable Parser

HTML to Airtable Parser

Original n8n title: D19 Loop

d19-loop. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 14 nodes.

Event trigger★★★★☆ complexity14 nodesHTTP RequestAirtableExecute Workflow Trigger
Data & Sheets Trigger: Event Nodes: 14 Complexity: ★★★★☆ Added:

This workflow follows the Airtable → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.

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
{
  "createdAt": "2025-09-15T07:11:53.326Z",
  "updatedAt": "2025-09-15T08:59:50.625Z",
  "id": "ElLNg4BRxGLuU7N2",
  "name": "d19-loop",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -176,
        432
      ],
      "id": "65643d49-1668-4bd7-ac7b-5f0eac042167",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "title",
              "cssSelector": "article > h3 > a",
              "returnValue": "attribute",
              "attribute": "title",
              "returnArray": true
            },
            {
              "key": "url",
              "cssSelector": "article > h3 > a",
              "returnValue": "attribute",
              "attribute": "href",
              "returnArray": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        272,
        432
      ],
      "id": "e0fdf2db-9a0d-4fd3-be40-bc36896c8f0e",
      "name": "HTML"
    },
    {
      "parameters": {
        "url": "https://books.toscrape.com",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        48,
        432
      ],
      "id": "6809ff20-47f0-460e-95c6-eee9dd2ccfa9",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "mode": "combine",
        "combineBy": "combineByPosition",
        "options": {}
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        720,
        432
      ],
      "id": "8a0242ae-650a-4bcc-8fb5-f22c686985a9",
      "name": "Merge"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $json.title }}",
            "URL": "={{ $json.url }}"
          },
          "matchingColumns": [
            "Title"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": false
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "URL",
              "displayName": "URL",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Classification",
              "displayName": "Classification",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "Price",
              "displayName": "Price",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "Availability",
              "displayName": "Availability",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        944,
        432
      ],
      "id": "f1875626-5509-47ef-9a7e-c40c8c0e0a28",
      "name": "Create or update a record",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "fieldToSplitOut": "title",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        496,
        336
      ],
      "id": "2095003b-9aa3-43bf-af9d-a376dfea90b0",
      "name": "title Split Out"
    },
    {
      "parameters": {
        "fieldToSplitOut": "url",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        496,
        528
      ],
      "id": "0d2dc7bd-071c-4243-a219-6d69e64e83d0",
      "name": "url Split Out"
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "ElLNg4BRxGLuU7N2",
          "mode": "list",
          "cachedResultName": "d19-loop"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        },
        "options": {}
      },
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.2,
      "position": [
        1168,
        432
      ],
      "id": "981e5acf-7f82-4a29-bbbb-281bcf5237ea",
      "name": "Execute Workflow"
    },
    {
      "parameters": {
        "inputSource": "passthrough"
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -176,
        824
      ],
      "id": "833f2475-51eb-4ada-8a78-a9eed9b85c35",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "operation": "search",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        48,
        824
      ],
      "id": "6a89426e-bca5-4dd6-9d06-06513c984516",
      "name": "Search records",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "Classification",
              "cssSelector": "body > div > div > ul > li:nth-child(3) > a"
            },
            {
              "key": "Price",
              "cssSelector": "#content_inner > article > div.row > div.col-sm-6.product_main > p.price_color"
            },
            {
              "key": "Availability",
              "cssSelector": "#content_inner > article > div.row > div.col-sm-6.product_main > p.instock.availability"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        720,
        752
      ],
      "id": "ff4457e4-ae82-4025-a7ab-bb71a49b4142",
      "name": "HTML1"
    },
    {
      "parameters": {
        "url": "=https://books.toscrape.com/{{ $json.URL }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        496,
        752
      ],
      "id": "2fc9b837-160b-4a38-9254-5daa4797d636",
      "name": "HTTP Request1"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $('Search records').item.json.Title }}",
            "URL": "={{ $('Search records').item.json.URL }}",
            "Classification": "={{ $json.Classification }}",
            "Price": "={{ $json.Price }}",
            "Availability": "={{ $json.Availability }}"
          },
          "matchingColumns": [
            "Title"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": false
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "URL",
              "displayName": "URL",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Classification",
              "displayName": "Classification",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Price",
              "displayName": "Price",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Availability",
              "displayName": "Availability",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        944,
        824
      ],
      "id": "fd489780-abaa-4e49-818a-f47ebc55bab5",
      "name": "Create or update a record1",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        272,
        824
      ],
      "id": "7653c775-cd99-4d51-b831-4679e0940bdc",
      "name": "Loop Over Items"
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML": {
      "main": [
        [
          {
            "node": "title Split Out",
            "type": "main",
            "index": 0
          },
          {
            "node": "url Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Create or update a record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create or update a record": {
      "main": [
        [
          {
            "node": "Execute Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "title Split Out": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "url Split Out": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Search records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search records": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML1": {
      "main": [
        [
          {
            "node": "Create or update a record1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "HTML1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create or update a record1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "3796f35d-e475-47ee-abe5-d47f4fb653d7",
  "triggerCount": 0,
  "shared": [
    {
      "createdAt": "2025-09-15T07:11:53.326Z",
      "updatedAt": "2025-09-15T07:11:53.326Z",
      "role": "workflow:owner",
      "workflowId": "ElLNg4BRxGLuU7N2",
      "projectId": "6NV7foKyOeJG8Mz6"
    }
  ],
  "tags": [
    {
      "createdAt": "2025-09-14T06:27:04.834Z",
      "updatedAt": "2025-09-14T06:27:04.834Z",
      "id": "S14KyMmdLj6QsyYh",
      "name": "ithome"
    }
  ]
}

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.

Pro

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

About this workflow

d19-loop. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 14 nodes.

Source: https://github.com/021up/n8n-learning/blob/main/ITHome/ElLNg4BRxGLuU7N2.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Lmchatopenai Workflow. Uses noOp, stickyNote, executeWorkflowTrigger, airtable. Event-driven trigger; 41 nodes.

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

This n8n workflow retrieves an Airtable record along with its related child records in a hierarchical structure. It can fetch up to 3 levels of linked records and assembles them into a comprehensive J

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

d16-Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 20 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 19 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

d21-set. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 19 nodes.

HTTP Request, Airtable, Execute Workflow Trigger