AutomationFlowsData & Sheets › Extract Google Maps Leads with Dumpling AI to Sheets

Extract Google Maps Leads with Dumpling AI to Sheets

Original n8n title: Extract Business Leads From Google Maps with Dumpling AI to Google Sheets

Extract Business Leads from Google Maps with Dumpling AI to Google Sheets. Uses stickyNote, manualTrigger, httpRequest, splitOut. Event-driven trigger; 5 nodes.

Event trigger★★☆☆☆ complexity5 nodesHTTP RequestGoogle Sheets
Data & Sheets Trigger: Event Nodes: 5 Complexity: ★★☆☆☆ Added:

This workflow follows the Google Sheets → HTTP Request 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": "YZpFvpXOTYkBpiUU",
  "name": "Extract Business Leads from Google Maps with Dumpling AI to Google Sheets",
  "tags": [
    {
      "id": "TlcNkmb96fUfZ2eA",
      "name": "Tutorials",
      "createdAt": "2025-04-15T17:02:00.249Z",
      "updatedAt": "2025-04-15T17:02:00.249Z"
    }
  ],
  "nodes": [
    {
      "id": "3a49e594-6c62-4128-825e-99cdfd7e6ed5",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -200
      ],
      "parameters": {
        "width": 600,
        "height": 700,
        "content": "#### \ud83d\udd0d Workflow Goal\nAutomatically search Google Maps using Dumpling AI based on a keyword (e.g., best restaurants in New York), extract results, and log them into a structured Google Sheet.\n\n## \ud83d\ude80 Workflow Steps\n1. **Manual Trigger**\n   - Starts the workflow when testing manually.\n\n2. **Dumpling AI Google Search**\n   - Sends a POST request to Dumpling AI to search for locations on Google Maps based on your query.\n\n3. **Split Out Node**\n   - Breaks the `places[]` array into individual items so each result can be handled separately.\n\n4. **Google Sheets Node**\n   - Appends each place\u2019s data (name, address, phone, website, rating, etc.) into a specific tab of your Google Sheets.\n\n##### \ud83e\udde0 Notes\n- The search query is currently set to: `\"best+restaurants+in+New+York\"`\n- Output columns include rating, price level, website, phone, booking links, etc.\n- Each run consumes Dumpling AI credits per query.\n- You can customize search keywords or location in the HTTP Request body.\n\n#### \u2705 Tip\nTo automate this regularly, change the trigger node to a **Schedule Trigger** and add dynamic query input using a **Set** or **Webhook** node.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0a4ee00a-19cf-4d1e-a145-b5c5619ce636",
      "name": "Trigger: Manual Test Run",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        120
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "26fdb640-93a0-4312-beaf-4c07fff87751",
      "name": "Search Google Maps via Dumpling AI",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        220,
        120
      ],
      "parameters": {
        "url": "https://app.dumplingai.com/api/v1/search-maps",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"query\": \"best+restaurants+in+New+York\", \n  \"language\": \"en\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d3fafc2c-0b9d-4e83-83aa-de24d11fc0e1",
      "name": "Split Places List for Processing",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        440,
        120
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "places"
      },
      "typeVersion": 1
    },
    {
      "id": "83b48532-b1fb-4ab3-9596-6e96526bfd49",
      "name": "Save Results to Google Sheet (Place Info)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        660,
        120
      ],
      "parameters": {
        "columns": {
          "value": {
            "type": "={{ $json.type }}",
            "Name ": "={{ $json.title }}",
            "rating": "={{ $json.rating }}",
            "Address": "={{ $json.address }}",
            "Website": "={{ $json.website }}",
            "Position": "={{ $json.position }}",
            "priceLevel": "={{ $json.priceLevel }}",
            "Booking Link": "={{ $json.bookingLinks[0] }}",
            "Phone number": "={{ $json.phoneNumber }}"
          },
          "schema": [
            {
              "id": "Name ",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "priceLevel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "priceLevel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "I use an HTTP request in n8n, I returned up to 10",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "I use an HTTP request in n8n, I returned up to 10",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Booking Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Booking Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Phone number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Position",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pb4WLqv2EruLM1z9-utehcINolSj0vlUqZionyLoRUs/edit#gid=1069765279",
          "cachedResultName": "Google Maps"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pb4WLqv2EruLM1z9-utehcINolSj0vlUqZionyLoRUs/edit?usp=drivesdk",
          "cachedResultName": "Places"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "171ef405-bac6-42c0-a3c3-c28cb49ff21a",
  "connections": {
    "Trigger: Manual Test Run": {
      "main": [
        [
          {
            "node": "Search Google Maps via Dumpling AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Places List for Processing": {
      "main": [
        [
          {
            "node": "Save Results to Google Sheet (Place Info)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google Maps via Dumpling AI": {
      "main": [
        [
          {
            "node": "Split Places List for Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Extract Business Leads from Google Maps with Dumpling AI to Google Sheets. Uses stickyNote, manualTrigger, httpRequest, splitOut. Event-driven trigger; 5 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

An automated workflow that scrapes Shopify store information and product data using the Shopify Scraper API from RapidAPI, triggered by a user submitting a website URL, then logs data into Google Shee

Form Trigger, HTTP Request, Google Sheets
Data & Sheets

This workflow automatically searches multiple flight booking websites to find the cheapest flights for your desired routes. It leverages web scraping to compare prices across platforms, helping you sa

Google Sheets, HTTP Request
Data & Sheets

This workflow automatically collects weather data from multiple sources and compiles it into comprehensive reports. It helps you make informed decisions based on accurate weather forecasts without man

HTTP Request, Google Sheets
Data & Sheets

Push Json Data Into An App Or To Spreadsheet File. Uses httpRequest, spreadsheetFile, stickyNote, manualTrigger. Event-driven trigger; 8 nodes.

HTTP Request, Spreadsheet File, Google Sheets
Data & Sheets

This workflow template shows how to load JSON data into a workflow and push that data into an App or convert it into a Spreadsheet file.

HTTP Request, Spreadsheet File, Google Sheets