by Agent Circle
This workflow demonstrates how to automate the extraction of business emails from Google Maps results using a specific keyword. It streamlines the process of finding, filtering, and saving contact emails into a Google Sheet, eliminating the need for tedious manual research. This tool is perfect for those who need to collect business email addresses for outreach, research, or marketing purposes, especially those whose success depends on building and managing business relationships at scale. Sales and Lead Generation Teams**: Quickly build targeted business email lists for efficient cold outreach and follow-up. Marketing Agencies and Freelancers**: Effortlessly gather contact details for potential clients in specific niches or locations to power outreach campaigns. Recruiters and Talent Acquisition Specialists**: Easily collect company contacts to connect with HR or hiring managers in targeted industries or regions. Event Organizers and B2B Promoters**: Rapidly compile relevant business emails for event invitations, sponsorship proposals, or promotional efforts. Market Researchers and Data Analysts**: Automate large-scale collection of business emails to support industry analysis and data-driven research. How It Works A target keyword (e.g., “n8n workflow”) should be entered in Node Fields - Set Keyword / Phrase. Then, the process is triggered by clicking Test Workflow or Execute Workflow. The workflow queries Google Maps, collects keyword-related website URLs from its HTML, and filters for only valid website URLs. Next, it removes duplicate website URLs to ensure each is processed only once later. For every unique valid website URL, the workflow sends an HTTP request to extract all potential email addresses from the website’s content in a loop. After that, the emails are passed through another loop and a code node (Code – Match Email) to ensure each one is a valid, properly formatted email address (not just random text). Any invalid emails are filtered out during this step. All valid emails are then collected and prepared for further processing. The workflow then splits out the results and removes any duplicate emails to ensure each address appears only once. Finally, the list of unique, verified emails (directly related to your chosen keyword) is saved to your connected Google Sheet for easy access and follow-up. How To Set Up Download the working package. Import the package into your n8n interface. Duplicate the Google Maps - Crawl Emails By Keyword Google Sheets template into your Google Sheets account. Set up necessary credentials in Google Cloud Console for Google Sheets access and usability in Node Google Sheets - Update Data. Set up a GET method to access Google Maps in Node HTTP Request - Get Sites. Enter your desired keyword or phrase in Node Fields - Set Keyword / Phrase. Start the workflow in n8n. Wait a few minutes for the process to finish. Check the list of all valid emails related to your keyword/phrase in the connected Google Sheet. Requirements Basic setup in Google Cloud Console (OAuth or API Key method enabled) with enabled access to Google Sheets. Access to Google Maps. How To Customize Adjust the Keyword Input: You can easily change the keyword or phrase you want to search for by editing the second node, **Fields – Set Keyword / Phrase, in your n8n workflow. Add Follow-up Steps**: Modify the workflow to even trigger follow-up actions like sending emails automatically. Need Help? If you need a step-by-step guide to set up this workflow or want it customized for your specific business needs, feel free to reach out to Agent Circle. We’re always here to support and help you to bring automation ideas to life. Join our community on different platforms for assistance, inspiration and tips from others. Website: https://www.agentcircle.ai/ Etsy: https://www.etsy.com/shop/AgentCircle Gumroad: http://agentcircle.gumroad.com/ Discord Global: https://discord.gg/d8SkCzKwnP FB Page Global: https://www.facebook.com/agentcircle/ FB Group Global: https://www.facebook.com/groups/aiagentcircle/ X: https://x.com/agent_circle YouTube: https://www.youtube.com/@agentcircle LinkedIn: https://www.linkedin.com/company/agentcircle
by Manu
Create a document in Outline for each new GitLab release. Depends on this PR being merged. Copy workflow Set credentials for GitLab and Outline Inside HTTP Request node, set the following: collectionId parentDocumentId (or remove if unwanted) Example result
by Erfan Mostafiz
This n8n workflow scrapes LinkedIn data for your leads, feeds it into a GPT-4 AI agent, and generates laser-targeted, personalized icebreakers you can drop into your cold email campaigns. It automates the personalization process at scale — saving you hours of research while sounding human and thoughtful. Step-by-Step Setup (Beginner Friendly) Step 1: Prepare Your Leads (Input Sheet) Get your lead list based on your industry and niche from Apollo (free) Copy the entire link Go to Apify and use this Apollo Scraper to scrape the leads. Download the result as CSV and upload the CSV to Google Sheets Add a column at the end of the Sheet. Name this column as "status". Mark the entire column (every row) as "un-enriched" (this is important) Connect your Google Sheets account to n8n The workflow will pull leads from this sheet where status = un-enriched Step 2: Set Your Credentials Google Sheets: Connect your account to n8n using OAuth2 OpenAI: Add your OpenAI API credentials Apify: Visit Apify Console to get your Apify API key Use this Apify LinkedIn Profile Scraper and copy the actorID --> get it from the URL : https://console.apify.com/:actorID/input Paste both Apify API Key and ActorID into the “Set Apify Tokens” node Step 3: Customize the AI Agent In the node “Generate Personalized Icebreaker”, adjust the system prompt. Update it with your own niche, offer, tone, and insights Keep the JSON output format exactly as shown. The rest of the workflow depends on it Step 4: Run the Workflow Click "Execute Workflow" The system will: -- Pull all unenriched leads -- Filter out entries without email -- Scrape LinkedIn profiles using Apify -- Use GPT-4 to write a short, personalized icebreaker -- Save the result to a separate “Enriched” sheet -- Mark those leads as “enriched” in your original sheet How It Works Behind the Scenes Manual Trigger starts the workflow Get Raw Leads from a Google Sheet (filter = un-enriched) Filter for Valid Emails (hasEmail?) Loop Over Leads Set Apify API credentials Call Apify’s LinkedIn Scraper using each lead's LinkedIn URL Aggregate the scraped data Simplify fields for AI prompt Call OpenAI GPT-4.1 Mini with structured, data-rich prompt to generate icebreaker Append results to Enriched Sheet Update original list’s status to prevent reprocessing Loop continues to the next lead Best Practices for Successful Use Clean your leads: Remove unnecessary columns from your Google Sheet raw lead list Throttle large batches: The Apify actor and OpenAI calls may hit rate limits. Process in small batches. Customize prompt deeply: The better your AI instructions, the more believable your icebreakers will sound. Use shortened company names and local slang: The system prompt already does this — keep it. Avoid fluff: Keep the tone Spartan, specific, and real. Ideal Use Cases Cold email campaigns for SMB SaaS, agency offers, B2B sales Personalized intros for LinkedIn DMs Data enrichment for lead gen automation Integrating with tools like Instantly.ai, Smartlead, or Mailshake Demo Link Watch the full walkthrough and see it in action: 👉 Watch me build this LIVE on YouTube
by Lorena
This workflow synchronizes files one-way from Google Drive to AWS S3. Google Drive Trigger node** triggers the workflow when a new file is added to the drive. AWS S3 node** gets all files stored in an S3 bucket. Merge node** merges the files from Google Drive and AWS S3 by key (file name) and keeps only the new file. AWS S3 node** uploads the new file in the S3 bucket.
by Jan Oberhauser
Triggers workflow all two minutes Reads data from a Google Spreadsheet (in example Sheet Data columns A to G) Write the data unchanged in two different Spreadsheets with same Sheet name and columns, expressions are optional)
by mike
The “Write Binary File” expects binary data. The JSON data is, however, JSON ;) There should really be a node that allows moving data around between both of them. For now, it can be done with a Function-Node. At least till a proper one is in place. The first node is example data, wich you can customize or replace. The second node named “Make Binary” is the important one with the custom code which makes the data binary and writes it to the correct location.
by n8n Team
Who this is for Every who's interested in seeing how merging items works in n8n What this workflow does This workflow generates two sets of sample data: one with names and corresponding languages, and another with greetings and corresponding languages using the Code node. It then merges these two datasets using the Merge node based on the common “language” field, combining all entries that share the same language.
by Jan Oberhauser
This workflow returns the current weather at a predefined or given city and returns it so that it can be displayed with bash-dash. By default does it return the weather in Berlin if no city got defined. That default can be changed in the "Set City" node. Example usage: \- weather london Example bash-dash config: commands[weather]="http://localhost:5678/webhook/weather"
by Tom
This workflow shows a no code approach to creating a HTML table based on Google Sheets data. To run the workflow: Make sure you have a Google Sheet with a header row and some data in it. Grab your sheet ID: Add it to the Google Sheets node: Activate the workflow or execute it manually Visit the URL provided by the webhook node in your browser (production URL if the workflow is active, test URL if the workflow is executed manually)
by Jan Oberhauser
Receives data from an incoming HTTP Request Reads file from internet Writes data on image Returns the data The URL to call will look like this: http://localhost:5678/webhook-test/webhook/test?name=Jim Once called it will return an image like this:
by Pawel
This is a simple temlate that will allow you to customise the notifications in Radarr, Sonarr, Bazarr and similar. By default the notifications are configured to be sent to discord and look similar to the default ones but are just minimalistic. All you need to configure is in your Radarr etc. instances to have Webhook notification type and here point to your Discord channel webhook.
by Tom
This workflow shows how to download an image file from S3 and pass it on to Textract for text extraction. The workflow uses two nodes: AWS S3**: This node will download a receipt file from S3 AWS Textract**: This node connects to Aamazon's Textract service to extract text from the receipt file