{
  "name": "Zillow Address List → Enriched Google Sheet (APIllow)",
  "meta": {
    "templateCredsSetupCompleted": false,
    "description": "Read a column of addresses from Google Sheets, enrich each with Zillow property data via the APIllow API (price, Zestimate, last sold date, beds/baths), and write the results back. Store your APIllow key as a Header Auth credential named x-api-key. Free key at https://apillow.co"
  },
  "nodes": [
    {
      "parameters": {},
      "id": "b1a1c001-0001-4001-8001-000000000001",
      "name": "Run workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "documentId": { "__rl": true, "mode": "list", "value": "YOUR_SHEET_ID" },
        "sheetName": { "__rl": true, "mode": "list", "value": "Addresses" },
        "options": {}
      },
      "id": "b1a1c001-0002-4001-8001-000000000002",
      "name": "Read addresses",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [460, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.apillow.co/v1/properties",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ { \"addresses\": $items().map(i => i.json.address) } }}",
        "options": {}
      },
      "id": "b1a1c001-0003-4001-8001-000000000003",
      "name": "APIllow: submit batch",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [680, 300],
      "credentials": {
        "httpHeaderAuth": { "id": "REPLACE_WITH_YOUR_CREDENTIAL_ID", "name": "APIllow" }
      }
    },
    {
      "parameters": { "amount": 5, "unit": "seconds" },
      "id": "b1a1c001-0004-4001-8001-000000000004",
      "name": "Wait for job",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [900, 300]
    },
    {
      "parameters": {
        "url": "=https://api.apillow.co/v1/results/{{ $('APIllow: submit batch').item.json.job_id }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "id": "b1a1c001-0005-4001-8001-000000000005",
      "name": "APIllow: get results",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [1120, 300],
      "credentials": {
        "httpHeaderAuth": { "id": "REPLACE_WITH_YOUR_CREDENTIAL_ID", "name": "APIllow" }
      }
    },
    {
      "parameters": { "fieldToSplitOut": "results", "options": {} },
      "id": "b1a1c001-0006-4001-8001-000000000006",
      "name": "One row per property",
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [1340, 300]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": { "__rl": true, "mode": "list", "value": "YOUR_SHEET_ID" },
        "sheetName": { "__rl": true, "mode": "list", "value": "Enriched" },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "address": "={{ $json.property.address }}",
            "status": "={{ $json.property.home_status }}",
            "price": "={{ $json.property.price }}",
            "zestimate": "={{ $json.property.zestimate }}",
            "last_sold_price": "={{ $json.property.last_sold_price }}",
            "last_sold_date": "={{ $json.property.last_sold_date }}",
            "beds": "={{ $json.property.bedrooms }}",
            "baths": "={{ $json.property.bathrooms }}"
          }
        },
        "options": {}
      },
      "id": "b1a1c001-0007-4001-8001-000000000007",
      "name": "Write enriched rows",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [1560, 300]
    }
  ],
  "connections": {
    "Run workflow": { "main": [[{ "node": "Read addresses", "type": "main", "index": 0 }]] },
    "Read addresses": { "main": [[{ "node": "APIllow: submit batch", "type": "main", "index": 0 }]] },
    "APIllow: submit batch": { "main": [[{ "node": "Wait for job", "type": "main", "index": 0 }]] },
    "Wait for job": { "main": [[{ "node": "APIllow: get results", "type": "main", "index": 0 }]] },
    "APIllow: get results": { "main": [[{ "node": "One row per property", "type": "main", "index": 0 }]] },
    "One row per property": { "main": [[{ "node": "Write enriched rows", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" },
  "pinData": {}
}
