Scrape B2B leads from Google Maps to Google Sheets with HasData

This n8n template shows how to build a complete B2B lead generation pipeline that scrapes Google Maps for businesses and enriches them with emails from their websites or Google search.

Use cases: Find local businesses with contact info for cold email campaigns, B2B prospecting, market research, or building CRM databases.

How it works

You define search queries, locations, and page counts in a config sheet inside a Google Spreadsheet called "Leads". On each run, the workflow creates a new timestamped results sheet so previous runs don't get overwritten. It reads every row from config, generates paginated search tasks (20 results per page), and fires them at the HasData Google Maps API. Results get split into individual businesses. Duplicates are removed by name and place ID. For each business with a website, the HasData web scraper hits the URL directly and pulls any emails it finds. If no emails turn up on the website, or there's no website at all, the workflow runs a targeted Google search: "business name, city" email "@" and parses the organic results with a regex. All leads (whether emails came from the site or from Google) merge into one stream and get written to the results sheet: name, phone, address, website, emails, rating, reviews, type.

How to set up

Install the HasData n8n node on your self-hosted instance. Connect your HasData API credentials and your Google Sheets OAuth2 credentials inside the workflow. In your Google Spreadsheet named Leads, add a sheet called config with these columns: leads_query for the search term (e.g. coffee shops) location for city, state, zip code, or a specific address page_count for number of pages to fetch (20 results per page) offset for starting page number (use 1 to start from the beginning) Click Manual Trigger to run.

Requirements

Self-hosted n8n (community node required) HasData account with API key Google account with Sheets API access (OAuth2) Google Spreadsheet named Leads with a config sheet

Customizing this workflow

Swap the Manual Trigger for a Schedule trigger to run nightly lead generation automatically. Add a filter node after "Remove Duplicates" to target only businesses above a minimum rating. Extend the "Format Lead" nodes to capture additional fields from the Maps API like categories, hours, or social links. Point the output to a CRM via HTTP Request instead of Google Sheets.

Further reading

The full build walkthrough, including real test results, node-by-node screenshots, and the regex logic behind the Google search fallback, is on the HasData blog: How to scrape leads with n8n.

0
Downloads
0
Views
7.36
Quality Score
beginner
Complexity
Author:HasData(View Original →)
Created:5/20/2026
Updated:5/20/2026

🔒 Please log in to import templates to n8n and favorite templates

Workflow Visualization

Loading...

Preparing workflow renderer

Comments (0)

Login to post comments