AutomationFlowsAI & RAG › Google Maps Business Scraper & Lead Enricher with Bright Data & Google Gemini

Google Maps Business Scraper & Lead Enricher with Bright Data & Google Gemini

ByRanjan Dailata @ranjancse on n8n.io

Community nodes can only be installed on self-hosted instances of n8n.

Event trigger★★★★☆ complexityAI-powered29 nodesHTTP RequestGoogle Gemini ChatChain LlmOutput Parser StructuredRead Write FileGoogle SheetsN8N Nodes Mcp
AI & RAG Trigger: Event Nodes: 29 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → 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": "xFSHqOmnuGuB4QRY",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Google Maps Business Scraper & Lead Enricher with Bright Data & Google Gemini",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    }
  ],
  "nodes": [
    {
      "id": "4b4d84f7-dfc4-4b9e-8e43-ce02ac282e3e",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -320,
        -20
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6a4375de-d7f8-4973-9cce-53aee11765ed",
      "name": "Set input fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -60,
        -20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0ac91db2-9848-40d4-b942-cd7288597ded",
              "name": "url",
              "type": "string",
              "value": "https://www.google.com/maps/search/"
            },
            {
              "id": "7142f0df-3c68-4ce0-8e9b-25101db31312",
              "name": "webhook_notification_url",
              "type": "string",
              "value": "https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db"
            },
            {
              "id": "f5b7e10d-bcd8-439c-8e84-ba4af11f2cd2",
              "name": "search",
              "type": "string",
              "value": "dentists+in+texas/?q=dentists+in+texas"
            },
            {
              "id": "3a0bcec2-ec6d-457f-87a5-b73f4d826b2a",
              "name": "zone",
              "type": "string",
              "value": "serp_api1"
            },
            {
              "id": "a9de809f-2026-44bb-a2a9-58495df78bfb",
              "name": "start",
              "type": "string",
              "value": "0"
            },
            {
              "id": "feff2b6f-2897-4135-a09a-e0799a2197ea",
              "name": "num",
              "type": "string",
              "value": "20"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6205bdfc-5b31-44cd-8b9c-37de800e8a63",
      "name": "Perform Bright Data Web Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        180,
        -20
      ],
      "parameters": {
        "url": "https://api.brightdata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "zone",
              "value": "={{ $json.zone }}"
            },
            {
              "name": "url",
              "value": "={{ $json.url }}/{{ $json.search }}"
            },
            {
              "name": "format",
              "value": "raw"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "85c38904-c3d8-4ec1-80f3-5d06a12ba53c",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        400,
        160
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f53c2c94-5ff7-49e0-a72d-d40b0504b59f",
      "name": "Google Maps Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        400,
        -20
      ],
      "parameters": {
        "text": "=Extract Google Maps content \n\n{{ $json.data }}\n\nMake sure to return the data in JSON",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "5b849d5c-da41-489b-b2df-2a6e6c9eee40",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        580,
        160
      ],
      "parameters": {
        "jsonSchemaExample": "[\n      {\n        \"name\": \"Texas City Dental - Dentist in Texas City\",\n        \"entity_id\": [\n          \"9673584215857663405\",\n          \"6574027299904374997\"\n        ],\n        \"details_url\": \"/g/11h7ftffbx\",\n        \"reviews\": 674,\n        \"rating\": 4.8,\n        \"address\": \"3448 Palmer Hwy, Texas City, TX 77590\",\n        \"appointment_link\": \"https://txcitydental.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Dental laboratory\",\n          \"Denture care center\",\n          \"Endodontist\",\n          \"Oral surgeon\",\n          \"Orthodontist\",\n          \"Pediatric dentist\",\n          \"Periodontist\",\n          \"Teeth whitening service\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n      {\n        \"name\": \"Texas Dental\",\n        \"entity_id\": [\n          \"9677148940277542199\",\n          \"15703975205538868636\"\n        ],\n        \"details_url\": \"/g/1tgcmpr0\",\n        \"reviews\": 1354,\n        \"rating\": 4.9,\n        \"address\": \"5132 Village Creek Dr, Plano, TX 75093\",\n        \"appointment_link\": \"https://www.texasdentalpa.com/?utm_source=GBPlisting&utm_medium=organic\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental implants periodontist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n      {\n        \"name\": \"North Texas Dental\",\n        \"entity_id\": [\n          \"9677259612218511763\",\n          \"14671019117677462783\"\n        ],\n        \"details_url\": \"/g/1wd3wg17\",\n        \"reviews\": 1623,\n        \"rating\": 4.9,\n        \"address\": \"2515 Masters St, Sherman, TX 75090\",\n        \"appointment_link\": \"https://www.ntdsherman.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Dental implants periodontist\",\n          \"Denture care center\",\n          \"Teeth whitening service\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n      {\n        \"name\": \"6 to 9 Dental Texas\",\n        \"entity_id\": [\n          \"9681711930004589935\",\n          \"14121951165737821532\"\n        ],\n        \"details_url\": \"/g/1ts2_px7\",\n        \"reviews\": 113,\n        \"rating\": 4.9,\n        \"address\": \"2603 SE Military Dr Ste 103, San Antonio, TX 78223\",\n        \"appointment_link\": \"http://www.vphumphrey2dds.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Dental clinic\",\n          \"Dental implants provider\",\n          \"Emergency dental service\",\n          \"Endodontist\",\n          \"Oral surgeon\",\n          \"Prosthodontist\",\n          \"Teeth whitening service\",\n          \"Walk-in clinic\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Cosmetic Dental Texas\",\n        \"entity_id\": [\n          \"9673942104093032889\",\n          \"6644082296499224433\"\n        ],\n        \"details_url\": \"/g/1ts_6_5b\",\n        \"reviews\": 234,\n        \"rating\": 4.6,\n        \"address\": \"2101 Crawford St STE 103, Houston, TX 77002\",\n        \"appointment_link\": \"https://cosmeticdentaltexas.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental hygienist\",\n          \"Health consultant\",\n          \"Teeth whitening service\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Natural Dentistry of North Texas\",\n        \"entity_id\": [\n          \"9677855844448877255\",\n          \"6619454455705348065\"\n        ],\n        \"details_url\": \"/g/1w45608g\",\n        \"reviews\": 109,\n        \"rating\": 4.9,\n        \"address\": \"1645 N Town E Blvd #532, Mesquite, TX 75150\",\n        \"appointment_link\": \"https://www.naturaldentistryofnorthtexas.com/?utm_source=local&utm_medium=organic\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental clinic\",\n          \"Dental implants periodontist\",\n          \"Denture care center\",\n          \"Doctor\",\n          \"Emergency dental service\",\n          \"Orthodontist\",\n          \"Pediatric dentist\",\n          \"Teeth whitening service\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Heart of Texas Smiles General Cosmetic Dentistry\",\n        \"entity_id\": [\n          \"9681881174741169099\",\n          \"15832460407262855114\"\n        ],\n        \"details_url\": \"/g/1tcvv8l5\",\n        \"reviews\": 1531,\n        \"rating\": 4.9,\n        \"address\": \"117 Burnett Ct, Waco, TX 76712\",\n        \"appointment_link\": \"https://www.wacofamilydental.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental clinic\",\n          \"Dental hygienist\",\n          \"Dental implants provider\",\n          \"Orthodontist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Smile 4 Texas Dental Center\",\n        \"entity_id\": [\n          \"9678099339216434095\",\n          \"2187168089587898937\"\n        ],\n        \"details_url\": \"/g/12hn7tnrq\",\n        \"reviews\": 812,\n        \"rating\": 4.9,\n        \"address\": \"1400 Blalock Rd D1, Houston, TX 77055\",\n        \"appointment_link\": \"https://www.smile4texas.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental clinic\",\n          \"Dental hygienist\",\n          \"Dental implants provider\",\n          \"Emergency dental service\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Dental Center of Texas\",\n        \"entity_id\": [\n          \"9673948559547960793\",\n          \"10154247486966080020\"\n        ],\n        \"details_url\": \"/g/1q665w1n4\",\n        \"reviews\": 155,\n        \"rating\": 4.7,\n        \"address\": \"23922 Cinco Village Center Blvd #100, Katy, TX 77494\",\n        \"appointment_link\": \"http://www.dentalcentertexas.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Dental clinic\",\n          \"Orthodontist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Central Texas Family Dental\",\n        \"entity_id\": [\n          \"9674049914126201417\",\n          \"3494220525942607347\"\n        ],\n        \"details_url\": \"/g/1tdvkknl\",\n        \"reviews\": 188,\n        \"rating\": 4.9,\n        \"address\": \"4104 E Stan Schlueter Loop #4, Killeen, TX 76542\",\n        \"appointment_link\": \"https://www.centexdds.com/\",\n        \"category\": [\n          \"Dentist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"Texas Dentistry and Braces\",\n        \"entity_id\": [\n          \"9727332640569304831\",\n          \"9357406137681505810\"\n        ],\n        \"details_url\": \"/g/1tl8l4rw\",\n        \"reviews\": null,\n        \"rating\": null,\n        \"address\": \"315 N Galloway Ave # A, Mesquite, TX 75149\",\n        \"appointment_link\": \"https://mesquite.txdentistryandbraces.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental clinic\",\n          \"Dental implants provider\",\n          \"Denture care center\",\n          \"Emergency dental service\",\n          \"Orthodontist\",\n          \"Pediatric dentist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n       {\n        \"name\": \"West Texas Dental Associates\",\n        \"entity_id\": [\n          \"9673946025354891219\",\n          \"2619898+1234567890\"\n        ],\n        \"details_url\": \"/g/113fzvfyr\",\n        \"reviews\": 496,\n        \"rating\": 5.0,\n        \"address\": \"3315 64th St STE A, Lubbock, TX 79413\",\n        \"appointment_link\": \"http://www.westtxdental.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      },\n      {\n        \"name\": \"Texas Dental Specialists - Dr. Omar Yousuf\",\n        \"entity_id\": [\n          \"9675220924038729639\",\n          \"12674832566120650126\"\n        ],\n        \"details_url\": \"/g/113ddy7s1\",\n        \"reviews\": 296,\n        \"rating\": 4.9,\n        \"address\": \"5940 W Parker Rd STE 103, Plano, TX 75093\",\n        \"appointment_link\": \"https://www.texasdentalspecialists.com/\",\n        \"category\": [\n          \"Dentist\",\n          \"Cosmetic dentist\",\n          \"Dental implants provider\",\n          \"Dental clinic\",\n          \"Emergency dental service\",\n          \"Oral surgeon\"\n        ],\n        \"related_terms\": [\n          \"dentist\",\n          \"cosmetic_dentist\",\n          \"dental_clinic\",\n          \"dental_implants_periodontist\",\n          \"teeth_whitening_service\",\n          \"orthodontist\",\n          \"denture_care_center\",\n          \"pediatric_dentist\"\n        ]\n      }\n    ]"
      },
      "typeVersion": 1.2
    },
    {
      "id": "8fa11221-0bae-498d-9f29-c6147740909c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -440
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 240,
        "content": "## LLM Usages\n\nGoogle Gemini LLM is being utilized for the structured data extraction handling."
      },
      "typeVersion": 1
    },
    {
      "id": "11884d28-95bc-48ea-b1c8-847f33425a8b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -800
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 340,
        "content": "## Logo\n\n\n![logo](https://images.seeklogo.com/logo-png/43/1/brightdata-logo-png_seeklogo-439974.png)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c692962a-4910-46e5-991b-2202b90e7572",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -440
      ],
      "parameters": {
        "width": 400,
        "height": 240,
        "content": "## Note\n\nDeals with the Google Maps data extraction by utilizing the Bright Data and Google Gemini LLM for transforming the profile into a structured JSON response.\n\n**Please make sure to set the input fields node with the filtering criteria, Bright Data zone name, Webhook notification URL**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7109a239-d8d0-4399-bd7a-1c1eb0d9a333",
      "name": "Create a binary data for Structured Data Extract",
      "type": "n8n-nodes-base.function",
      "position": [
        1100,
        -120
      ],
      "parameters": {
        "functionCode": "items[0].binary = {\n  data: {\n    data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n  }\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "id": "aa031e65-4c46-4ddb-907d-1d9e54e88f68",
      "name": "Write the structured content to disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        1340,
        -120
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\GoogleMaps_Response.json",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "bc02801c-b1f0-4b80-a43e-a2efe9efcc6a",
      "name": "Initiate a Webhook Notification for Structured Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1100,
        80
      ],
      "parameters": {
        "url": "={{ $('Set input fields').item.json.webhook_notification_url }}",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "response",
              "value": "={{ $json.output.toJsonString() }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "dd2601bf-e0a2-4cfb-a1b3-96b3125d810e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        760,
        -240
      ],
      "parameters": {
        "color": 4,
        "width": 780,
        "height": 740,
        "content": "## Output Data Handling"
      },
      "typeVersion": 1
    },
    {
      "id": "362c4677-ea35-43c0-9dad-777bbafacad3",
      "name": "Update Google Sheets for Structured Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1100,
        300
      ],
      "parameters": {
        "columns": {
          "value": {
            "name": "={{ $json.output[0].name }}",
            "rating": "={{ $json.output[0].rating }}",
            "address": "={{ $json.output[0].address }}",
            "reviews": "={{ $json.output[0].reviews }}",
            "category": "={{ $json.output[0].category.toJsonString() }}",
            "details_url": "={{ $json.output[0].details_url }}",
            "related_terms": "={{ $json.output[0].related_terms.toJsonString() }}",
            "appointment_link": "={{ $json.output[0].appointment_link }}"
          },
          "schema": [
            {
              "id": "name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "details_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "details_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reviews",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "reviews",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "appointment_link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "appointment_link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "related_terms",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "related_terms",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "entity_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "entity_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BQ61qiNXdToLm465n-gtJiwdoQGSxua7St_iHAqMi10/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1BQ61qiNXdToLm465n-gtJiwdoQGSxua7St_iHAqMi10",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BQ61qiNXdToLm465n-gtJiwdoQGSxua7St_iHAqMi10/edit?usp=drivesdk",
          "cachedResultName": "GoogleMaps-LeadGen"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "bb25e12c-b61a-40e5-bdd8-80412da4b64b",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        800,
        300
      ],
      "parameters": {
        "jsCode": "return $input.first().json.output"
      },
      "typeVersion": 2
    },
    {
      "id": "9830a8f1-02f1-4503-842e-c511937ae60d",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1100,
        660
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "bfa9e131-7896-4377-aca5-f2241ae2e155",
      "name": "Search Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1800,
        680
      ],
      "parameters": {
        "text": "=Extract the Yelp URL and Desc\n\n{{ $json.result.content[0].text }}\n\nMake sure to return the data in JSON",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "83af94c4-ef2c-4ccb-b1da-b47062041df7",
      "name": "Google Gemini Chat Model for Google Search",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1800,
        860
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "885afe32-d794-41a4-b532-510ea291bd55",
      "name": "Structured Output Parser for Google Search",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1980,
        860
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"url\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"desc\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "1f040a8f-b122-4cae-8ad6-55c953917bc3",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1300,
        680
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "076b2f50-fcb0-465f-8953-4e9446d9a70a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        760,
        -400
      ],
      "parameters": {
        "color": 3,
        "width": 440,
        "height": 120,
        "content": "## Disclaimer\nThis template is only available on n8n self-hosted as it's making use of the community node for MCP Client."
      },
      "typeVersion": 1
    },
    {
      "id": "3d8eb777-fe62-4473-8a4c-d12c43324e74",
      "name": "MCP Search Client",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        1540,
        680
      ],
      "parameters": {
        "toolName": "search_engine",
        "operation": "executeTool",
        "toolParameters": "={\n  \"query\": \"{{ $json.name }} in Yelp\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7546160a-fd9f-48c5-b6c0-f8fbf3171b87",
      "name": "MCP Client for Web Scraping",
      "type": "n8n-nodes-mcp.mcpClient",
      "position": [
        2240,
        680
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={\n  \"url\": \"{{ $json.output.url }}\"\n} "
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "10f51630-b469-4ae3-ba29-0f1633262e86",
      "name": "Create a binary data for Structured Data Extract for Yelp",
      "type": "n8n-nodes-base.function",
      "position": [
        2500,
        680
      ],
      "parameters": {
        "functionCode": "items[0].binary = {\n  data: {\n    data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n  }\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "id": "142eb53d-be26-4fcc-bab4-3448dbeb96c0",
      "name": "Write the Yelp content to disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        2740,
        680
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\Yelp_Response_{{ new Date().toISOString().replace(/[:.]/g, '-')}}.json",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "626051c8-037d-4dad-a8d2-3268ede2e803",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        580
      ],
      "parameters": {
        "color": 5,
        "width": 1880,
        "height": 440,
        "content": "## Data Enrichment with Yelp data extraction\n"
      },
      "typeVersion": 1
    },
    {
      "id": "16b82333-c8df-4614-b1ef-3e58078f61f7",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1620,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 660,
        "height": 260,
        "content": "## Step 1 : Set the Input Fields\n\nurl : https://www.google.com/maps/search/\nwebhook notification url: https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db\nsearch : dentists+in+texas/?q=dentists+in+texas\nzone : serp_api1\nstart : 0\nnum : 20\n"
      },
      "typeVersion": 1
    },
    {
      "id": "680fec55-f61a-4870-bd01-6308ee0828c0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 660,
        "height": 260,
        "content": "## Step 2 : Set the Credentials\n\nSet the credentials for \n\n1. Bright Data\n2. Google Gemini "
      },
      "typeVersion": 1
    },
    {
      "id": "7448179e-4dc2-4665-9986-12aa7d925fb4",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1620,
        80
      ],
      "parameters": {
        "color": 6,
        "width": 660,
        "height": 240,
        "content": "## Step 3 : Configure or Set the Output Nodes\n\n1. Disk location to persist\n2. Google Sheet"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9b2792c7-0797-4d4b-b2a3-d6c05e6d16e7",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Update Google Sheets for Structured Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "MCP Search Client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set input fields": {
      "main": [
        [
          {
            "node": "Perform Bright Data Web Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Search Client": {
      "main": [
        [
          {
            "node": "Search Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Data Extractor": {
      "main": [
        [
          {
            "node": "MCP Client for Web Scraping",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Google Maps Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Google Maps Data Extractor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Maps Data Extractor": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create a binary data for Structured Data Extract",
            "type": "main",
            "index": 0
          },
          {
            "node": "Initiate a Webhook Notification for Structured Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MCP Client for Web Scraping": {
      "main": [
        [
          {
            "node": "Create a binary data for Structured Data Extract for Yelp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write the Yelp content to disk": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Perform Bright Data Web Request": {
      "main": [
        [
          {
            "node": "Google Maps Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Set input fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model for Google Search": {
      "ai_languageModel": [
        [
          {
            "node": "Search Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser for Google Search": {
      "ai_outputParser": [
        [
          {
            "node": "Search Data Extractor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Create a binary data for Structured Data Extract": {
      "main": [
        [
          {
            "node": "Write the structured content to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a binary data for Structured Data Extract for Yelp": {
      "main": [
        [
          {
            "node": "Write the Yelp content to disk",
            "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

Community nodes can only be installed on self-hosted instances of n8n.

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

Google Gemini Chat, Chain Llm, Output Parser Structured +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Chain Llm, Output Parser Structured +3
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Agent, Google Gemini Chat +5
AI & RAG

Transform a single quote into a fully-rendered cinematic short video — with voice-over, visuals, and music — then publish it directly to TikTok, Instagram Reels, and YouTube Shorts. This isn’t just au

Agent, HTTP Request, Jwt +7
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

HTTP Request, Google Sheets, OpenRouter Chat +5