
Competitor Price & Feature Tracker for Real Estate Projects
Description
Categories
📢 Marketing
Nodes Used
n8n-nodes-base.ifn8n-nodes-base.cronn8n-nodes-base.waitn8n-nodes-base.functionn8n-nodes-base.emailSendn8n-nodes-base.stickyNoten8n-nodes-base.httpRequestn8n-nodes-base.googleSheets
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
"id": "azsNX19ORoakJxeu",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Competitor Price & Feature Tracker for Real Estate Projects",
"tags": [],
"nodes": [
{
"id": "8ac2caf3-a568-499c-b19c-c8bda3aec69c",
"name": "Cron",
"type": "n8n-nodes-base.cron",
"position": [
-1100,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6c9875ce-1e1a-4720-ae4b-18d9f0b8f8c0",
"name": "Fetch Competitor Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
-880,
0
],
"parameters": {
"url": "={{$node['Cron'].parameter['cronExpression'] === '0 0 * * *' ? 'https://api.competitor1.com/projects' : 'https://api.competitor2.com/projects'}}",
"options": {
"timeout": 10000
}
},
"typeVersion": 1
},
{
"id": "4ca2aabd-5816-42bc-a3e3-4d584031c4fe",
"name": "Parse Data",
"type": "n8n-nodes-base.function",
"position": [
-440,
0
],
"parameters": {
"functionCode": "return items.map(item => {\n const project = item.json;\n return {\n json: {\n projectName: project.name,\n price: project.price,\n features: project.features || [],\n location: project.location,\n timestamp: new Date().toISOString()\n }\n };\n});"
},
"typeVersion": 1
},
{
"id": "d4fa57e7-ffe7-43f9-aa13-b9e1dbb1d981",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-220,
0
],
"parameters": {
"range": "CompetitorData!A:E",
"options": {},
"sheetId": "your-google-sheet-id",
"operation": "append"
},
"credentials": {
"googleApi": {
"id": "ScSS2KxGQULuPtdy",
"name": "Google Sheets- test"
}
},
"typeVersion": 1
},
{
"id": "88731364-e054-42cb-96e8-8bc4b9a016cf",
"name": "Check Price Change",
"type": "n8n-nodes-base.if",
"position": [
0,
0
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$node['Parse Data'].json['price']}}",
"value2": "={{$node['Parse Data'].json['previousPrice'] || $node['Parse Data'].json['price']}}",
"operation": "changed"
}
]
}
},
"typeVersion": 1
},
{
"id": "a1bd7b91-8b15-4d6c-9050-b76e0de6360d",
"name": "Wait For Data",
"type": "n8n-nodes-base.wait",
"position": [
-660,
0
],
"webhookId": "a2be8134-31cb-4389-b64c-196407193c48",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "8a366005-3e4f-4133-9607-4b3a47d85632",
"name": "Send Alert Email",
"type": "n8n-nodes-base.emailSend",
"position": [
220,
0
],
"webhookId": "958ddeb2-39ed-435f-b78e-aea27092b475",
"parameters": {
"text": "=🏠 Price Change Alert: {{$node['Parse Data'].json['projectName']}} at {{$node['Parse Data'].json['location']}} changed from {{$node['Parse Data'].json['previousPrice'] || 'N/A'}} to {{$node['Parse Data'].json['price']}}. Features: {{$node['Parse Data'].json['features'].join(', ')}}",
"options": {},
"subject": "Price Change Alert",
"toEmail": "[email protected]",
"fromEmail": "[email protected]",
"emailFormat": "text"
},
"credentials": {
"smtp": {
"id": "G1kyF8cSWTZ4vouN",
"name": "SMTP -test"
}
},
"typeVersion": 2.1
},
{
"id": "32be80e1-6174-4860-98be-a350162405c2",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
-520
],
"parameters": {
"color": 4,
"width": 960,
"height": 420,
"content": "## Operational Process\n- **Set Cron**: Triggers the workflow on a scheduled basis (e.g., hourly).\n- **Fetch Competitor Data**: Performs GET requests to retrieve competitor pricing and feature data (e.g., https://api.competitor.com).\n- **Wait For Data**: Introduces a delay to ensure data is fully retrieved.\n- **Parse Data**: Processes and extracts relevant pricing and feature details.\n- **Log to Google Sheets**: Appends the parsed data to a Google Sheet for tracking.\n- **Check Price Change**: Evaluates if there’s a significant price change.\n- **Send Alert Email**: Sends an email notification if a price change is detected.\n- **No Action for Minor Changes**: Skips action if no significant price change is found.\n\n\n## Customization Options\n- Adjust the Cron schedule for different intervals (e.g., daily).\n- Modify the HTTP node to fetch additional competitor data (e.g., features, availability).\n- Customize email alert content in the `Send Alert Email` node.\n- Enhance Google Sheets log with additional fields (e.g., timestamp, competitor name).\n- Add Slack or WhatsApp notifications for additional alert channels."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "113728ef-35f9-4b06-8ef3-9c95ca42aeb2",
"connections": {
"Cron": {
"main": [
[
{
"node": "Fetch Competitor Data",
"type": "main",
"index": 0
}
]
]
},
"Parse Data": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Wait For Data": {
"main": [
[
{
"node": "Parse Data",
"type": "main",
"index": 0
}
]
]
},
"Check Price Change": {
"main": [
[
{
"node": "Send Alert Email",
"type": "main",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Check Price Change",
"type": "main",
"index": 0
}
]
]
},
"Fetch Competitor Data": {
"main": [
[
{
"node": "Wait For Data",
"type": "main",
"index": 0
}
]
]
}
}
}