Zillowの不動産データをScrape.doでGoogle Sheetsに抽出
中級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、6個のノードを含みます。主にIf, Code, HttpRequest, GoogleSheets, ManualTriggerなどのノードを使用。 Scrape.doでZillowの不動産データをGoogle Sheetsに抽出
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "02e782574ebb30fbddb2c3fd832c946466d718819d25f6fe4b920124ff3fc2c1",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1562d037-9fa3-488f-a5e5-5aceaba3d3a1",
"name": "'Test workflow'クリック時",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-160,
-160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "873e06bf-4862-4d40-9b77-f08f1cf889c3",
"name": "Google SheetsからZillowのURLを読み取る",
"type": "n8n-nodes-base.googleSheets",
"position": [
64,
-160
],
"parameters": {
"options": {
"returnFirstMatch": false
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit#gid=0",
"cachedResultName": "URLs"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit?usp=drivesdk",
"cachedResultName": "outcome"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "mXr7C0bnwDQsB9Pd",
"name": "VisaTrack Sheets"
}
},
"typeVersion": 4.5
},
{
"id": "9dc0d92a-e56f-4b83-9dc5-986507a17eaf",
"name": "Scrape.do経由でZillow URLをスクレイピング",
"type": "n8n-nodes-base.httpRequest",
"position": [
288,
-160
],
"parameters": {
"url": "={{ \"https://api.scrape.do/?url=\" + encodeURIComponent($json.URLs) + \"&super=true\" }}",
"options": {
"timeout": 120000,
"redirect": {
"redirect": {
"followRedirects": false
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "HvTIKFnwg8rzo3iP",
"name": "Query Auth account 2"
}
},
"typeVersion": 4.2
},
{
"id": "a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2",
"name": "Zillowデータを解析",
"type": "n8n-nodes-base.code",
"position": [
512,
-160
],
"parameters": {
"jsCode": "// Parse HTML and extract Zillow property data\nconst item = $input.first();\n\n// Get HTML from Scrape.do response\nconst html = item.json.data || item.json.body || item.json;\n\n// Skip if no HTML content\nif (!html || typeof html !== 'string') {\n return [];\n}\n\n// Get the original URL\nconst originalUrl = $('Read Zillow URLs from Google Sheets').first().json.URLs || 'N/A';\n\n// Extract Price - improved regex\nlet price = 'N/A';\n// Try multiple patterns\nconst pricePattern1 = html.match(/data-testid=\"price\"[^>]*>\\s*\\$?([0-9,]+)\\s*</)\nconst pricePattern2 = html.match(/\"price\"[^}]*\"value\"\\s*:\\s*\"?\\$?([0-9,]+)\"?/)\nconst pricePattern3 = html.match(/\\$([0-9]{3},[0-9]{3}(?:,[0-9]{3})?)(?!\\d)/)\n\nif (pricePattern1) {\n price = '$' + pricePattern1[1].trim();\n} else if (pricePattern2) {\n price = '$' + pricePattern2[1].trim();\n} else if (pricePattern3) {\n price = pricePattern3[0].trim();\n}\n\n// Extract Address, City, and State\nlet street = 'N/A';\nlet city = 'N/A';\nlet state = 'N/A';\n\nconst addressMatch = html.match(/(\\d+\\s+[^,]+),\\s*([^,]+),\\s*(\\w{2})\\s+\\d{5}/);\nif (addressMatch) {\n street = addressMatch[1].trim();\n city = addressMatch[2].trim();\n state = addressMatch[3].trim();\n}\n\n// Extract Days on Zillow\nlet daysOnZillow = 'N/A';\nconst daysMatch = html.match(/(\\d+)\\s+days?\\s*on\\s+Zillow/i);\nif (daysMatch) {\n daysOnZillow = daysMatch[1];\n}\n\n// Extract Zestimate\nlet zestimate = 'N/A';\nconst zestimateMatch = html.match(/\\$[\\d,]+(?=\\s*Zestimate)/);\nif (zestimateMatch) {\n zestimate = zestimateMatch[0];\n}\n\n// Return ONLY structured data\nreturn [{\n json: {\n URL: originalUrl,\n Price: price,\n Address: street,\n City: city,\n State: state,\n 'Days on Zillow': daysOnZillow,\n Zestimate: zestimate,\n 'Scraped At': new Date().toISOString()\n }\n}];"
},
"typeVersion": 2
},
{
"id": "436fbea1-b770-4ef3-8995-c79c6adf46a1",
"name": "結果をGoogle Sheetsに書き込む",
"type": "n8n-nodes-base.googleSheets",
"position": [
720,
-160
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "data",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2048497939,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit#gid=2048497939",
"cachedResultName": "Outcome"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit?usp=drivesdk",
"cachedResultName": "outcome"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "mXr7C0bnwDQsB9Pd",
"name": "VisaTrack Sheets"
}
},
"typeVersion": 4.5
},
{
"id": "00a73a1f-faf5-421e-abc4-a75b2b132c4a",
"name": "スクレイピングの成功を確認",
"type": "n8n-nodes-base.if",
"position": [
288,
32
],
"parameters": {
"options": {},
"conditions": {
"string": [
{
"value1": "={{ $json.statusCode }}",
"value2": "200",
"operation": "equals"
}
]
}
},
"typeVersion": 2
}
],
"pinData": {},
"connections": {
"a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2": {
"main": [
[
{
"node": "436fbea1-b770-4ef3-8995-c79c6adf46a1",
"type": "main",
"index": 0
}
]
]
},
"00a73a1f-faf5-421e-abc4-a75b2b132c4a": {
"main": [
[
{
"node": "a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2",
"type": "main",
"index": 0
}
]
]
},
"1562d037-9fa3-488f-a5e5-5aceaba3d3a1": {
"main": [
[
{
"node": "873e06bf-4862-4d40-9b77-f08f1cf889c3",
"type": "main",
"index": 0
}
]
]
},
"9dc0d92a-e56f-4b83-9dc5-986507a17eaf": {
"main": [
[
{
"node": "00a73a1f-faf5-421e-abc4-a75b2b132c4a",
"type": "main",
"index": 0
}
]
]
},
"873e06bf-4862-4d40-9b77-f08f1cf889c3": {
"main": [
[
{
"node": "9dc0d92a-e56f-4b83-9dc5-986507a17eaf",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
LinkedInコンテンツファクトリー(OpenAI研究とブランド画像生成機能付き)
LinkedInコンテンツファクトリー、OpenAIリサーチとReplicateのブランド画像生成を統合
If
Set
Code
+
If
Set
Code
23 ノードOnur
ソーシャルメディア
応募者追跡の自動化
GPT-4.1で履歴書の解析、Google SpreadsheetとGmailを組み合わせて応募者追跡の自動化
If
Code
Gmail
+
If
Code
Gmail
13 ノードOnur
コンテンツ作成
Shopify で注文後に WhatsApp での感謝メッセージ+ロイヤリティクーポン自動送信(Rapiwa API を使用)
Rapiwa を使用してShopifyから自動のにWhatsAppで感謝メッセージとロイヤルティクーポンを送信
If
Code
Wait
+
If
Code
Wait
17 ノードSpaGreen Creative
コンテンツ作成
Printifyの自動化 - タイトルと説明を更新 - AlexK1919
GPT-4o-miniによるPrintify向け自動SEO製品タイトル・説明生成
If
Set
Code
+
If
Set
Code
26 ノードAmit Mehta
コンテンツ作成
blog_workflow_template_n8n
Claude AIを使用してニュースから自動のにWordPress記事を生成し、LinkedInに共有
If
Code
Wait
+
If
Code
Wait
23 ノードMarco Venturi
コンテンツ作成
Googleマップデータの抽出
Perplexity AI とメールバリデーションを使って、Googleマップスから potential clients を自動生成
If
Set
Code
+
If
Set
Code
18 ノードAntxon Pous
コンテンツ作成
ワークフロー情報
難易度
中級
ノード数6
カテゴリー2
ノードタイプ5
作成者
Onur
@onurpolat05Hello, I'm Onur I've been working as a freelance software developer for about four years. In addition, I develop my own projects. For some time, I have been improving myself and providing various services related to AI and AI workflows. Both by writing low code and code. If you have any questions, don't hesitate to contact me.
外部リンク
n8n.ioで表示 →
このワークフローを共有