Google Maps Business Phone No Scraper with Bright Data & Sheets

Go to Workflow
818 views
Built by Incrementors Incrementors
Created on June 06, 2026

Description

Google Maps Business Phone No Scraper with Bright Data & Sheets

Overview
This n8n workflow automates the process of scraping business phone numbers and information from Google Maps using the Bright Data API and saves the results to Google Sheets.

Workflow Components

1. Form Trigger - Submit Location and Keywords
Type: Form Trigger
Purpose: Start the workflow when a form is submitted
Fields:
Location (required)
Keywords (required)

Configuration:
Form Title: "GMB"
Webhook ID: 8b72dcdf-25a1-4b63-bb44-f918f7095d5d

2. Bright Data API - Request Business Data
Type: HTTP Request
Purpose: Sends scraping request to Bright Data API
Method: POST
URL: https://api.brightdata.com/datasets/v3/trigger

Query Parameters:
dataset_id: gd_m8ebnr0q2qlklc02fz
include_errors: true
type: discover_new
discover_by: location
limit_per_input: 2

Headers:
Authorization: Bearer BRIGHT_DATA_API_KEY

Request Body:
{
"input": [
{
"country": "{{ $json.Location }}",
"keyword": "{{ $json.keywords }}",
"lat": ""
}
],
"custom_output_fields": [
"url",
"country",
"name",
"address",
"description",
"open_hours",
"reviews_count",
"rating",
"reviews",
"services_provided",
"open_website",
"phone_number",
"permanently_closed",
"photos_and_videos",
"people_also_search"
]
}

3. Check Scraping Status
Type: HTTP Request
Purpose: Check if data scraping is completed
Method: GET
URL: https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}

Query Parameters:
format: json

Headers:
Authorization: Bearer BRIGHT_DATA_API_KEY

4. Check If Status Ready
Type: Conditional (IF)
Purpose: Determine if scraping is ready or needs to wait
Condition: {{ $json.status }} equals "ready"

5. Wait Before Retry
Type: Wait
Purpose: Pause 1 minute before checking status again
Duration: 1 minute
Webhook ID: 7047efad-de41-4608-b95c-d3e0203ef620

6. Check Records Exist
Type: Conditional (IF)
Purpose: Proceed only if business records are found
Condition: {{ $json.records }} not equals 0

7. Fetch Business Data
Type: HTTP Request
Purpose: Get business information including phone numbers
Method: GET
URL: https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}

Query Parameters:
format: json

Headers:
Authorization: Bearer BRIGHT_DATA_API_KEY

8. Save to Google Sheets
Type: Google Sheets
Purpose: Store business data in Google Sheets
Operation: Append
Document ID: YOUR_GOOGLE_SHEET_ID
Sheet Name: GMB

Column Mapping:
Name:** {{ $json.name }}
Address:** {{ $json.address }}
Rating:** {{ $json.rating }}
Phone Number:** {{ $json.phone_number }}
URL:** {{ $json.url }}

Workflow Flow

Start: User submits form with location and keywords
Request: Send scraping request to Bright Data API
Monitor: Check scraping status periodically
Wait Loop: If not ready, wait 1 minute and check again
Validate: Ensure records exist before proceeding
Fetch: Retrieve the scraped business data
Save: Store results in Google Sheets

Setup Requirements

API Keys & Credentials
Bright Data API Key:** Replace BRIGHT_DATA_API_KEY with your actual API key
Google Sheets OAuth2:** Configure with your Google Sheets credential ID
Google Sheet ID:** Replace YOUR_GOOGLE_SHEET_ID with your actual sheet ID

Google Sheets Setup
Create a Google Sheet with a tab named "GMB"
Ensure the following columns exist:
Name
Address
Rating
Phone Number
URL

Workflow Status
Active:** No (currently inactive)
Execution Order:** v1
Version ID:** 0bed9bf1-00a3-4eb6-bf7c-cf07bee006a2
Workflow ID:** Hm7iTSgpu2of6gz4

Notes
The workflow includes a retry mechanism with 1-minute waits
Data validation ensures only successful scrapes are processed
All business information is automatically saved to Google Sheets
The form trigger allows easy initiation of scraping jobs

For any questions or support, please contact:
[email protected]
or fill out this form: https://www.incrementors.com/contact-us/

Nodes Used (2)

Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest