AutomationFlowsData & Sheets › Web Site Scraper for Llms with Airtop

Web Site Scraper for Llms with Airtop

ByAirtop @cesar-at-airtop on n8n.io

Automating web scraping with recursive depth is ideal for collecting content across multiple linked pages—perfect for content aggregation, lead generation, or research projects.

Event trigger★★★★☆ complexity24 nodesForm TriggerGoogle SheetsAirtopGoogle DocsExecute Workflow Trigger
Data & Sheets Trigger: Event Nodes: 24 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #4252 — we link there as the canonical source.

This workflow follows the Execute Workflow Trigger → Form 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
{
  "id": "3SNBO1RAF0ZIyido",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Website scraper",
  "tags": [],
  "nodes": [
    {
      "id": "aaa5bf43-bf76-4433-93c7-7e168f2e140c",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -400,
        -200
      ],
      "parameters": {
        "options": {},
        "formTitle": "Website scraper",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Seed url",
              "requiredField": true
            },
            {
              "fieldLabel": "Links must contain",
              "requiredField": true
            },
            {
              "fieldType": "number",
              "fieldLabel": "Depth",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5f862a6f-8079-4d24-a2ae-7442c45c8f04",
      "name": "Info to upload into spreadsheet",
      "type": "n8n-nodes-base.set",
      "position": [
        260,
        -100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5970bab1-0bfb-4212-a8f2-df6b2e003800",
              "name": "URL",
              "type": "string",
              "value": "={{ $('Unify params').item.json[\"Seed url\"] }}"
            },
            {
              "id": "5c941ad3-70bf-4fba-8cf3-1f79c1b20d3a",
              "name": "Scraped",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "556e5da4-4454-46cd-b17d-bd8695515670",
      "name": "Load info to spreadsheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        480,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create Spreadsheet').item.json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Spreadsheet').item.json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "4592ada8-8f21-4117-a0ee-8906922f5685",
      "name": "Scrape webpage",
      "type": "n8n-nodes-base.airtop",
      "position": [
        700,
        -100
      ],
      "parameters": {
        "url": "={{ $json.URL }}",
        "resource": "extraction",
        "operation": "scrape",
        "profileName": "=",
        "sessionMode": "new"
      },
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "74a1399d-a335-455c-a3dd-167624b4a5f2",
      "name": "Create Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        920,
        -100
      ],
      "parameters": {
        "title": "=Site to File - {{ $('Unify params').item.json[\"Seed url\"] }}",
        "folderId": "default"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1e69e40f-0465-430b-85ec-c6a71e1cb4a4",
      "name": "Write scraped content",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1140,
        -100
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "=The entire content from {{ $('Info to upload into spreadsheet').item.json.URL }} up to {{ $('Unify params').item.json.Depth }} levels deep.\n---------------------------------------------  \n{{ $('Scrape webpage').item.json.data.modelResponse.scrapedContent.text }}\n---------------------------------------------",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "49e9b38c-c2d4-49f3-bf3f-531b10257db4",
      "name": "Should scrape more?",
      "type": "n8n-nodes-base.if",
      "position": [
        1380,
        -100
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "707d2bae-e834-478b-a4f6-9e6bbfa47530",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $runIndex }}",
              "rightValue": "={{ $('Unify params').first().json.Depth - 1 }}"
            },
            {
              "id": "cc763610-f775-4dcb-ae29-a3235b011b75",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Number($('Unify params').first().json.Depth) }}",
              "rightValue": 1
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "239b2a02-bd66-4805-8ad3-b4ef6daa5e60",
      "name": "Read scraped webpages",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1580,
        -175
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create Spreadsheet').first().json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Spreadsheet').first().json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "029d7de1-9043-424e-9c22-aed436436e6a",
      "name": "Retrieve links to scrape",
      "type": "n8n-nodes-base.airtop",
      "position": [
        1800,
        -175
      ],
      "parameters": {
        "url": "={{ $json.URL }}",
        "prompt": "Extract the list of links that lead to other pages in the same domain",
        "resource": "extraction",
        "operation": "query",
        "sessionMode": "new",
        "additionalFields": {
          "outputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"internal_links\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"description\": \"A URL that leads to another page within the airtop.ai domain\"\n      },\n      \"description\": \"A list of URLs that lead to other pages within the airtop.ai domain\"\n    }\n  },\n  \"required\": [\n    \"internal_links\"\n  ],\n  \"additionalProperties\": false,\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n}"
        }
      },
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "57f2a3ee-40c9-4e72-99f4-739fff04667a",
      "name": "Filter links to insert to Sheets",
      "type": "n8n-nodes-base.code",
      "position": [
        2020,
        -180
      ],
      "parameters": {
        "jsCode": "const modelResponse = $('Retrieve links to scrape').first().json.data.modelResponse;\nconst containsString = $('Unify params').first().json[\"Links must contain\"];\nconst parsed = JSON.parse(modelResponse);\nconst links = [...new Set(parsed.internal_links)]; \nconst sheetsLinks = $input.all().map(item => item.json.URL)\nlet response; \n\nif(containsString === \"\"){\n  response = links\n    .map(item =>(\n        { json: { link: item.split('?')[0] } }\n    ))\n} else {\n  response = links\n    .map(item =>\n      item.includes(containsString)\n        ? { json: { link: item.split('?')[0] } }\n        : null\n    )\n    .filter(item => item !== null);\n}\nconst dedupeBetweenSheetsAndModel = response.filter(item => !sheetsLinks.includes(item.json.link));\nconst deduped = [...new Map(dedupeBetweenSheetsAndModel.map(item => [item.json.link, item])).values()]\nreturn deduped\n"
      },
      "typeVersion": 2
    },
    {
      "id": "6a0f20e8-df45-4799-8162-21d427e19e49",
      "name": "Insert new links",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2240,
        -175
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.link }}"
          },
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scraped",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Scraped",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create Spreadsheet').first().json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Spreadsheet').first().json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "9433ab9e-b562-4aa3-a311-ae2a355ce774",
      "name": "Scrape webpage1",
      "type": "n8n-nodes-base.airtop",
      "position": [
        2460,
        -175
      ],
      "parameters": {
        "url": "={{ $json.URL }}",
        "resource": "extraction",
        "operation": "scrape",
        "sessionMode": "new"
      },
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "704c25cf-b690-492d-a759-7b24a870edf4",
      "name": "Update with new scraped content",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        2680,
        -175
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "=-------------------------  \n{{ $json.data.modelResponse.scrapedContent.text }}\n-------------------------",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $('Create Google Docs').first().json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "14f1465d-3d7d-4b7a-87d2-2552b9514e37",
      "name": "Flag scraped link",
      "type": "n8n-nodes-base.set",
      "position": [
        2900,
        -175
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "72c9cd92-fd01-4339-b9fe-52477b691df3",
              "name": "URL",
              "type": "string",
              "value": "={{ $('Insert new links').item.json.URL }}"
            },
            {
              "id": "a817116e-6ae5-4e0a-b210-4fd27f5a455a",
              "name": "Scraped",
              "type": "string",
              "value": "={{ $runIndex }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "364513e7-39c0-47af-83bd-475ffb0ae2a0",
      "name": "Insert flag",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3120,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $('Insert new links').item.json.URL }}"
          },
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scraped",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Scraped",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create Spreadsheet').first().json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Spreadsheet').first().json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "bd799398-e6c6-4cd4-a8a9-d189acabb194",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        -220
      ],
      "parameters": {
        "width": 660,
        "height": 280,
        "content": "## Create Spreadsheet\nCreate a spreadsheet to track all the links found on the webpage."
      },
      "typeVersion": 1
    },
    {
      "id": "7a5aeddd-9c0f-4ea2-8452-35dd14e6963a",
      "name": "Create Spreadsheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        40,
        -100
      ],
      "parameters": {
        "title": "=Site map -  {{ $json[\"Seed url\"] }} (Depth - {{ $json.Depth }})",
        "options": {},
        "resource": "spreadsheet"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "19a6c42b-8be5-4599-bc60-99f0b09e3623",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        -220
      ],
      "parameters": {
        "color": 4,
        "width": 180,
        "height": 280,
        "content": "## Scrape webpage"
      },
      "typeVersion": 1
    },
    {
      "id": "5de141f9-9e1e-4159-8611-06d23ee7b476",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        -220
      ],
      "parameters": {
        "width": 440,
        "height": 280,
        "content": "## Create Doc\nCreate a document to store all the information scraped from the webpage."
      },
      "typeVersion": 1
    },
    {
      "id": "a9108190-01d9-4c9a-a7b0-9ea582026acb",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1320,
        -280
      ],
      "parameters": {
        "width": 1980,
        "height": 380,
        "content": "## Recursive Scraping Process\nReads a list of URLs from a Google Sheet, scrapes each page, saves the content to a doc, and adds new links back to the sheet. Repeats the process for each depth level, up to the defined scraping depth minus one."
      },
      "typeVersion": 1
    },
    {
      "id": "bec8b412-51e1-45df-95b5-ae4e4aeb1fc2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1160,
        -540
      ],
      "parameters": {
        "color": 7,
        "width": 660,
        "height": 940,
        "content": "README\n# Recursive Web Scraping \n\n## Use Case  \nAutomating web scraping with recursive depth is ideal for collecting content across multiple linked pages\u2014perfect for content aggregation, lead generation, or research projects.\n\n## What This Automation Does  \nThis automation reads a list of URLs from a Google Sheet, scrapes each page, stores the content in a document, and adds newly discovered links back to the sheet. It continues this process for a specified number of iterations based on the defined scraping depth.\n\n### Input Parameters:\n- `Seed URL`: The starting URL to begin the scraping process.  \n  Example: `https://example.com/`\n- `Links must contain`: Restricts the links to those that contain this specified string.  \n  Example: `https://example.com/`\n- `Depth`: The number of iterations (layers of links) to scrape beyond the initial set.  \n  Example: `3`\n\n## How It Works  \n1. Starts by reading the `Seed URL` from the Google Sheet.\n2. Scrapes each page and saves its content to the specified document.\n3. Extracts new links from each page that match the `Links must contain` string, appends them to the Google Sheet.\n4. Repeats steps 2\u20133 for the number of times specified by `Depth - 1`.\n\n## Setup Requirements  \n1. [Airtop API Key](https://portal.airtop.ai/api-keys) \u2014 free to generate.  \n2. Credentials set up for Google Docs (requires creating a project on Google Console). Read [how to](https://docs.n8n.io/integrations/builtin/credentials/google/).  \n3. Credentials set up for Google Spreadsheet.\n\n## Next Steps  \n- **Add Filtering Rules**: Filter which links to follow based on domain, path, or content type.  \n- **Combine with Scheduler**: Run this automation on a schedule to continuously explore newly discovered pages.  \n- **Export Structured Data**: Extend the process to store extracted data in a CSV or database for analysis.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ef3cfdbf-bd61-4452-bad0-d0154bbd893b",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -400,
        0
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "Seed url"
            },
            {
              "name": "Links must contain"
            },
            {
              "name": "Depth",
              "type": "number"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "16d54958-18b6-497f-af9e-5953a39ae0bb",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -440,
        -300
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "## Input Parameters\nRun this workflow using a form or from another workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "99cc34ec-37eb-423a-9cc5-7c1b7736d352",
      "name": "Unify params",
      "type": "n8n-nodes-base.set",
      "position": [
        -180,
        -100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "18e3200c-ab2a-44da-b401-eace47a3ccc0",
              "name": "Seed url",
              "type": "string",
              "value": "={{ $json[\"Seed url\"] }}"
            },
            {
              "id": "cb21aa86-bf75-427f-bf07-70d4f2d83894",
              "name": "Links must contain",
              "type": "string",
              "value": "={{ $json[\"Links must contain\"] }}"
            },
            {
              "id": "80bb934f-816d-43f0-9432-170047fa02a3",
              "name": "Depth",
              "type": "number",
              "value": "={{ $json.Depth }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "dffadb4b-7c72-42ec-802c-26d4f96b5ec7",
  "connections": {
    "Insert flag": {
      "main": [
        [
          {
            "node": "Should scrape more?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Unify params": {
      "main": [
        [
          {
            "node": "Create Spreadsheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape webpage": {
      "main": [
        [
          {
            "node": "Create Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape webpage1": {
      "main": [
        [
          {
            "node": "Update with new scraped content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert new links": {
      "main": [
        [
          {
            "node": "Scrape webpage1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Flag scraped link": {
      "main": [
        [
          {
            "node": "Insert flag",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Google Docs": {
      "main": [
        [
          {
            "node": "Write scraped content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Spreadsheet": {
      "main": [
        [
          {
            "node": "Info to upload into spreadsheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Unify params",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Should scrape more?": {
      "main": [
        [
          {
            "node": "Read scraped webpages",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Read scraped webpages": {
      "main": [
        [
          {
            "node": "Retrieve links to scrape",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write scraped content": {
      "main": [
        [
          {
            "node": "Should scrape more?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load info to spreadsheet": {
      "main": [
        [
          {
            "node": "Scrape webpage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve links to scrape": {
      "main": [
        [
          {
            "node": "Filter links to insert to Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Info to upload into spreadsheet": {
      "main": [
        [
          {
            "node": "Load info to spreadsheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update with new scraped content": {
      "main": [
        [
          {
            "node": "Flag scraped link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter links to insert to Sheets": {
      "main": [
        [
          {
            "node": "Insert new links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Unify params",
            "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.

Pro

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

About this workflow

Automating web scraping with recursive depth is ideal for collecting content across multiple linked pages—perfect for content aggregation, lead generation, or research projects.

Source: https://n8n.io/workflows/4252/ — 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

This workflow turns contract process into a fully automated, production-ready signing pipeline.

Form Trigger, Google Sheets, Form +3
Data & Sheets

This workflow automates video distribution to 9 social platforms simultaneously using Blotato's API. It includes both a scheduled publisher (checks Google Sheets for videos marked "Ready") and a subwo

Google Sheets, HTTP Request, Form Trigger +2
Data & Sheets

Ultimate Extract by RoboNuggets (R46). Uses @apify/n8n-nodes-apify, googleSheets, formTrigger. Event-driven trigger; 42 nodes.

@Apify/N8N Nodes Apify, Google Sheets, Form Trigger
Data & Sheets

Overview 🌐

Form Trigger, HTTP Request, Google Sheets
Data & Sheets

Supercharge your insurance agency's efficiency with this powerful automation template for n8n. Designed specifically for commercial insurance brokers and agents, this workflow transforms the tedious p

Email Send, Google Sheets, Google Docs +1