{
  "id": "RDxVDTX2mj9U1BO2",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Google Maps leads: names, emails, phones with Apify + Airtable + personalized emails",
  "tags": [],
  "nodes": [
    {
      "id": "1a38e723-d45b-4ec1-ae13-1770aab8cfc9",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        272,
        -48
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "bc63dc4b-5bbc-4b6e-9886-3b7991c4cb05",
      "name": "GO",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -240,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e303891a-36f4-47d1-a0ff-06ae06a7761b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        -928
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 208,
        "content": "![gif](https://i.gifer.com/4aG.gif)"
      },
      "typeVersion": 1
    },
    {
      "id": "94423aac-8826-4f99-9bc5-7fade0182d02",
      "name": "APIFY SCRAPT GOOGLE MAPS",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        32,
        -48
      ],
      "parameters": {
        "url": "YOUR URL ",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n    \"area_height\": 10,\n    \"area_width\": 10,\n    \"emails_only\": true,\n    \"gmaps_url\": \"https://www.google.com/maps/search/centres+de+formation+%C3%A0+proximit%C3%A9+de+Amiens/@49.7566146,2.2528038,9.75z?entry=ttu&g_ep=EgoyMDI1MDgxMy4wIKXMDSoASAFQAw%3D%3D\",\n    \"max_results\": 200,\n    \"search_query\": \"centre de formation\"\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "1239d5a5-8fee-4049-b052-581f0b1558ad",
      "name": "CLEAN DATA MAPPING",
      "type": "n8n-nodes-base.set",
      "position": [
        544,
        -48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "91a75c6f-35b8-42da-8e6f-7819146738da",
              "name": "Soci\u00e9t\u00e9",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "935cde97-255a-48b2-ab31-e4f9e8090370",
              "name": "Mail",
              "type": "string",
              "value": "={{ $json.email }}"
            },
            {
              "id": "9a97e5ed-d4c6-459a-815c-bfa657325353",
              "name": "T\u00e9l\u00e9phone",
              "type": "string",
              "value": "={{ $json.phone_number }}"
            },
            {
              "id": "72aeb15f-c2e7-4995-94ef-1deda482cdc1",
              "name": "Site Web",
              "type": "string",
              "value": "={{ $json.website_url }}"
            },
            {
              "id": "a3dc6fc2-2a8e-4974-9975-0bd768f776d9",
              "name": "Linkedin",
              "type": "string",
              "value": "={{ $json.linkedin }}"
            },
            {
              "id": "d90903e6-4b18-45ea-b0d0-e836f6996d6e",
              "name": "Facebook",
              "type": "string",
              "value": "={{ $json.facebook }}"
            },
            {
              "id": "d8b054b7-4b4f-446c-8d43-df1f183d7885",
              "name": "Ville",
              "type": "string",
              "value": "={{ $json.city }} "
            },
            {
              "id": "79d3f281-fd47-4bf0-bfeb-5db91af83ea8",
              "name": "Cat\u00e9gorie centre formation",
              "type": "string",
              "value": "={{ $json.google_business_categories }}"
            },
            {
              "id": "41a8eb11-c02a-4e0a-ba35-3985dd42dd08",
              "name": "Notes google maps",
              "type": "string",
              "value": "={{ $json.reviews_number }} avis avec une note de {{ $json.review_score }} / 5 "
            },
            {
              "id": "40c0b0ef-4ad3-4138-9c35-ca5e817574d9",
              "name": "Lien Google MAP ",
              "type": "string",
              "value": "={{ $json.google_maps_url }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2f44f519-83b5-45f5-8c97-572eb0830239",
      "name": "AIRTABLE CREATE RECORD",
      "type": "n8n-nodes-base.airtable",
      "position": [
        960,
        -48
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appA6eMHOoquiTCeO",
          "cachedResultUrl": "https://airtable.com/appA6eMHOoquiTCeO",
          "cachedResultName": "GOOGLE MAPS SCRAPT"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblZFszM5ubwwSYDK",
          "cachedResultUrl": "https://airtable.com/appA6eMHOoquiTCeO/tblZFszM5ubwwSYDK",
          "cachedResultName": "Google maps scrapt"
        },
        "columns": {
          "value": {
            "Mail": "={{ $json.Mail }}",
            "Ville": "={{ $json.Ville }}",
            "Facebook": "={{ $json.Facebook }}",
            "Linkedin": "={{ $json.Linkedin }}",
            "Site Web": "={{ $json['Site Web'] }}",
            "Soci\u00e9t\u00e9": "={{ $json['Soci\u00e9t\u00e9'] }}",
            "T\u00e9l\u00e9phone": "={{ $json['T\u00e9l\u00e9phone'] }}",
            "Lien Google Maps": "={{ $json['Lien Google MAP '] }}",
            "Notes google maps": "={{ $json['Notes google maps'] }}",
            "Cat\u00e9gorie centre formation": "={{ $json['Cat\u00e9gorie centre formation'] }}"
          },
          "schema": [
            {
              "id": "Soci\u00e9t\u00e9",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Soci\u00e9t\u00e9",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mail",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Mail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T\u00e9l\u00e9phone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "T\u00e9l\u00e9phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Site Web",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Site Web",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Linkedin",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Linkedin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Facebook",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Facebook",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ville",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Ville",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Cat\u00e9gorie centre formation",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Cat\u00e9gorie centre formation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Notes google maps",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Notes google maps",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Lien Google Maps",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Lien Google Maps",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "118454ed-e384-40fe-b95a-111b71c5c9e7",
      "name": "SEND EMAIL AUTOMATIC",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1376,
        -48
      ],
      "parameters": {
        "sendTo": "={{ $json.fields.Mail }}",
        "message": "=<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.6;color:#111;max-width:620px;margin:0 auto;padding:18px\">  \n  <p>Hello {{ $json.fields['Soci\u00e9t\u00e9'] }} team,</p>  \n\n  <p>I design custom automations for training centers. Goal: <strong>zero repetitive manual tasks</strong>, from registration to invoicing.</p>  \n\n  <ul style=\"padding-left:18px;margin:10px 0\">  \n    <li>Registrations \u2192 Airtable + automatic file generation (Drive/PDF).</li>  \n    <li>Invitations & reminders \u2192 scheduled email/SMS.</li>  \n    <li>Attendance (e.g. EduSign) \u2192 automatic export & archiving.</li>  \n    <li>Invoicing & OPCO files \u2192 generation + storage in the right folders.</li>  \n    <li>Weekly reporting \u2192 KPIs sent by email/Slack.</li>  \n  </ul>  \n\n  <p style=\"margin-top:12px\">  \n    <em>Info:</em> {{ $json.fields['Soci\u00e9t\u00e9'] }} in {{ $json.fields.Ville }}  \n    \u2014 website: <a href=\"{{ $json.fields['Site Web'] }}\" style=\"color:#0b5fff\">{{ $json.fields['Site Web'] }}</a>  \n    {{ $json.fields['Notes google maps'] ? ('\u2014 ' + $json.fields['Notes google maps']) : '' }}  \n  </p>  \n\n  <p>Would you be open to a quick <strong>15-min call</strong> (video) where I show you a mini-workflow adapted to {{ $json.fields['Soci\u00e9t\u00e9'] }}?</p>  \n\n  <p style=\"margin:16px 0\">  \n    <a href=\"https://calendly.com/ton-lien/15min\" style=\"background:#0b5fff;color:#fff;text-decoration:none;padding:10px 14px;border-radius:8px;display:inline-block\">Book a slot</a>  \n  </p>  \n\n  <p>Talk soon,<br/>Baptiste Fort</p>  \n</div>\n",
        "options": {},
        "subject": "={{ $json.fields['Soci\u00e9t\u00e9'] }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e7b95129-ab76-48d6-b7ad-f006c4ce38c2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -336
      ],
      "parameters": {
        "height": 464,
        "content": "## **Step 1 \u2013 GO Trigger**  \n- **Node**: Manual Trigger  \n- **Purpose**: Start the workflow manually.  \n\ud83d\udc49 You can replace this trigger with a **Webhook** (to launch the flow via a URL) or a **Cron** (to run it automatically on a schedule).  "
      },
      "typeVersion": 1
    },
    {
      "id": "53d9dca3-704c-4d6e-9537-b0c2f0432634",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -768
      ],
      "parameters": {
        "color": 2,
        "width": 256,
        "height": 896,
        "content": "## **Step 2 \u2013 Scrape Google Maps**  \n- **Node**: HTTP Request  \n- **Method**: `POST`  \n\n**Where to find the Apify URL?**  \n1. Go to [Google Maps Email Leads Fast Scraper](https://console.apify.com/actors/j66N0LgqJT3a7fSzu/input)  \n2. Click on **API** (top right)  \n3. Open **API Endpoints**  \n4. Copy the URL of the **3rd option**: *Run Actor synchronously and get dataset items*  \n\n\ud83d\udc49 This URL already includes your **Apify API token**.  \n\n **Body Content Type**: JSON  \n- **Body JSON (example)**:  \n\n- **Body Content Type**: JSON  \n- **Body JSON (example)**:  \n\n*{  \n  \"area_height\": 10,  \n  \"area_width\": 10,  \n  \"emails_only\": true,  \n  \"gmaps_url\": \"https://www.google.com/maps/search/training+centers+near+Amiens/\",  \n  \"max_results\": 200,  \n  \"search_query\": \"training center\"  \n}*  "
      },
      "typeVersion": 1
    },
    {
      "id": "0d2bf046-8eae-463e-b3a9-46212f2080a1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -336
      ],
      "parameters": {
        "color": 3,
        "height": 464,
        "content": "## Step 3 \u2013 Wait  \n\n- **Node**: Wait  \n- **Purpose**: Give the scraper enough time to return data.  \n- **Recommended delay**: *10 seconds* (adjust if needed).  \n\n\ud83d\udc49 This ensures that Apify has finished processing before we continue.  "
      },
      "typeVersion": 1
    },
    {
      "id": "cb179395-d2bf-424a-b1a7-6c4df0b3621b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -624
      ],
      "parameters": {
        "color": 4,
        "width": 304,
        "height": 752,
        "content": "## Step 4 \u2013 Mapping  \n\n- **Node**: Set  \n- **Purpose**: Clean and reorganize the raw dataset into structured fields that match Airtable columns.  \n\n**Assignments (example):**  \n\n*Company = {{ $json.name }}*  \n*Email = {{ $json.email }}*  \n*Phone = {{ $json.phone_number }}*  \n*Website = {{ $json.website_url }}*  \n*LinkedIn = {{ $json.linkedin }}*  \n*Facebook = {{ $json.facebook }}*  \n*City = {{ $json.city }}*  \n*Category = {{ $json.google_business_categories }}*  \n*Google Maps Reviews = {{ $json.reviews_number }} reviews, rating {{ $json.review_score }}/5*  \n*Google Maps Link = {{ $json.google_maps_url }}*  \n\n\ud83d\udc49 **Result**: The data is now clean and ready for Airtable."
      },
      "typeVersion": 1
    },
    {
      "id": "c852694e-bb9c-4e95-bf48-12da1b5fe71c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -1088
      ],
      "parameters": {
        "color": 5,
        "width": 512,
        "height": 1216,
        "content": "## Step 5 \u2013 Airtable Storage  \n\n- **Node**: Airtable \u2192 Create Record  \n- **Parameters**:  \n  - **Credential to connect with**: Airtable Personal Access Token account  \n  - **Resource**: Record  \n  - **Operation**: Create  \n  - **Base**: Select from list \u2192 your base (example: *GOOGLE MAPS SCRAPT*)  \n  - **Table**: Select from list \u2192 your table (example: *Google maps scrapt*)  \n  - **Mapping Column Mode**: Map Each Column Manually  \n\n\ud83d\udc49 To get your **Base ID** and **Table ID**, open your Airtable in the browser:  \n*https://airtable.com/appA6eMHOoquiTCeO/tblZFszM5ubwwSYDK*  \n\nHere:  \n- Base ID = *appA6eMHOoquiTCeO*  \n- Table ID = *tblZFszM5ubwwSYDK*  \n\n### Authentication  \n\n1. Go to: [https://airtable.com/create/tokens](https://airtable.com/create/tokens)  \n2. Create a new Personal Access Token  \n3. Give it access to the correct base  \n4. Copy the token into n8n credentials (select **Airtable Personal Access Token**).  \n\n\n### Field Mapping (example)  \n\n*Company: {{ $json['Company'] }}*  \n*Email: {{ $json.Email }}*  \n*Phone: {{ $json['Phone'] }}*  \n*Website: {{ $json['Website'] }}*  \n*LinkedIn: {{ $json.LinkedIn }}*  \n*Facebook: {{ $json.Facebook }}*  \n*City: {{ $json.City }}*  \n*Category: {{ $json['Category'] }}*  \n*Google Maps Reviews: {{ $json['Google Maps Reviews'] }}*  \n*Google Maps Link: {{ $json['Google Maps Link'] }}*  \n\n\ud83d\udc49 **Result**: Each lead scraped from Google Maps is automatically saved into Airtable, ready to be filtered, sorted, or used for outreach."
      },
      "typeVersion": 1
    },
    {
      "id": "1e09688f-058c-46a7-a96b-a1a645e3de9b",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        -720
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 848,
        "content": "## Step 6 \u2013 Automatic Email  \n\n- **Node**: Gmail \u2192 Send Email  \n- **Parameters**:  \n  - **To**: *= {{ $json.fields.Email }}*  \n  - **Subject**: *= {{ $json.fields['Company'] }}*  \n  - **Message**: HTML email with dynamic lead details.  \n\n**Example HTML message:**  \n\n*Hello {{ $json.fields['Company'] }} team,*  \n\n*I design custom automations for training centers.*  \n*Goal: zero repetitive manual tasks, from registration to invoicing.*  \n\n*Details: {{ $json.fields['Company'] }} in {{ $json.fields.City }} \u2014 website: {{ $json.fields['Website'] }} \u2014 {{ $json.fields['Google Maps Reviews'] }}*  \n\n*Interested in a quick 15-min call to see a live demo?*  \n\n\ud83d\udc49 **Result**: Each contact receives a fully personalized email with their company name, city, website, and Google Maps rating."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "fceb5fdc-0432-44c5-9b74-70d517601074",
  "connections": {
    "GO": {
      "main": [
        [
          {
            "node": "APIFY SCRAPT GOOGLE MAPS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "CLEAN DATA MAPPING",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CLEAN DATA MAPPING": {
      "main": [
        [
          {
            "node": "AIRTABLE CREATE RECORD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AIRTABLE CREATE RECORD": {
      "main": [
        [
          {
            "node": "SEND EMAIL AUTOMATIC",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "APIFY SCRAPT GOOGLE MAPS": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}