BuiltWith a Google Sheets
Este es unMarketingflujo de automatización del dominio deautomatización que contiene 10 nodos.Utiliza principalmente nodos como Code, HttpRequest, GoogleSheets, ManualTrigger. Exportar y organizar datos de la pila tecnológica de BuiltWith a Google Sheets
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
Nodos utilizados (10)
Categoría
{
"id": "jpviET9waC9J5cmy",
"meta": {
"instanceId": "84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db",
"templateCredsSetupCompleted": true
},
"name": "BuiltWith To Google Sheets",
"tags": [],
"nodes": [
{
"id": "b91b2e44-7fa5-44ce-a328-e6416bc6aed9",
"name": "Activador Manual",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "014ab620-9f80-40af-85ba-13a606021bfa",
"name": "Leer Dominios desde Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
220,
0
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit?usp=drivesdk",
"cachedResultName": "BuiltWith Domain"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Rp7XiR3hxJfv03ZO",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "07215599-c91a-474c-935f-c94c34e8b9b9",
"name": "Obtener detalles mediante BuiltWith",
"type": "n8n-nodes-base.httpRequest",
"position": [
480,
0
],
"parameters": {
"url": "https://api.builtwith.com/v21/api.json",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "KEY",
"value": "YOUR_API_KEY"
},
{
"name": "LOOKUP",
"value": "={{ $json.Domain }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "49ec52b1-5f97-4871-ac6c-564fa444b7ec",
"name": "Extraer Información del Stack Tecnológico",
"type": "n8n-nodes-base.code",
"position": [
700,
0
],
"parameters": {
"jsCode": "const result = $json.Results?.[0];\nconst domain = result?.Lookup || null;\nconst path = result?.Result?.Paths?.[0];\nconst url = path?.Url || null;\n\nlet extracted = null;\n\n// Loop through Groups to find the first available Tech entry\nfor (const group of path?.Groups || []) {\n const category = group.Name;\n const tech = group.Tech?.[0];\n \n if (tech) {\n extracted = {\n Technology: tech.Name,\n Category: category,\n \"First Detected\": tech.FirstDetected,\n \"Last Detected\": tech.LastDetected,\n Domain: domain,\n URL: url\n };\n break; // Stop after first match\n }\n}\n\nreturn extracted ? [extracted] : [];\n"
},
"typeVersion": 2
},
{
"id": "e2b7063b-614f-4ded-a883-bffc4bcb6c3c",
"name": "Actualizar Hoja Google",
"type": "n8n-nodes-base.googleSheets",
"position": [
1020,
0
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.URL }}",
"Category": "={{ $json.Category }}",
"Technology": "={{ $json.Technology }}",
"row_number": "={{ $('Read Domains from Google Sheets').item.json.row_number }}",
"Last Detected": "={{ $json[\"Last Detected\"] }}",
"First Detected": "={{ $json[\"First Detected\"] }}"
},
"schema": [
{
"id": "Domain",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Technology",
"type": "string",
"display": true,
"required": false,
"displayName": "Technology",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Detected",
"type": "string",
"display": true,
"required": false,
"displayName": "First Detected",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Detected",
"type": "string",
"display": true,
"required": false,
"displayName": "Last Detected",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"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": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hs9LcBpC-kaGgD_QjkkqBEJzDeAd85RW_L1fXTYEdCA/edit?usp=drivesdk",
"cachedResultName": "BuiltWith Domain"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Rp7XiR3hxJfv03ZO",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "11d4cd39-98d4-4b0f-8159-035bac593f39",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-800
],
"parameters": {
"color": 6,
"width": 420,
"height": 1000,
"content": "## 🧩 **Section 1: Input Collection**\n\n📄➡️📤\n**Nodes:**\n\n* `🖱️ Manual Trigger`\n* `📗 Read Domains from Google Sheets`\n\n---\n\n### 🔹 What it does:\n\n* The workflow starts **when you click \"Test workflow\"** (manual trigger). This is useful for testing before setting up a schedule.\n* Then it connects to a **Google Sheet**, which contains a list of domains (e.g., `webflow.com`, `shopify.com`) you want to analyze.\n\n### 📚 How it works:\n\n* You’ve connected your Google Sheets account.\n* It reads all rows from a specific sheet (e.g., a tab called `Domains`).\n* Each row should include at least one column like `Domain`.\n\n### 💡 Beginner Tips:\n\n* Want to analyze other domains? Just paste them into the Google Sheet.\n* You can automate this by replacing the manual trigger with a `Cron` node to run every day, week, or month.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "e8ec39a6-ac8e-40ab-abc6-835600ef9c09",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-900
],
"parameters": {
"color": 7,
"width": 440,
"height": 1100,
"content": "## 🌍 **Section 2: Tech Stack Lookup**\n\n🔍🌐➡️🧠\n**Nodes:**\n\n* `🌐 Fetch Tech Stack from BuiltWith`\n* `🧠 Extract Tech Stack Info (Function node)`\n\n---\n\n### 🔹 What it does:\n\n* For each domain, it sends an HTTP GET request to the **BuiltWith API** to fetch that site's detected technologies.\n* The **Code (Function)** node then parses the complex response and extracts only what you care about:\n\n * `Technology` 🛠️\n * `Category` 📦\n * `First Detected` 🕐\n * `Last Detected` ⌛\n * `Domain` 🌐\n * `URL` 🔗\n\n### 🧠 How it works:\n\n* BuiltWith returns a rich JSON structure with all detected tech.\n* Your function loops through it and pulls **just one matching technology** per domain (to keep it simple).\n* This makes it easy to update a single row in your sheet.\n\n### 💡 Beginner Tips:\n\n* Want **all technologies** per domain? Modify the function to return multiple results per input.\n* Make sure to handle **API limits** if you’re processing many domains—add delays using the `Wait` node if needed.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "926c3af0-de90-43a9-a2c8-efe838548e09",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
900,
-780
],
"parameters": {
"color": 5,
"width": 360,
"height": 980,
"content": "# 📊 **Section 3: Output to Google Sheets**\n\n📥📝\n**Node:**\n\n* `📗 Update Google Sheet with Tech Stack`\n\n---\n\n### 🔹 What it does:\n\n* Takes the extracted data and **writes it back to the original sheet**.\n* Fills in columns like:\n\n * `Technology`\n * `Category`\n * `First Detected`\n * `Last Detected`\n\n### ✍️ How it works:\n\n* It matches the correct row using something like a `row_number` or primary key.\n* Then it updates that row with the extracted tech stack info.\n\n"
},
"typeVersion": 1
},
{
"id": "e00e4ddd-e314-4562-9f3f-df18bb27949a",
"name": "Nota Adhesiva9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1620,
-800
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "28a6ebbd-74ad-47f4-9ad8-354b68316953",
"name": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1620,
-460
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2818,
"content": "## ⚙️ **Workflow Overview: Scrape BuiltWith Tech Data into Google Sheets**\n\nThis automation does three main things:\n\n1. 📥 **Reads domains from Google Sheets**\n2. 🌐 **Fetches tech stack data from BuiltWith**\n3. 📤 **Updates Google Sheets with the results**\n\n---\n\n## 🧩 **Section 1: Input Collection**\n\n📄➡️📤\n**Nodes:**\n\n* `🖱️ Manual Trigger`\n* `📗 Read Domains from Google Sheets`\n\n---\n\n### 🔹 What it does:\n\n* The workflow starts **when you click \"Test workflow\"** (manual trigger). This is useful for testing before setting up a schedule.\n* Then it connects to a **Google Sheet**, which contains a list of domains (e.g., `webflow.com`, `shopify.com`) you want to analyze.\n\n### 📚 How it works:\n\n* You’ve connected your Google Sheets account.\n* It reads all rows from a specific sheet (e.g., a tab called `Domains`).\n* Each row should include at least one column like `Domain`.\n\n### 💡 Beginner Tips:\n\n* Want to analyze other domains? Just paste them into the Google Sheet.\n* You can automate this by replacing the manual trigger with a `Cron` node to run every day, week, or month.\n\n---\n\n## 🌍 **Section 2: Tech Stack Lookup**\n\n🔍🌐➡️🧠\n**Nodes:**\n\n* `🌐 Fetch Tech Stack from BuiltWith`\n* `🧠 Extract Tech Stack Info (Function node)`\n\n---\n\n### 🔹 What it does:\n\n* For each domain, it sends an HTTP GET request to the **BuiltWith API** to fetch that site's detected technologies.\n* The **Code (Function)** node then parses the complex response and extracts only what you care about:\n\n * `Technology` 🛠️\n * `Category` 📦\n * `First Detected` 🕐\n * `Last Detected` ⌛\n * `Domain` 🌐\n * `URL` 🔗\n\n### 🧠 How it works:\n\n* BuiltWith returns a rich JSON structure with all detected tech.\n* Your function loops through it and pulls **just one matching technology** per domain (to keep it simple).\n* This makes it easy to update a single row in your sheet.\n\n### 💡 Beginner Tips:\n\n* Want **all technologies** per domain? Modify the function to return multiple results per input.\n* Make sure to handle **API limits** if you’re processing many domains—add delays using the `Wait` node if needed.\n\n---\n\n## 📊 **Section 3: Output to Google Sheets**\n\n📥📝\n**Node:**\n\n* `📗 Update Google Sheet with Tech Stack`\n\n---\n\n### 🔹 What it does:\n\n* Takes the extracted data and **writes it back to the original sheet**.\n* Fills in columns like:\n\n * `Technology`\n * `Category`\n * `First Detected`\n * `Last Detected`\n\n### ✍️ How it works:\n\n* It matches the correct row using something like a `row_number` or primary key.\n* Then it updates that row with the extracted tech stack info.\n\n### 💡 Beginner Tips:\n\n* Add more columns like `Confidence`, `Data Source`, or `Notes` if you want to enrich your research.\n* Use this sheet for:\n\n * 💼 Lead qualification\n * 📊 Market analysis\n * 🚀 Tech product targeting\n\n---\n\n## 🎯 Final Thoughts\n\n🔁 This automation turns a **manual and tedious research task** into a repeatable, scalable, and accurate process. By connecting **Google Sheets + BuiltWith + n8n**, you can:\n\n✅ Automatically analyze websites\n✅ Store structured data for marketing or sales\n✅ Scale your intelligence gathering with just a few clicks\n\n---\n\n\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {
"Fetch detail via BuiltWith": [
{
"json": {
"Results": [
{
"Lookup": "webflow.com",
"Result": {
"Paths": [
{
"Url": "http://webflow.com",
"Groups": [
{
"Name": "Web Hosting Providers",
"Tech": [
{
"Name": "Amazon Web Services",
"LastDetected": "2025-06-06",
"FirstDetected": "2022-01-10"
}
]
},
{
"Name": "JavaScript Libraries",
"Tech": [
{
"Name": "React",
"LastDetected": "2025-06-06",
"FirstDetected": "2021-05-01"
},
{
"Name": "jQuery",
"LastDetected": "2024-12-01",
"FirstDetected": "2020-09-15"
}
]
}
]
}
]
}
}
]
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "f2928e0a-050f-4b50-b11b-7435cc08265c",
"connections": {
"b91b2e44-7fa5-44ce-a328-e6416bc6aed9": {
"main": [
[
{
"node": "014ab620-9f80-40af-85ba-13a606021bfa",
"type": "main",
"index": 0
}
]
]
},
"49ec52b1-5f97-4871-ac6c-564fa444b7ec": {
"main": [
[
{
"node": "e2b7063b-614f-4ded-a883-bffc4bcb6c3c",
"type": "main",
"index": 0
}
]
]
},
"07215599-c91a-474c-935f-c94c34e8b9b9": {
"main": [
[
{
"node": "49ec52b1-5f97-4871-ac6c-564fa444b7ec",
"type": "main",
"index": 0
}
]
]
},
"014ab620-9f80-40af-85ba-13a606021bfa": {
"main": [
[
{
"node": "07215599-c91a-474c-935f-c94c34e8b9b9",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Intermedio - Marketing
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Yaron Been
@yaron-nofluffBuilding AI Agents and Automations | Growth Marketer | Entrepreneur | Book Author & Podcast Host If you need any help with Automations, feel free to reach out via linkedin: https://www.linkedin.com/in/yaronbeen/ And check out my Youtube channel: https://www.youtube.com/@YaronBeen/videos
Compartir este flujo de trabajo