AutomationFlowsMarketing & Ads › Scrape Targeted Leads From Google Maps & Linkedin to Supabase Using Apify

Scrape Targeted Leads From Google Maps & Linkedin to Supabase Using Apify

ByTUMUSIME David @tumusime on n8n.io

This template is perfect for sales teams, marketing professionals, recruiters, and business development specialists who need to efficiently collect targeted lead data from multiple sources. Whether you're building prospect lists, conducting market research, or expanding your…

Event trigger★★★★☆ complexity12 nodesSupabase@Apify/N8N Nodes ApifyForm Trigger
Marketing & Ads Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

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

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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "a4c1e9f4-bd7b-49f7-b9a0-c55d13c415c7",
      "name": "save_linkedin",
      "type": "n8n-nodes-base.supabase",
      "position": [
        80,
        -48
      ],
      "parameters": {
        "tableId": "linkedin",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "publicidentifier",
              "fieldValue": "={{ $json.publicIdentifier }}"
            },
            {
              "fieldId": "linkedinurl",
              "fieldValue": "={{ $json.linkedinUrl }}"
            },
            {
              "fieldId": "name",
              "fieldValue": "={{ $json.name }}"
            },
            {
              "fieldId": "headline",
              "fieldValue": "={{ $json.headline }}"
            },
            {
              "fieldId": "about",
              "fieldValue": "={{ $json.about }}"
            },
            {
              "fieldId": "premium",
              "fieldValue": "={{ $json.premium }}"
            },
            {
              "fieldId": "verified",
              "fieldValue": "={{ $json.verified }}"
            },
            {
              "fieldId": "openprofile",
              "fieldValue": "={{ $json.openProfile }}"
            },
            {
              "fieldId": "topskills",
              "fieldValue": "={{ $json.topSkills }}"
            },
            {
              "fieldId": "connectionscount",
              "fieldValue": "={{ $json.connectionsCount }}"
            },
            {
              "fieldId": "followercount",
              "fieldValue": "={{ $json.followerCount }}"
            },
            {
              "fieldId": "latest_experience",
              "fieldValue": "={{ $json.latest_experience }}"
            },
            {
              "fieldId": "education",
              "fieldValue": "={{ $json.education }}"
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "retryOnFail": false,
      "typeVersion": 1
    },
    {
      "id": "23282df3-60fd-4ebd-9965-5a9b6475a0db",
      "name": "save_googlemaps",
      "type": "n8n-nodes-base.supabase",
      "position": [
        80,
        -240
      ],
      "parameters": {
        "tableId": "googlemaps",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "title",
              "fieldValue": "={{ $json.title }}"
            },
            {
              "fieldId": "category_name",
              "fieldValue": "={{ $json.categoryName }}"
            },
            {
              "fieldId": "address",
              "fieldValue": "={{ $json.address }}"
            },
            {
              "fieldId": "neighborhood",
              "fieldValue": "={{ $json.neighborhood }}"
            },
            {
              "fieldId": "street",
              "fieldValue": "={{ $json.street }}"
            },
            {
              "fieldId": "city",
              "fieldValue": "={{ $json.city }}"
            },
            {
              "fieldId": "postal_code",
              "fieldValue": "={{ $json.postalCode }}"
            },
            {
              "fieldId": "state",
              "fieldValue": "={{ $json.state }}"
            },
            {
              "fieldId": "country_code",
              "fieldValue": "={{ $json.countryCode }}"
            },
            {
              "fieldId": "website",
              "fieldValue": "={{ $json.website }}"
            },
            {
              "fieldId": "phone",
              "fieldValue": "={{ $json.phone }}"
            },
            {
              "fieldId": "phone_unformatted",
              "fieldValue": "={{ $json.phoneUnformatted }}"
            },
            {
              "fieldId": "location",
              "fieldValue": "={{ $json.location }}"
            },
            {
              "fieldId": "total_score",
              "fieldValue": "={{ $json.totalScore }}"
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "retryOnFail": false,
      "typeVersion": 1
    },
    {
      "id": "6d0fa79a-4121-473f-8441-125a0356fcb9",
      "name": "get_linkedin",
      "type": "n8n-nodes-base.set",
      "position": [
        -144,
        -48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "324600d2-fd7a-4236-a00b-d1510e13bf1a",
              "name": "publicIdentifier",
              "type": "string",
              "value": "={{ $json.publicIdentifier }}"
            },
            {
              "id": "544ef597-b06a-4b42-b4aa-c07e1e16a928",
              "name": "linkedinUrl",
              "type": "string",
              "value": "={{ $json.linkedinUrl }}"
            },
            {
              "id": "2ceec80c-11a2-41a2-848c-c7103395024f",
              "name": "name",
              "type": "string",
              "value": "={{ $json.firstName }} {{ $json.lastName }}"
            },
            {
              "id": "36f610a3-4146-413d-8101-e3699e1083f1",
              "name": "headline",
              "type": "string",
              "value": "={{ $json.headline }}"
            },
            {
              "id": "d43208d3-fc30-4596-845e-72f8f95cc0c2",
              "name": "about",
              "type": "string",
              "value": "={{ $json.about }}"
            },
            {
              "id": "ea19b2d9-4d60-4e32-92a0-9fb5a9fb087f",
              "name": "premium",
              "type": "boolean",
              "value": "={{ $json.premium }}"
            },
            {
              "id": "51a8c2d6-de2c-47cf-82ab-616121b48239",
              "name": "verified",
              "type": "boolean",
              "value": "={{ $json.verified }}"
            },
            {
              "id": "3e0e0887-2ef4-4e16-9618-27bb8e965d93",
              "name": "topSkills",
              "type": "string",
              "value": "={{ $json.topSkills }}"
            },
            {
              "id": "5a64154e-93e0-4b5e-a03a-961b84c17654",
              "name": "connectionsCount",
              "type": "number",
              "value": "={{ $json.connectionsCount }}"
            },
            {
              "id": "1b15c679-9cd0-4cf6-9295-771caddbd5ad",
              "name": "followerCount",
              "type": "number",
              "value": "={{ $json.followerCount }}"
            },
            {
              "id": "6cc42ac9-b1fc-4834-850f-95994fc555fa",
              "name": "latest_experience",
              "type": "string",
              "value": "={{ $json.experience.last().companyLinkedinUrl }}\n{{ $json.experience.last().companyName }}\n{{ $json.experience.last().duration }}"
            },
            {
              "id": "5b062d0c-3d2d-4fe9-93a2-7f8a263da885",
              "name": "education",
              "type": "string",
              "value": "={{ $json.education.last().schoolName }}"
            },
            {
              "id": "1005d779-fc36-412a-abc4-f02287a93f0f",
              "name": "openProfile",
              "type": "boolean",
              "value": "={{ $json.openProfile }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9b145117-9ada-43bd-a3e8-e276a0fa33c3",
      "name": "set_google_maps_column",
      "type": "n8n-nodes-base.set",
      "position": [
        -144,
        -240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ad340224-6836-4ff6-a457-77f476bb9f2a",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "27b479f4-f990-45a1-8575-b82eb9506c00",
              "name": "categoryName",
              "type": "string",
              "value": "={{ $json.categoryName }}"
            },
            {
              "id": "d7fe3a00-ffbb-4dae-9ef8-df92ac9f9881",
              "name": "address",
              "type": "string",
              "value": "={{ $json.address }}"
            },
            {
              "id": "2c055b54-79d9-4143-b89c-9dde69816f2a",
              "name": "neighborhood",
              "type": "string",
              "value": "={{ $json.neighborhood }}"
            },
            {
              "id": "9310a5a7-ab34-49bc-8373-c05b3dc10d24",
              "name": "street",
              "type": "string",
              "value": "={{ $json.street }}"
            },
            {
              "id": "abd0544f-f111-47c5-9f8b-4de6ef0a26e1",
              "name": "city",
              "type": "string",
              "value": "={{ $json.city }}"
            },
            {
              "id": "7c112e7e-4292-49f7-b198-5f4245960bc9",
              "name": "postalCode",
              "type": "string",
              "value": "={{ $json.postalCode }}"
            },
            {
              "id": "507ca314-936a-46d8-91b8-d9b0ed8d04c5",
              "name": "state",
              "type": "string",
              "value": "={{ $json.state }}"
            },
            {
              "id": "f6286dc0-5206-4ba7-a676-b2813665337d",
              "name": "countryCode",
              "type": "string",
              "value": "={{ $json.countryCode }}"
            },
            {
              "id": "056fdf31-e37c-477c-874a-c624be91511b",
              "name": "website",
              "type": "string",
              "value": "={{ $json.website }}"
            },
            {
              "id": "b5cb185b-1a1a-44e2-bc82-6919e1c78640",
              "name": "phone",
              "type": "string",
              "value": "={{ $json.phone }}"
            },
            {
              "id": "dcfbdf36-7421-4d3f-a10a-a1e1e7750545",
              "name": "phoneUnformatted",
              "type": "string",
              "value": "={{ $json.phoneUnformatted }}"
            },
            {
              "id": "154c4a8b-dd15-46eb-89e0-41c0727893a1",
              "name": "location",
              "type": "string",
              "value": "=\"lat\":{{ $json.location.lat }}, \"lng\":{{ $json.location.lng }}"
            },
            {
              "id": "ad9ae4ce-4c07-4d1e-82be-91c7a6ac75fc",
              "name": "totalScore",
              "type": "number",
              "value": "={{ $json.totalScore }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "36dae761-f7ad-4c2b-98c3-5ffc9201a293",
      "name": "linkedin_dataset",
      "type": "@apify/n8n-nodes-apify.apify",
      "position": [
        -368,
        -48
      ],
      "parameters": {
        "memory": 2048,
        "actorId": {
          "__rl": true,
          "mode": "list",
          "value": "M2FMdjRVeF1HPGFcc",
          "cachedResultUrl": "https://console.apify.com/actors/M2FMdjRVeF1HPGFcc/input",
          "cachedResultName": "LinkedIn Profile Search Scraper No Cookies \u2705 Find all people \ud83d\udce7 (harvestapi/linkedin-profile-search)"
        },
        "timeout": {},
        "operation": "Run actor and get dataset",
        "customBody": "={\n    \"locations\": [\n        \"{{ $json.Location }}\"\n    ],\n    \"maxItems\": {{ $json['Number of results'] }},\n    \"profileScraperMode\": \"Full\",\n    \"searchQuery\": \"{{ $json['Title/Industry'] }}\"\n} ",
        "authentication": "apifyOAuth2Api"
      },
      "credentials": {
        "apifyOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4c194976-3d85-4f8f-97e8-6cfe677b9d43",
      "name": "googlemaps_dataset",
      "type": "@apify/n8n-nodes-apify.apify",
      "position": [
        -368,
        -240
      ],
      "parameters": {
        "actorId": {
          "__rl": true,
          "mode": "list",
          "value": "nwua9Gu5YrADL7ZDj",
          "cachedResultUrl": "https://console.apify.com/actors/nwua9Gu5YrADL7ZDj/input",
          "cachedResultName": "Google Maps Scraper (compass/crawler-google-places)"
        },
        "timeout": {},
        "operation": "Run actor and get dataset",
        "customBody": "={\n    \"includeWebResults\": false,\n    \"language\": \"en\",\n    \"locationQuery\": \"{{ $json.Location }}\",\n    \"maxCrawledPlacesPerSearch\":{{ $json['Number of results'] }} ,\n    \"maxImages\": 0,\n    \"maximumLeadsEnrichmentRecords\": 0,\n    \"scrapeContacts\": false,\n    \"scrapeDirectories\": false,\n    \"scrapeImageAuthors\": false,\n    \"scrapePlaceDetailPage\": false,\n    \"scrapeReviewsPersonalData\": true,\n    \"scrapeTableReservationProvider\": false,\n    \"searchStringsArray\": [\n        \"{{ $json['Title/Industry'] }}\"\n    ],\n    \"skipClosedPlaces\": false\n}",
        "authentication": "apifyOAuth2Api"
      },
      "credentials": {
        "apifyOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c1f87a4e-f3b8-4f00-8c28-9d6262c11452",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -560
      ],
      "parameters": {
        "width": 368,
        "height": 368,
        "content": "## Main Workflow Overview\nThis workflow automatically scrapes targeted leads from Google Maps and LinkedIn based on your search criteria.\n\nSimply fill out the form with your target industry/title and location, choose your data source, and the workflow will collect and store all lead information in your Supabase database.\n\n**How it works**:\n- Submit form with search criteria\n- Switch routes to appropriate scraper(s)\n- Data gets cleaned and formatted\n- Results saved to database tables\n\n**Perfect for**: Sales teams, recruiters, marketers building prospect lists"
      },
      "typeVersion": 1
    },
    {
      "id": "e2cd5ed7-f208-4835-9ae9-ec99953275b4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -304
      ],
      "parameters": {
        "color": 4,
        "width": 304,
        "height": 400,
        "content": "##  Data Processing & Storage\nAfter scraping, the workflow cleans and structures the data:\n\n**Google Maps Path**:\n- Formats business information (name, address, phone, website)\n- Extracts location coordinates\n- Saves to googlemaps table\n\n**LinkedIn Path**:\n- Combines first/last names\n- Processes experience and education data\n- Extracts connection counts and skills\n- Saves to linkedin table"
      },
      "typeVersion": 1
    },
    {
      "id": "43ac230a-ad0c-4b49-8892-cc2919aa5aeb",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        16
      ],
      "parameters": {
        "color": 6,
        "width": 304,
        "height": 320,
        "content": "## Form Input\nThe form collects 4 key pieces of information:\n\n- Title/Industry: What type of leads you want (e.g., \"CEOs\", \"Marketing Directors\", \"Restaurants\")\n- Location: Geographic area to target (e.g., \"New York\", \"London\", \"California\")\n- Source: Choose Google Maps, LinkedIn, or Both\n- Number of results: How many leads you want to collect (optional)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "918bb23b-2926-4834-aeb0-d32f2659dc3f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        144
      ],
      "parameters": {
        "color": 6,
        "width": 150,
        "height": 80,
        "content": "## [LinkedIn](https://www.linkedin.com/in/tumusime-david/)"
      },
      "typeVersion": 1
    },
    {
      "id": "f6e07253-8d82-4638-aafe-9cf071f3f2bb",
      "name": "Route source",
      "type": "n8n-nodes-base.switch",
      "position": [
        -592,
        -160
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "GoogleMaps",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4c5b4ac5-a380-4197-9a44-5f8723f44dfd",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.Source }}",
                    "rightValue": "Google Maps"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "LinkedIn",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a015bb9d-5688-4ba8-813c-637c473d29ae",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.Source }}",
                    "rightValue": "LinkedIn"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Both",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a0e10c8a-6d54-4b75-970d-9ba81430d26c",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.Source }}",
                    "rightValue": "Both"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "1db7a83b-9721-408c-8ead-5ec2aea3a7b9",
      "name": "Input desired lead",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -816,
        -144
      ],
      "parameters": {
        "options": {},
        "formTitle": "Targeted leads",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Title/Industry",
              "placeholder": "CEOs or Finance",
              "requiredField": true
            },
            {
              "fieldLabel": "Location",
              "placeholder": "Enter targeted location",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Source",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Google Maps"
                  },
                  {
                    "option": "LinkedIn"
                  },
                  {
                    "option": "Both"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "number",
              "fieldLabel": "Number of results",
              "placeholder": "Enter number desired results"
            }
          ]
        },
        "formDescription": "This form is intended to get leads from Google Maps and LinkedIn using the Apify actor."
      },
      "typeVersion": 2.3
    }
  ],
  "connections": {
    "Route source": {
      "main": [
        [
          {
            "node": "googlemaps_dataset",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "linkedin_dataset",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "linkedin_dataset",
            "type": "main",
            "index": 0
          },
          {
            "node": "googlemaps_dataset",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_linkedin": {
      "main": [
        [
          {
            "node": "save_linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "linkedin_dataset": {
      "main": [
        [
          {
            "node": "get_linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Input desired lead": {
      "main": [
        [
          {
            "node": "Route source",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "googlemaps_dataset": {
      "main": [
        [
          {
            "node": "set_google_maps_column",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set_google_maps_column": {
      "main": [
        [
          {
            "node": "save_googlemaps",
            "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

This template is perfect for sales teams, marketing professionals, recruiters, and business development specialists who need to efficiently collect targeted lead data from multiple sources. Whether you're building prospect lists, conducting market research, or expanding your…

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

More Marketing & Ads workflows → · Browse all categories →

Related workflows

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

Marketing & Ads

This repository contains an SLA-based lead routing workflow built in n8n, designed to ensure fast lead response, fair sales distribution, and controlled escalation without relying on a full CRM system

Form Trigger, Google Sheets, Slack +1
Marketing & Ads

This workflow automates the process of finding and collecting contact information for local businesses in any city or region. Built entirely with free-tier APIs, it eliminates the need for expensive s

Form Trigger, HTTP Request
Marketing & Ads

How it works A form trigger accepts an Industry + Location query (e.g. Accountants London). Text Search Page 1 calls Google Places Text Search to return results and a nextpagetoken. Conditional checks

HTTP Request, Form Trigger, Google Sheets
Marketing & Ads

Agencies, sales teams, and service businesses who want to instantly qualify inbound leads with an AI-powered phone call — no manual follow-up needed.

Form Trigger, Google Sheets, HTTP Request
Marketing & Ads

This n8n template automates lead generation by scraping Google Maps using the Olostep API. It extracts business names, locations, websites, phone numbers, and decision-maker names (CEO, Founder, etc.)

Form Trigger, HTTP Request, Google Sheets