AutomationFlowsMarketing & Ads › Find Local Business Leads with Searchapi Google Maps and Google Sheets

Find Local Business Leads with Searchapi Google Maps and Google Sheets

BySnehasish Konger @snehasish on n8n.io

This workflow collects a business type and location via an n8n form, searches Google Maps results using SearchAPI, parses key business details, and appends the enriched leads to a Google Sheets spreadsheet. Receives a form submission where the user selects a Business Type and…

Event trigger★★★★☆ complexity6 nodesForm Trigger@Searchapi/N8N Nodes SearchapiGoogle Sheets
Marketing & Ads Trigger: Event Nodes: 6 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #15903 — we link there as the canonical source.

This workflow follows the Form Trigger → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "k6iHcGIKwMWLeP0W",
  "name": "Local Business Outbound Lead Finder",
  "tags": [],
  "nodes": [
    {
      "id": "83c7afa8-3ced-45b7-b9aa-f0d579cd655c",
      "name": "README",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 620,
        "height": 500,
        "content": "## \ud83d\uddfa\ufe0f Local Business Outbound Lead Finder\n\n**What this workflow does:**\n1. User picks a **Business Type** + **Location** from the form\n2. **SearchAPI Google Maps** finds matching local businesses\n3. Parses: name, category, address, phone, website, rating, review count, price range\n4. Writes all enriched leads to a **Google Sheet**\n\n---\n\n**\ud83d\udccb Columns written to Sheet:**\n`Business Name` \u00b7 `Category` \u00b7 `Address` \u00b7 `Phone` \u00b7 `Website` \u00b7 `Rating` \u00b7 `Review Count` \u00b7 `Price Range` \u00b7 `Location` \u00b7 `Business Type` \u00b7 `Maps URL` \u00b7 `Place ID` \u00b7 `Run ID` \u00b7 `Scraped At`\n\n---\n\n**\u2699\ufe0f Setup required:**\n1. Connect your **SearchAPI** credential (get a free key at searchapi.io)\n2. Connect your **Google Sheets OAuth2** credential\n3. In the **\"Write to Google Sheet\"** node, select your target spreadsheet and sheet tab\n4. Customize the **Business Type** and **Location** dropdowns in the form as needed\n\n**SearchAPI engine:** `google_maps`\n**Query pattern:** `{Business Type} in {Location}`"
      },
      "typeVersion": 1
    },
    {
      "id": "fd4c3c2c-098f-4d75-be23-a92bda81154b",
      "name": "Lead Search Form",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        720,
        64
      ],
      "parameters": {
        "options": {},
        "formTitle": "Find Local Business Leads",
        "formFields": {
          "values": [
            {
              "fieldType": "dropdown",
              "fieldLabel": "Business Type",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Gym"
                  },
                  {
                    "option": "Salon"
                  },
                  {
                    "option": "Restaurant"
                  },
                  {
                    "option": "Dental Clinic"
                  },
                  {
                    "option": "Digital Marketing Agency"
                  },
                  {
                    "option": "Law Firm"
                  },
                  {
                    "option": "Real Estate Agency"
                  },
                  {
                    "option": "Accounting Firm"
                  },
                  {
                    "option": "Yoga Studio"
                  },
                  {
                    "option": "Coffee Shop"
                  },
                  {
                    "option": "Coaching Institute"
                  },
                  {
                    "option": "IT Company"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Location",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Mumbai"
                  },
                  {
                    "option": "Delhi"
                  },
                  {
                    "option": "Bangalore"
                  },
                  {
                    "option": "Hyderabad"
                  },
                  {
                    "option": "Chennai"
                  },
                  {
                    "option": "Pune"
                  },
                  {
                    "option": "Kolkata"
                  },
                  {
                    "option": "Ahmedabad"
                  },
                  {
                    "option": "Noida"
                  },
                  {
                    "option": "Gurgaon"
                  },
                  {
                    "option": "Jaipur"
                  },
                  {
                    "option": "Surat"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Select a business type and location. Matching businesses will be enriched and added to your Google Sheet."
      },
      "typeVersion": 2.2
    },
    {
      "id": "51e6de8a-49de-4dae-a6c3-8336afb3e9cb",
      "name": "Build Search Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        992,
        64
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "s1",
              "name": "businessType",
              "type": "string",
              "value": "={{ $json['Business Type'] }}"
            },
            {
              "id": "s2",
              "name": "location",
              "type": "string",
              "value": "={{ $json['Location'] }}"
            },
            {
              "id": "s3",
              "name": "searchQuery",
              "type": "string",
              "value": "={{ $json['Business Type'] + ' in ' + $json['Location'] }}"
            },
            {
              "id": "s4",
              "name": "runId",
              "type": "string",
              "value": "={{ 'RUN-' + $now.toFormat('yyyyMMdd-HHmmss') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b1b07b1f-f5ac-4c2e-8cb7-52f96b9a175b",
      "name": "SearchAPI \u2014 Google Maps",
      "type": "@searchapi/n8n-nodes-searchapi.searchApi",
      "position": [
        1248,
        64
      ],
      "parameters": {
        "q": "={{ $json.searchQuery }}",
        "resource": "google_maps",
        "pagination": {},
        "requestOptions": {},
        "locationSettings": {},
        "searchConfiguration": {}
      },
      "typeVersion": 1
    },
    {
      "id": "47c6679a-2d95-40ac-aa28-98d8101e54ba",
      "name": "Parse Business Results",
      "type": "n8n-nodes-base.code",
      "position": [
        1504,
        64
      ],
      "parameters": {
        "jsCode": "// Parse local_results from SearchAPI Google Maps response\n// Each result may contain: title, address, phone, website, rating, reviews, type, place_id\n\nconst vars = $('Build Search Variables').first().json;\nconst businessType = vars.businessType || '';\nconst location     = vars.location     || '';\nconst runId        = vars.runId        || '';\n\nconst leads = [];\n\nfor (const item of $input.all()) {\n  const localResults = item.json.local_results || [];\n\n  for (const r of localResults) {\n    if (!r.title) continue;\n\n    leads.push({\n      'Business Name':  r.title         || '',\n      'Category':       r.type          || businessType,\n      'Address':        r.address       || '',\n      'Phone':          r.phone         || '',\n      'Website':        r.website       || '',\n      'Rating':         r.rating        || '',\n      'Review Count':   r.reviews       || '',\n      'Price Range':    r.price         || '',\n      'Location':       location,\n      'Business Type':  businessType,\n      'Maps URL':       r.maps_url      || r.direction || '',\n      'Place ID':       r.place_id      || '',\n      'Run ID':         runId,\n      'Scraped At':     new Date().toISOString()\n    });\n  }\n}\n\nif (leads.length === 0) {\n  return [{ json: { error: 'No results found for ' + businessType + ' in ' + location } }];\n}\n\nreturn leads.map(l => ({ json: l }));"
      },
      "typeVersion": 2
    },
    {
      "id": "7d524fd5-a093-48d9-93c6-05af5a184ca0",
      "name": "Write to Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1760,
        64
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultName": "\ud83d\udccc Select your Sheet Tab"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultName": "\ud83d\udccc Select your Google Sheet"
        }
      },
      "typeVersion": 4.7
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "34be8cb5-dc43-45f9-95d5-3802fbb331f1",
  "connections": {
    "Lead Search Form": {
      "main": [
        [
          {
            "node": "Build Search Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Search Variables": {
      "main": [
        [
          {
            "node": "SearchAPI \u2014 Google Maps",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Business Results": {
      "main": [
        [
          {
            "node": "Write to Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SearchAPI \u2014 Google Maps": {
      "main": [
        [
          {
            "node": "Parse Business Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow collects a business type and location via an n8n form, searches Google Maps results using SearchAPI, parses key business details, and appends the enriched leads to a Google Sheets spreadsheet. Receives a form submission where the user selects a Business Type and…

Source: https://n8n.io/workflows/15903/ — original creator credit. Request a take-down →

More Marketing & Ads workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Marketing & Ads

This repository contains an SLA-based lead routing workflow built in n8n, designed to ensure fast lead response, fair sales distribution, and controlled escalation without relying on a full CRM system

Form Trigger, Google Sheets, Slack +1
Marketing & Ads

This workflow collects business leads from Google Maps by geocoding a user-provided city, searching across a small coordinate grid with Places Nearby Search pagination, and writing enriched business d

Form Trigger, HTTP Request, Google Sheets
Marketing & Ads

How it works A form trigger accepts an Industry + Location query (e.g. Accountants London). Text Search Page 1 calls Google Places Text Search to return results and a nextpagetoken. Conditional checks

HTTP Request, Form Trigger, Google Sheets
Marketing & Ads

Agencies, sales teams, and service businesses who want to instantly qualify inbound leads with an AI-powered phone call — no manual follow-up needed.

Form Trigger, Google Sheets, HTTP Request
Marketing & Ads

This n8n template automates lead generation by scraping Google Maps using the Olostep API. It extracts business names, locations, websites, phone numbers, and decision-maker names (CEO, Founder, etc.)

Form Trigger, HTTP Request, Google Sheets