BuiltWith를 Google Sheets로
중급
이것은Marketing분야의자동화 워크플로우로, 10개의 노드를 포함합니다.주로 Code, HttpRequest, GoogleSheets, ManualTrigger 등의 노드를 사용하며. BuiltWith에서 데이터를 내보내고 Google Sheets에 기술 스택 데이터 정리
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "jpviET9waC9J5cmy",
"meta": {
"instanceId": "84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db",
"templateCredsSetupCompleted": true
},
"name": "BuiltWith To Google Sheets",
"tags": [],
"nodes": [
{
"id": "b91b2e44-7fa5-44ce-a328-e6416bc6aed9",
"name": "수동 트리거",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "014ab620-9f80-40af-85ba-13a606021bfa",
"name": "Google 시트에서 도메인 읽기",
"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": "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": "기술 스택 정보 추출",
"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": "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": "스티커 노트",
"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": "스티커 노트1",
"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": "스티커 노트2",
"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": "스티커 노트9",
"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": "스티커 노트4",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 마케팅
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
CrunchBase 투자자 데이터
자동화投资者情报:CrunchBase로Google Sheets데이터采集器
Code
Http Request
Google Sheets
+
Code
Http Request
Google Sheets
8 노드Yaron Been
금융
AI YouTube 분석 어시스턴트: 댓글 분석 및 인사이트 리포트
AI YouTube 분석 어시스턴트: 댓글 분석기 및 인사이트 리포트 생성기
If
Set
Code
+
If
Set
Code
19 노드Yaron Been
인공지능
GPT-4를 사용한 LinkedIn 게시물 자동 생성 및 프로필/그룹에 배포
GPT-4로 LinkedIn 게시물 자동 생성 및 프로필, 그룹에 배포
If
Code
Limit
+
If
Code
Limit
14 노드Yaron Been
인공지능
Bright Data와 LLMs로 대규모 초개인화 아웃리치 자동화
Bright Data 및 대규모 언어 모델을 통한 대규모 초개인화 아웃리치 자동화
If
Set
Wait
+
If
Set
Wait
21 노드Yaron Been
영업
CrunchBase 경쟁사 추적
자동 경쟁사 인텔리전스: CrunchBase에서 ClickUp으로의 추적 워크플로
Set
Code
Click Up
+
Set
Code
Click Up
9 노드Yaron Been
마케팅
Crunchbase 자금 조달 라운드
CrunchBase에서 Google 스프레드시트로의 자동 자금 조달 인텔리전스 추적 워크플로
Code
Http Request
Google Sheets
+
Code
Http Request
Google Sheets
8 노드Yaron Been
마케팅
워크플로우 정보
난이도
중급
노드 수10
카테고리1
노드 유형5
저자
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
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유