N
n8n Store
Workflow Market
Zillow Property Listing Scraper by Location & Category Using Bright Data API & Google Sheets Integration

Zillow Property Listing Scraper by Location & Category Using Bright Data API & Google Sheets Integration

by incrementorsβ€’0 views

Description

Categories

πŸ€– AI & Machine LearningπŸ“’ Marketing

Nodes Used

n8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.waitn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
  "id": "0eFmaRUQnmJfkcaI",
  "meta": {
    "instanceId": "bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2",
    "templateCredsSetupCompleted": true
  },
  "name": "Zillow Property Listing Scraper by Location & Category Using Bright Data API & Google Sheets Integration",
  "tags": [],
  "nodes": [
    {
      "id": "3ac2c390-45ef-4c40-99ba-7c41e387f88c",
      "name": "πŸ“ Form Trigger - Start Property Search",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -2040,
        620
      ],
      "webhookId": "1485a089-e3a3-4aff-8043-9e2e24a24bad",
      "parameters": {
        "options": {},
        "formTitle": "Zillow Property Search",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Location",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Listing Category",
              "fieldOptions": {
                "values": [
                  {
                    "option": "House for rent"
                  },
                  {
                    "option": "House for sale"
                  }
                ]
              }
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e8976089-8572-45f0-b895-3517bf157801",
      "name": "πŸ“€ Trigger Bright Data Scraping Job",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1800,
        620
      ],
      "parameters": {
        "url": "https://api.brightdata.com/datasets/v3/trigger",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": [\n    {\n      \"location\": \"{{ $json.Location }}\",\n      \"listingCategory\": \"{{ $json['Listing Category'] }}\",\n      \"HomeType\": \"\",\n      \"days_on_zillow\": \"\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "queryParameters": {
          "parameters": [
            {
              "name": "dataset_id",
              "value": "gd_lfqkr8wm13ixtbd8f5"
            },
            {
              "name": "include_errors",
              "value": "true"
            },
            {
              "name": "type",
              "value": "discover_new"
            },
            {
              "name": "discover_by",
              "value": "input_filters"
            },
            {
              "name": "limit_per_input",
              "value": "2"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1a3a3572-b249-4ca0-9b18-0fc2341aea93",
      "name": "Form Submission Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2080,
        545
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 240,
        "content": "Starts workflow when user submits location & category via form"
      },
      "typeVersion": 1
    },
    {
      "id": "902fe79f-8373-4a17-9e6a-a8449bcd48f5",
      "name": "API Trigger Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1850,
        545
      ],
      "parameters": {
        "color": 2,
        "width": 200,
        "height": 240,
        "content": "Sends search request to Bright Data API to trigger Zillow data scraping"
      },
      "typeVersion": 1
    },
    {
      "id": "eea4519d-eaca-4bba-b31b-67c12bdd943b",
      "name": "Status Check Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1610,
        545
      ],
      "parameters": {
        "color": 6,
        "width": 200,
        "height": 240,
        "content": "Monitors scraping job status and waits for completion"
      },
      "typeVersion": 1
    },
    {
      "id": "0992cf05-aa2c-449f-af0f-c4cbd4cb340d",
      "name": "⏳ Check Scraping Job Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1560,
        620
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ce4357aa-e6de-4082-8cef-7cb3aa9727a2",
      "name": "Wait Timer Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        660
      ],
      "parameters": {
        "color": 6,
        "width": 220,
        "height": 220,
        "content": "Waits 1 minute before rechecking scraping job status"
      },
      "typeVersion": 1
    },
    {
      "id": "5be9e5cb-57d3-47db-ba39-543799a1ecad",
      "name": "⏱️ Wait Before Retry",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1100,
        720
      ],
      "webhookId": "7047efad-de41-4608-b95c-d3e0203ef620",
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "60878135-aa34-4b71-98ca-ac9dccc6b7e9",
      "name": "Data Validation Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        420
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 220,
        "content": "Validates if property data was found in scraping results"
      },
      "typeVersion": 1
    },
    {
      "id": "4b6df4c2-c72a-4a29-8077-17332184a038",
      "name": "Data Retrieval Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        400
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "height": 220,
        "content": "Retrieves the actual property data using snapshot ID"
      },
      "typeVersion": 1
    },
    {
      "id": "fc1fcdd3-f3cf-43aa-ac63-bfc5270b3663",
      "name": "πŸ“₯ Fetch Property Listing Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -820,
        460
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b980cf99-85cc-4dd9-9c41-405f20e45827",
      "name": "Google Sheets Save Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        400
      ],
      "parameters": {
        "color": 3,
        "height": 220,
        "content": "Saves the scraped property data to your Google Sheet"
      },
      "typeVersion": 1
    },
    {
      "id": "a9daf529-3b67-4f07-8d55-95af66861baf",
      "name": "πŸ“„ Save Property Data to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -600,
        460
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.hdpUrl }}",
            "City": "={{ $json.city }}",
            "Country": "={{ $json.country }}",
            "Home Type": "={{ $json.homeType }}",
            "Zestimate": "={{ $json.zestimate }}",
            "Year Built": "={{ $json.yearBuilt }}",
            "Agent Phone": "={{ $json.listing_provided_by.phone_number }}",
            "Home Status": "={{ $json.homeStatus }}",
            "School Rating": "={{ $json.schools[0].rating }}",
            "Street Address": "={{ $json.address }}",
            "Interior Details": "={{ $json.interior_full[0].values }}"
          },
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Agent Phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Agent Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Home Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Home Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Street Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Street Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zestimate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Zestimate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "School Rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "School Rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Year Built",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Year Built",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Home Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Home Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interior Details",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Interior Details",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Zillow",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0",
          "cachedResultName": "Zillow"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit",
          "cachedResultName": "Property Data Sheet"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets OAuth2"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "74062322-6e62-40d6-8876-dada77a319fc",
      "name": "βœ… Check If Scraping Complete",
      "type": "n8n-nodes-base.if",
      "position": [
        -1320,
        540
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "35ed620d-b5d5-4e97-bcc5-52b283d85616",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "ready"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "25326b0a-7fb3-4ee5-9d6a-56c2d1d4cf41",
      "name": "πŸ“Š Validate Property Data Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        -1080,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f01bd215-c406-493c-a6e4-2b8ec5686b44",
              "operator": {
                "type": "number",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.records }}",
              "rightValue": "={{ 0 }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3a7c4645-e5e9-4feb-8635-0953b6ae6a6a",
      "name": "Google Sheet Template Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2080,
        300
      ],
      "parameters": {
        "color": 7,
        "width": 280,
        "content": "Sample Google Sheet Template:\nhttps://docs.google.com/spreadsheets/d/SAMPLE_SHEET_ID/edit\n\nMake a copy and update the workflow with your Sheet ID"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1be06750-3f46-4f87-ab33-829b4e8f3079",
  "connections": {
    "⏱️ Wait Before Retry": {
      "main": [
        [
          {
            "node": "⏳ Check Scraping Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "⏳ Check Scraping Job Status": {
      "main": [
        [
          {
            "node": "βœ… Check If Scraping Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "βœ… Check If Scraping Complete": {
      "main": [
        [
          {
            "node": "πŸ“Š Validate Property Data Exists",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "⏱️ Wait Before Retry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "πŸ“₯ Fetch Property Listing Data": {
      "main": [
        [
          {
            "node": "πŸ“„ Save Property Data to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "πŸ“Š Validate Property Data Exists": {
      "main": [
        [
          {
            "node": "πŸ“₯ Fetch Property Listing Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "πŸ“€ Trigger Bright Data Scraping Job": {
      "main": [
        [
          {
            "node": "⏳ Check Scraping Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "πŸ“ Form Trigger - Start Property Search": {
      "main": [
        [
          {
            "node": "πŸ“€ Trigger Bright Data Scraping Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

η›Έε…³ε·₯作桁