Skip to content
FlowHubFluxonLab
C
Google Sheetsfree

Generate and score Google Maps leads with Gemini, Apify, and Google Sheets

by iamvaaradapted from n8n official workflow galleryUpdated Aug 2026
RequiresCCodeGoogle SheetsGoogle SheetsHTTP RequestHTTP Request
Share Post Share
ChWhen Chat Message ReceivedWhen Chat Messa…HRParse Search IntentParse Search In…SeSet Search ParametersSet Search Para…HRScrape Google Maps via ApifyScrape Google M…SeSelect Lead FieldsSelect Lead Fie…RDDeduplicate by Place IDDeduplicate by …AgMerge Scraped LeadsMerge Scraped L…HRScore and Rank LeadsScore and Rank …SePrepare Scored LeadsPrepare Scored …SOSplit Leads ArraySplit Leads Arr…Update Sheet with LeadsUpdate Sheet wi…AgAggregate Existing LeadsAggregate Exist…CoFormat Chat ResponseFormat Chat Res…Read Leads from SheetRead Leads from…CoCompare Leads DataCompare Leads D…AgFinalize Results AggregationFinalize Result…123456789101112131415
1/5
STEPS · 15
Starts from a chat message

Quick overview Youtube Video:https://youtu.be/NGruDecKxAg?si=ot9pj6IN4IoLstow This workflow takes a chat-based search request, scrapes matching businesses from Google Maps using Apify, scores and ranks them with Google Gemini, deduplicates against an existing Google Sheet by placeId, saves new leads to the sheet, and returns a formatted results message to the chat. How it works Receives a message from an n8n chat trigger containing the user’s Google Maps lead search request. Sends the request to Google Gemini to extract structured search parameters (business type, location, max results, and output mode). Calls an Apify Google Maps scraping actor with the extracted parameters and selects a clean set of lead fields from the results. Removes duplicate businesses based on Google Maps placeId and batches the remaining leads into a single list. Sends the lead list to Google Gemini to add a 0–100 score and short reason to each lead and returns them sorted by score. Checks the scored leads against existing rows in Google Sheets and filters out any placeId values that are already saved.

Tags

n8nreference-onlygoogle-sheets
Connects
CCodesheetsGoogle SheetsWHTTP Request
CategoryGoogle Sheets
Triggermanual
Complexityadvanced
Nodes16
AddedJul 13, 2026

Related workflows

See all Google Sheets
CsheetsWtelegram
free

Reply to Instagram comments with Groq, Telegram approval, and Google Sheets logging

Quick Overview This workflow monitors new Instagram comments, generates a draft reply with Groq (OpenAI-compatible chat completions), sends it to Telegram for YES/NO approval, and logs the decision in Google Sheets before optionally posting the approved reply back to Instagram. How it works Runs every 10 minutes, reads existing comment IDs from Google Sheets, then fetches your 10 most recent Instagram media items and their comments via the Instagram Graph API. Filters out comments made by your own Instagram account and limits processing to recent comments. Skips any comment already logged in Google Sheets, and sends new comments (with the post caption as context) to Groq to generate a short draft reply. Sends the draft reply to a Telegram chat for approval and appends a “pending_review” row to Google Sheets with the Telegram message ID for tracking. Runs every 3 minutes, polls the Telegram Bot API for new updates, and keeps an offset so only new messages are processed. For Telegram messages that are replies to an approval request, matches the replied-to message ID to the pending row in Google Sheets and routes the decision. If the reviewer replies YES, posts the draft as an Instagr

by Emel
CsheetsW
free

Monitor negative customer reviews with an HTTP API, Google Sheets and Slack

Quick Overview This workflow polls your review API every 6 hours, filters for reviews rated 3 stars or lower, and posts an alert to a Slack channel for each negative review. How it works Runs every 6 hours on a schedule. Fetches the latest reviews from a configured HTTP endpoint. Filters the returned items to keep only reviews with a rating of 3 or below. Checks whether any negative reviews were found and stops if none exist. Posts each negative review to a selected Slack channel with the rating, author, and review text. Setup Provide a reviews API endpoint (and any required authentication) in the HTTP Request node. Connect Slack using an OAuth2 credential. Select the target Slack channel and adjust the rating threshold in the filter logic if you want a stricter or looser definition of “negative”.

by Redowan Ahmed Farhan
CsheetsW
free

Enrich Google Maps business leads with Apify and Google Sheets

Quick overview This workflow runs on demand to scrape Google Maps business leads with Apify, optionally fetches each business website to extract an email address, and appends the enriched lead data to a Google Sheets spreadsheet. How it works Starts manually and loads the Apify API key, Google Maps search query, max results, and target Google Sheets spreadsheet ID. Launches the Apify Google Places scraper run for the provided search query and stores the returned run ID and dataset ID. Polls Apify until the actor run status is SUCCEEDED, waiting and retrying until results are ready. Downloads the scraped business items from the Apify dataset and processes them one business at a time. If a business has a website, requests the site HTML and extracts the first valid email address found; otherwise it keeps the email blank. Appends each enriched lead (name, email, phone, rating, address, review count, and website) as a new row in Google Sheets. Setup Add your Apify API token and replace the placeholder value in the configuration step. Connect Google Sheets credentials in n8n and set the target spreadsheet ID (and sheet name if not Sheet1). Update the Google Maps search query and max resu

by Igor