by Naveen Choudhary
Who is this for? Marketing agencies, sales teams, lead generation specialists, and business development professionals who need to build comprehensive business databases with contact information for outreach campaigns across any industry. What problem is this workflow solving? Finding businesses and their contact details manually is time-consuming and inefficient. This workflow automates the entire process of discovering businesses through Google Maps and extracting their digital contact information from websites, saving hours of manual research. What this workflow does This automated workflow runs every 30 minutes to: Scrape business data from Google Maps using Apify's Google Places crawler Save basic business information (name, address, phone, website) to Google Sheets Filter businesses that have websites Scrape each business's website content using Firecrawl Extract contact information including emails, LinkedIn, Facebook, Instagram, and Twitter profiles Store all extracted data in organized Google Sheets for easy access and follow-up Setup Required Services: Google Sheets account with OAuth2 setup Apify account with API access for Google Places scraping Firecrawl account with API access for website scraping Pre-setup: Copy this Google Sheet Configure your Apify and Firecrawl API credentials in n8n Set up Google Sheets OAuth2 connection Update the Google Sheet ID in all Google Sheets nodes Quick Start: The workflow includes detailed sticky notes explaining each phase. Simply configure your API credentials and Google Sheet, then activate the workflow. How to customize this workflow to your needs Change search criteria**: Modify the Apify scraping parameters to target different business types (restaurants, gyms, salons, etc.) or locations Adjust schedule**: Change the trigger interval from 30 minutes to your preferred frequency Add more contact fields**: Extend the extraction code to find additional contact information like WhatsApp or Telegram Filter criteria**: Modify the filter conditions to target businesses with specific characteristics Batch size**: Adjust the batch processing to handle more or fewer websites simultaneously Perfect for lead generation, competitor research, and building targeted marketing lists across any industry or business type.
by Sergey Skorobogatov
Accept YooKassa payments and log transactions in Google Sheets ๐งพ Summary This workflow allows you to accept online payments via YooKassa and log both orders and transactions in Google Sheets โ all without writing a single line of code. It supports full payment flow: product selection, payment initiation, webhook processing, refund updates, and payment status checks. ๐ฅ Who is this for? This template is ideal for: Online stores with simple checkout flows Sellers of digital products or info-courses Entrepreneurs using Telegram bots or web forms Anyone needing quick payment integration with Google Sheets tracking ๐ฏ What problem does this workflow solve? Setting up online payments usually requires backend infrastructure. This no-code solution automates the entire payment flow: Handles product listing and price retrieval Initiates payments with email and return URL Listens for payment.succeeded and refund.succeeded events Records every action into structured Google Sheets โ๏ธ What this workflow does 1. GET /products Returns a sorted list of products from a Google Sheet (products). 2. POST /payment Validates required fields (product_id, email, return_url) Checks email format Fetches product data from products Generates a unique idempotence key Sends a request to YooKassa API Saves the order into the orders sheet Returns a payment confirmation link 3. POST /yoomoney Webhook to process payment/refund events: On payment.succeeded, adds entry to transactions On refund.succeeded, updates transaction status 4. GET /status/\:id Returns real-time payment status from YooKassa ๐ Setup Connect credentials: Google Sheets (OAuth2) YooKassa (Basic Auth using shopId and secretKey) Update the following Google Sheets: products: should contain product_id, title, price orders: for saving confirmed purchases transactions: for logging all successful or refunded payments Test endpoints using any HTTP client: Example payload for /payment: { "product_id": "abc123", "email": "user@example.com", "return_url": "https://your.site/success" } ๐ง How to customize this workflow Add delivery logic (e.g., email with product link after successful payment) Replace Google Sheets with a database (e.g., PostgreSQL) Connect Telegram or other messengers for post-payment notifications Add promo codes, discounts, or subscriptions logic ๐ผ Use cases Simple online checkouts Telegram bots selling access Educational product sales MVP e-commerce flows Donation or membership payments ๐ Notes โ Includes Sticky Notes for sections โ Includes error handling and validation โ No custom code needed except UUID generation
by Incrementors
๐ Google Maps Business Phone Number Scraper Using Bright Data API & Google Sheets Integration This template requires a self-hosted n8n instance to run. An automated workflow that extracts business information including phone numbers from Google Maps using Bright Data's API and saves the data to Google Sheets for easy access and analysis. ๐ Overview This workflow provides an automated solution for extracting business contact information from Google Maps based on location and keyword searches. Perfect for lead generation, market research, competitor analysis, and business directory creation. โจ Key Features ๐ฏ Form-Based Input: Easy-to-use form for location and keyword submission ๐บ๏ธ Google Maps Integration: Uses Bright Data's Google Maps dataset for accurate business data ๐ Comprehensive Data Extraction: Extracts business names, addresses, phone numbers, ratings, and more ๐ง Automated Processing: Handles the entire scraping process automatically ๐ Google Sheets Storage: Automatically saves extracted data to organized spreadsheets ๐ Smart Status Checking: Monitors scraping progress with automatic retry logic โก Fast & Reliable: Professional scraping with built-in error handling ๐ฏ Customizable Output: Configurable data fields for specific business needs ๐ฏ What This Workflow Does Input Location:** Geographic area to search (city, state, country) Keywords:** Business type or industry keywords Processing Form Submission: User submits location and keywords through web form API Request: Sends scraping request to Bright Data's Google Maps dataset Status Monitoring: Continuously checks scraping progress Data Retrieval: Fetches completed business data when ready Data Storage: Saves extracted information to Google Sheets Error Handling: Implements retry logic for failed requests Output Data Points | Field | Description | Example | |-------|-------------|---------| | Business Name | Official business name from Google Maps | "Joe's Pizza Restaurant" | | Phone Number | Contact phone number | "+1-555-123-4567" | | Address | Complete business address | "123 Main St, New York, NY 10001" | | Rating | Google Maps rating score | 4.5 | | URL | Google Maps listing URL | "https://maps.google.com/..." | ๐ Setup Instructions Prerequisites n8n instance (self-hosted or cloud) Google account with Sheets access Bright Data account with Google Maps dataset access 5-10 minutes for setup Step 1: Import the Workflow Copy the JSON workflow code from the provided file In n8n: Workflows โ + Add workflow โ Import from JSON Paste JSON and click Import Step 2: Configure Bright Data Set up Bright Data credentials: In n8n: Credentials โ + Add credential โ HTTP Request Auth Enter your Bright Data API key Test the connection Configure dataset: Ensure you have access to Google Maps dataset (gd_m8ebnr0q2qlklc02fz) Verify dataset permissions in Bright Data dashboard Step 3: Configure Google Sheets Integration Create a Google Sheet: Go to Google Sheets Create a new spreadsheet named "Business Data" or similar Copy the Sheet ID from URL: https://docs.google.com/spreadsheets/d/SHEET_ID_HERE/edit Set up Google Sheets credentials: In n8n: Credentials โ + Add credential โ Google Sheets OAuth2 API Complete OAuth setup and test connection Prepare your data sheet with columns: Column A: Name Column B: Address Column C: Rating Column D: Phone Number Column E: URL Step 4: Update Workflow Settings Update Google Sheets node: Open "Save to Google Sheets" node Replace the document ID with your Sheet ID Select your Google Sheets credential Choose the correct sheet/tab name Update Bright Data nodes: Open HTTP Request nodes Replace BRIGHT_DATA_API_KEY with your actual API key Verify dataset ID matches your subscription Step 5: Test & Activate Test the workflow: Activate workflow (toggle switch) Submit test form with location: "New York" and keywords: "restaurants" Verify data appears in Google Sheet Check for proper phone number extraction ๐ Usage Guide Submitting Search Requests Access the form URL provided by n8n Enter the desired location (city, state, or country) Enter relevant keywords (business type, industry, etc.) Submit the form and wait for processing Understanding the Results Your Google Sheet will populate with business data including: Complete business contact information Verified phone numbers from Google Maps Accurate addresses and ratings Direct links to Google Maps listings ๐ง Customization Options Adding More Data Points Edit the "Bright Data API - Request Business Data" node to capture additional fields: Business descriptions Operating hours Reviews count Website URLs Photos and videos Modifying Search Parameters Customize the search behavior: Adjust "limit_per_input" for more or fewer results Modify search type and discovery method Add geographical coordinates for precise targeting ๐จ Troubleshooting Common Issues & Solutions 1. "Bright Data connection failed" Cause:** Invalid API credentials or dataset access Solution:** Verify credentials in Bright Data dashboard, check dataset permissions 2. "No business data extracted" Cause:** Invalid search parameters or no results found Solution:** Try broader keywords or different locations, verify dataset availability 3. "Google Sheets permission denied" Cause:** Incorrect credentials or sheet permissions Solution:** Re-authenticate Google Sheets, check sheet sharing settings 4. "Workflow execution timeout" Cause:** Large search results or slow API response Solution:** Reduce search scope, increase timeout settings, check internet connection ๐ Use Cases & Examples 1. Lead Generation Goal:** Find potential customers in specific areas Search for businesses by industry and location Extract contact information for outreach campaigns Build targeted prospect lists 2. Market Research Goal:** Analyze local business landscape Study competitor density in target markets Identify market gaps and opportunities Gather business intelligence for strategic planning 3. Directory Creation Goal:** Build comprehensive business directories Create industry-specific business listings Maintain updated contact databases Support local business communities ๐ Performance & Limits Expected Performance Processing time:** 1-5 minutes per search depending on results Data accuracy:** 95%+ for active Google Maps listings Success rate:** 90%+ for accessible businesses Concurrent requests:** Depends on Bright Data plan limits Resource Usage Memory:** ~50MB per execution Storage:** Minimal (data stored in Google Sheets) API calls:** 2-3 Bright Data calls + 1 Google Sheets call per search Bandwidth:** ~1-2MB per search request Execution time:** 2-5 minutes for typical searches Scaling Considerations Rate limiting:** Respect Bright Data API limits Error handling:** Implement retry logic for failed requests Data validation:** Add checks for incomplete business data Cost optimization:** Monitor API usage to control expenses Batch processing:** Group multiple searches for efficiency ๐ค Support & Community Getting Help n8n Community Forum:** community.n8n.io Documentation:** docs.n8n.io Bright Data Support:** Contact through your dashboard GitHub Issues:** Report bugs and feature requests Contributing Share improvements with the community Report issues and suggest enhancements Create variations for specific use cases Document best practices and lessons learned ๐ฏ Ready to Use! This workflow provides a solid foundation for automated Google Maps business data extraction. Customize it to fit your specific needs and use cases. Your workflow URL: https://your-n8n-instance.com/workflow/google-maps-scraper For any questions or support, please contact: info@incrementors.com or fill out this form: https://www.incrementors.com/contact-us/
by Agent Studio
Restore backed up workflows from GitHub to your n8n workspace. This workflow was inspired by this one that lets you back up your n8n workflows to GitHub. It will let you restore your backed up workflows in your workspace, without creating duplicates. In case of issue with your instance, it will save you a lot of time to restore them. How it works It retrieves the workflows saved in a GitHub repository. Then compares these saved workflows with the ones in your n8n workspace based on the name. It will only create them if they don't already exist. Set up steps Open the "Global" node and set your own information (see Configuration below) Click on "Test workflow" It will run through all the workflows in the GitHub repository, check if the name doesn't already exist in your workspace and, in this case, create it. Configuration repo.owner: your GitHub owner name repo.name: your GitHub repository name repo.path: the path within the GitHub repository
by Wikus Bergh
Who is this for? This template is ideal for n8n administrators, automation engineers, and DevOps teams who want to maintain bidirectional synchronization between their n8n workflows and GitHub repositories. It helps teams keep their workflow backups up-to-date and ensures consistency between their n8n instance and version control system. What problem is this workflow solving? Managing workflow versions across n8n and GitHub can become complex when changes happen in both places. This workflow solves that by automatically synchronizing workflows bidirectionally, ensuring that the most recent version is always available in both systems without manual intervention or version conflicts. What this workflow does: Runs on a weekly schedule (every Monday) to check for synchronization needs. Fetches all workflows from your n8n instance and compares them with GitHub repository files. Identifies workflows that exist only in n8n and uploads them to GitHub as JSON backups. Identifies workflows that exist only in GitHub and creates them in your n8n instance. For workflows that exist in both places, compares timestamps and syncs the most recent version: If n8n version is newer โ Updates GitHub with the latest workflow If GitHub version is newer โ Updates n8n with the latest workflow Automatically handles file naming, encoding/decoding, and commit messages with timestamps. Setup: Connect GitHub: Configure GitHub API credentials in the GitHub nodes. Note: Use a GitHub Personal Access Token (classic) with repo permissions to read and write workflow files. Connect n8n API: Provide your n8n API credentials in the n8n nodes. Check this doc Configure GitHub Details in the Set GitHub Details node: github_account_name: Your GitHub username or organization github_repo_name: The repository name where workflows should be stored repo_workflows_path: The folder path in your repo (e.g., workflows or n8n-workflows) Adjust Schedule: Modify the Schedule Trigger if you want a different sync frequency (currently set to weekly on Mondays). Test the workflow: Run it manually first to ensure all connections and permissions are working correctly. How to customize this workflow to your needs: Change sync frequency**: Modify the Schedule Trigger to run daily, hourly, or on-demand. Add filtering**: Extend the Filter node to exclude certain workflows (e.g., test workflows, templates). Add notifications**: Insert Slack, email, or webhook notifications to report sync results. Implement conflict resolution**: Add custom logic for handling workflows with the same timestamp. Add workflow validation**: Include checks to validate workflow JSON before syncing. Branch management**: Modify to sync to different branches or create pull requests instead of direct commits. Backup retention**: Add logic to maintain multiple versions or archive old workflows. Key Features: Bidirectional sync**: Handles changes from both n8n and GitHub Timestamp-based conflict resolution**: Always keeps the most recent version Automatic file naming**: Converts workflow names to valid filenames Base64 encoding/decoding**: Properly handles JSON workflow data Comprehensive comparison**: Uses dataset comparison to identify differences Automated commits**: Includes timestamps in commit messages for traceability This automated synchronization workflow provides a robust backup and version control solution for n8n workflows, ensuring your automation assets are always safely stored and consistently available across environments.
by Shiv Gupta
Trustpilot Insights Scraper: Auto Reviews via Bright Data + Google Sheets Sync Overview A comprehensive n8n automation that scrapes Trustpilot business reviews using Bright Data and automatically stores structured data in Google Sheets. Workflow Architecture 1. ๐ Form Trigger Node Purpose: Manual input interface for users Type**: n8n-nodes-base.formTrigger Configuration**: Form Title: "Website URL" Field: "Trustpilot Website URL" Function**: Accepts Trustpilot URL input from users to initiate the scraping process 2. ๐ HTTP Request (Trigger Scraping) Purpose: Initiates scraping on Bright Data platform Type**: n8n-nodes-base.httpRequest Method**: POST Endpoint**: https://api.brightdata.com/datasets/v3/trigger Configuration**: Query Parameters: dataset_id: gd_lm5zmhwd2sni130p include_errors: true limit_multiple_results: 2 Headers: Authorization: Bearer BRIGHT_DATA_API_KEY Body: JSON with input URL and 35+ custom output fields Custom Output Fields The workflow extracts the following data points: Company Information**: company_name, company_logo, company_overall_rating, company_total_reviews, company_about, company_email, company_phone, company_location, company_country, company_category, company_id, company_website Review Data**: review_id, review_date, review_rating, review_title, review_content, review_date_of_experience, review_url, date_posted Reviewer Information**: reviewer_name, reviewer_location, reviews_posted_overall Review Metadata**: is_verified_review, review_replies, review_useful_count Rating Distribution**: 5_star, 4_star, 3_star, 2_star, 1_star Additional Fields**: url, company_rating_name, is_verified_company, breadcrumbs, company_other_categories 3. โ Snapshot Progress Check Purpose: Monitors scraping job status Type**: n8n-nodes-base.httpRequest Method**: GET Endpoint**: https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }} Configuration**: Query Parameters: format=json Headers: Authorization: Bearer BRIGHT_DATA_API_KEY Function**: Receives snapshot_id from previous step and checks if data is ready 4. โ IF Node (Status Check) Purpose: Determines next action based on scraping status Type**: n8n-nodes-base.if Condition**: $json.status === "ready" Logic**: If True: Proceeds to data download If False: Triggers wait cycle 5. ๐ Wait Node Purpose: Implements polling delay for incomplete jobs Type**: n8n-nodes-base.wait Duration**: 1 minute Function**: Pauses execution before re-checking snapshot status 6. ๐ Loop Logic Purpose: Continuous monitoring until completion Flow**: Wait โ Check Status โ Evaluate โ (Loop or Proceed) Prevents**: API rate limiting and unnecessary requests 7. ๐ฅ Snapshot Download Purpose: Retrieves completed scraped data Type**: n8n-nodes-base.httpRequest Method**: GET Endpoint**: https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }} Configuration**: Query Parameters: format=json Headers: Authorization: Bearer BRIGHT_DATA_API_KEY 8. ๐ Google Sheets Integration Purpose: Stores extracted data in spreadsheet Type**: n8n-nodes-base.googleSheets Operation**: Append Configuration**: Document ID: 1yQ10Q2qSjm-hhafHF2sXu-hohurW5_KD8fIv4IXEA3I Sheet Name: "Trustpilot" Mapping: Auto-map all 35+ fields Credentials: Google OAuth2 integration Data Flow User Input (URL) โ Bright Data API Call โ Snapshot ID Generated โ Status Check Loop โ Data Ready Check โ Download Complete Dataset โ Append to Google Sheets Technical Specifications Authentication Bright Data**: Bearer token authentication Google Sheets**: OAuth2 integration Error Handling Includes error tracking in Bright Data requests Conditional logic prevents infinite loops Wait periods prevent API rate limiting Data Processing Mapping Mode**: Auto-map input data Schema**: 35+ predefined fields with string types Conversion**: No type conversion (preserves raw data) Setup Requirements Prerequisites Bright Data Account: Active account with API access Google Account: With Sheets API enabled n8n Instance: Self-hosted or cloud version Configuration Steps API Keys: Configure Bright Data bearer token OAuth Setup: Connect Google Sheets credentials Dataset ID: Verify correct Bright Data dataset ID Sheet Access: Ensure proper permissions for target spreadsheet Environment Variables BRIGHT_DATA_API_KEY: Your Bright Data API authentication token Use Cases Business Intelligence Competitor analysis and market research Customer sentiment monitoring Brand reputation tracking Data Analytics Review trend analysis Rating distribution studies Customer feedback aggregation Automation Benefits Scalability**: Handle multiple URLs sequentially Reliability**: Built-in error handling and retry logic Efficiency**: Automated data collection and storage Consistency**: Standardized data format across all scrapes Limitations and Considerations Rate Limits Bright Data API has usage limitations 1-minute wait periods help manage request frequency Data Volume Limited to 2 results per request (configurable) Large datasets may require multiple workflow runs Compliance Ensure compliance with Trustpilot's terms of service Respect robots.txt and rate limiting guidelines Monitoring and Maintenance Status Tracking Monitor workflow execution logs Check Google Sheets for data accuracy Review Bright Data usage statistics Regular Updates Update API keys as needed Verify dataset ID remains valid Test workflow functionality periodically Workflow Metadata Version ID**: dd3afc3c-91fc-474e-99e0-1b25e62ab392 Instance ID**: bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2 Execution Order**: v1 Active Status**: Currently inactive (requires manual activation) Template Status**: Credentials setup completed For any questions or support, please contact: Email or fill out this form
by Davide
This low-code automation enables all eCommerce store visitors to upload a photo of themselves and virtually โtry onโ a garment in just a few clicks. With this workflow, WooCommerce, Prestashop, Shopify and more merchants can offer a cutting-edge โvirtual try-onโ feature with minimal development effort, enhancing customer engagement and reducing product returns. Key Advantages Zero-Coding, Visual Setup** Build end-to-end e-commerce features with drag-and-drop nodes instead of custom backend code. Asynchronous, Scalable Processing** Non-blocking โWaitโ + โIfโ loop handles multi-second AI jobs gracefully, freeing up the workflow for other tasks. Dynamic Inputs & URLs** Query strings (e.g. ?Product=IMAGE_URL) allow you to embed the form on any product page and pass the garment image on the fly. Seamless User Experience** Instant pop-up within your storefront and automatic redirect to the generated mock-up keeps shoppers engaged without page reloads. Easy Credential Management** API keys, FTP credentials, and webhook IDs are all stored securely in n8nโs credential manager. How It Works Form Submission: A user submits a form with their name, an image of themselves ("Me"), and a hidden product image URL ("Product"). The form is triggered via the On form submission node, which collects the input data. Image Upload: The uploaded image ("Me") is sent to an FTP server for temporary storage using the FTP node. The filename includes a timestamp to ensure uniqueness. Virtual Try-on Request: The Create Image node sends a POST request to the Fal.run API, providing: The uploaded human image URL (from FTP). The product image URL (from the hidden form field). This generates a virtual try-on result. Result Processing: The workflow checks the status of the image generation (Get status node) in a loop (with a 10-second wait between checks) until it is marked as "COMPLETED." Once ready, the final image URL is fetched (Get Url image node) and displayed to the user via a redirect (Form node). User Experience: The user is redirected to the generated try-on image, completing the process. Set Up Steps API Key Setup: Create an account and obtain an API key. Configure the Create Image node with HTTP Header Authentication: Name: Authorization Value: Key YOURAPIKEY FTP/S3 Configuration: Set up an FTP server or S3 bucket to temporarily store uploaded user images. Configure the FTP node with your FTP credentials and storage path. Ecommerce Integration: On your WooCommerce site, add a "Try On" button that opens the form in a pop-up. Dynamically pass the product image URL as a query parameter: Example: https://URL_N8N/form/ca1c314d-46c6-4eeb-b6a5-359XXXXXX?Product=IMAGE_URL Testing: Verify the workflow by submitting a test form and ensuring the virtual try-on image is generated and displayed correctly. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Solomon
Based on Jonathan's work. Check out his templates. How it works This workflow will backup your workflows to GitHub. It uses the n8n API node to export all workflows. It then loops over the data, checks in GitHub to see if a file exists that uses the credential's ID. Once checked it will: update the file on GitHub if it exists; create a new file if it doesn't exist; ignore if it's the same. Who is this for? People wanting to backup their workflows outside the server for safety purposes or to migrate to another server. Check out my other templates ๐ https://n8n.io/creators/solomon/
by Guido X Jansen
Introduction **Manual LinkedIn data collection is time-consuming, error-prone, and results in inconsistent data quality across CRM/database records.** This workflow is great for organizations that struggle with: Incomplete contact records with only LinkedIn URLs but missing profile details Hours spent manually copying LinkedIn information into databases Inconsistent data formats due to copy-paste from LinkedIn (emojis, styled text, special characters) Outdated profile information that doesn't reflect current roles/companies No systematic way to enrich contacts at scale Primary Users Sales & Marketing Teams Event Organizers & Conference Managers for event materials Recruitment & HR Professionals CRM Administrators Specific Problems Addressed Data Completeness: Automatically fills missing profile fields (headline, bio, skills, experience) Data Quality: Sanitizes problematic characters that break databases/exports Time Efficiency: Reduces hours of manual data entry to automated monthly updates Error Handling: Gracefully manages invalid/deleted LinkedIn profiles Scalability: Processes multiple profiles in batch without manual intervention Standardization: Ensures consistent data format across all records Cost Each URL scraped by Apify costs $0.01 to get all the data above. Apify charges per scrape, regardless of how much dta or fields you extract/use. Setup Instructions Prerequisites n8n Instance: Access to a running n8n instance (self-hosted or cloud) NocoDB Account: Database with a table containing LinkedIn URLs Apify Account: Free or paid account for LinkedIn scraping Required fields in NocoDB table Input: single LinkedIn URL NocoDB Field name LinkedIn Output: first/last/full name e-mail bio headline profile pic URL current role country skills current employer employer URL experiences (all previous jobs) personal website publications (articles) NocoDB Field names linkedin_full_name linkedin_first_name: linkedin_headline: linkedin_email: linkedin_bio: linkedin_profile_pic linkedin_current_role linkedin_current_company linkedin_country linkedin_skills linkedin_company_website linkedin_experiences linkedin_personal_website linkedin_publications linkedin_scrape_error_reason linkedin_scrape_last_attempt linkedin_scrape_status linkedin_last_modified Technically you also need an Id field, but that is always there so no need to add it :) n8n Setup 1. Import the Workflow Copy the workflow JSON from the template In n8n, click "Add workflow" โ "Import from JSON" Paste the workflow and click "Import" 2. Configure NocoDB Connection Click on any NocoDB node in the workflow Add new credentials โ "NocoDB Token account" Enter your NocoDB API token (found in NocoDB โ User Settings โ API Tokens) Update the projectId and table parameters in all NocoDB nodes 3. Set Up Apify Integration Create an Apify account at apify.com Generate an API token (Settings โ Integrations โ API) In the workflow, update the Apify token in the "Get Scraper Results" node Configure HTTP Query Auth credentials with your token 4. Map Your Database Fields Review the "Transform & Sanitize Data" node Update field mappings to match your NocoDB table structure Ensure these fields exist in your table: LinkedIn (URL field) linkedin_headline, linkedin_full_name, linkedin_bio, etc. linkedin_scrape_status, linkedin_last_modified 5. Configure the Filter In "Get Guests with LinkedIn" node Adjust the filter to match your requirements Default: (LinkedIn,isnot,null)~and(linkedin_headline,is,null) 6. Test the Workflow Click "Execute Workflow" with Manual Trigger Monitor execution for any errors Verify data is properly updated in NocoDB 7. Activate Automated Schedule Configure the Schedule Trigger node (default: monthly) Toggle the workflow to "Active" Monitor executions in n8n dashboard Customization Options 1. Data Source Modifications Different Database: Replace NocoDB nodes with Airtable, Google Sheets, or PostgreSQL Multiple Tables: Add parallel branches to process different contact tables Custom Filters: Modify the WHERE clause to target specific record subsets 2. Enrichment Fields Add Fields: Include additional LinkedIn data like education, certifications, or recommendations Remove Fields: Simplify by removing unnecessary fields (publications, skills) Custom Transformations: Add business logic for field calculations or formatting 3. Scheduling Options Frequency: Change from monthly to daily, weekly, or hourly Time-based: Set specific times for different timezones Event-triggered: Replace with webhook trigger for on-demand processing 4. Error Handling Enhancement Notifications: Add email/Slack nodes to alert on failures Retry Logic: Implement wait and retry for temporary failures Logging: Add database logging for audit trails 5. Data Quality Rules Validation: Add IF nodes to validate data before updates Duplicate Detection: Check for existing records before creating new ones Data Standardization: Add custom sanitization rules for industry-specific needs 6. Integration Extensions CRM Sync: Add nodes to push data to Salesforce, HubSpot, or Pipedrive AI Enhancement: Use OpenAI to summarize bios or extract key skills Image Processing: Download and store profile pictures locally 7. Performance Optimization Batch Size: Adjust the number of profiles processed per run Rate Limiting: Add delays between API calls to avoid limits Parallel Processing: Split large datasets across multiple workflow executions 8. Compliance Additions GDPR Compliance: Add consent checking before processing Data Retention: Implement automatic cleanup of old records Audit Logging: Track who accessed what data and when These customizations allow the workflow to adapt from simple contact enrichment to complex data pipeline scenarios across various industries and use cases.
by David Ashby
Complete MCP server exposing all Cloudflare Tool operations to AI agents. Zero configuration needed - all 4 operations pre-built. โก Quick Setup Need help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free? Join the community Import this workflow into your n8n instance Activate the workflow to start your MCP server Copy the webhook URL from the MCP trigger node Connect AI agents using the MCP URL ๐ง How it Works โข MCP Trigger: Serves as your server endpoint for AI agent requests โข Tool Nodes: Pre-configured for every Cloudflare Tool operation โข AI Expressions: Automatically populate parameters via $fromAI() placeholders โข Native Integration: Uses official n8n Cloudflare Tool tool with full error handling ๐ Available Operations (4 total) Every possible Cloudflare Tool operation is included: ๐ง Zonecertificate (4 operations) โข Delete a certificate โข Get a certificate โข Get many certificates โข Upload a certificate ๐ค AI Integration Parameter Handling: AI agents automatically provide values for: โข Resource IDs and identifiers โข Search queries and filters โข Content and data payloads โข Configuration options Response Format: Native Cloudflare Tool API responses with full data structure Error Handling: Built-in n8n error management and retry logic ๐ก Usage Examples Connect this MCP server to any AI agent or workflow: โข Claude Desktop: Add MCP server URL to configuration โข Custom AI Apps: Use MCP URL as tool endpoint โข Other n8n Workflows: Call MCP tools from any workflow โข API Integration: Direct HTTP calls to MCP endpoints โจ Benefits โข Complete Coverage: Every Cloudflare Tool operation available โข Zero Setup: No parameter mapping or configuration needed โข AI-Ready: Built-in $fromAI() expressions for all parameters โข Production Ready: Native n8n error handling and logging โข Extensible: Easily modify or add custom logic > ๐ Free for community use! Ready to deploy in under 2 minutes.
by Nick Saraev
Google Maps Email Scraper System Categories: Lead Generation, Web Scraping, Business Automation This workflow creates a completely free Google Maps email scraping system that extracts unlimited business emails without requiring expensive third-party APIs. Built entirely in N8N using simple HTTP requests and JavaScript, this system can generate thousands of targeted leads for any industry or location while operating at 99% free cost structure. Benefits Zero API Costs** - Operates entirely through free Google Maps scraping without expensive third-party services Unlimited Lead Generation** - Extract emails from thousands of Google Maps listings across any industry Geographic Targeting** - Search by specific cities, regions, or business types for precise lead targeting Complete Automation** - From search query to organized email list with minimal manual intervention Built-in Data Cleaning** - Automatic duplicate removal, filtering, and data validation Scalable Processing** - Handle hundreds of businesses per search with intelligent rate limiting How It Works Google Maps Search Integration: Uses strategic HTTP requests to Google Maps search URLs Processes search queries like "Calgary + dentist" to extract business listings Bypasses API restrictions through direct HTML scraping techniques Intelligent URL Extraction: Custom JavaScript regex patterns extract website URLs from Google Maps data Filters out irrelevant domains (Google, schema, static files) Returns clean list of actual business websites for processing Smart Website Processing: Loop-based architecture prevents IP blocking through intelligent batching Built-in delays and redirect handling for reliable scraping Processes each website individually with error handling Email Pattern Recognition: Advanced regex patterns identify email addresses within website HTML Extracts contact emails, info emails, and administrative addresses Handles multiple email formats and validation patterns Data Aggregation & Cleaning: Automatically removes duplicate emails across all processed websites Filters null entries and invalid email formats Exports clean, organized email lists to Google Sheets Required Google Sheets Setup Create a Google Sheet with these exact column headers: Search Tracking Sheet: searches - Contains your search queries (e.g., "Calgary dentist", "Miami lawyers") Email Results Sheet: emails - Contains extracted email addresses from all processed websites Setup Instructions: Create Google Sheet with two tabs: "searches" and "emails" Add your target search queries to the searches tab (one per row) Connect Google Sheets OAuth credentials in n8n Update the Google Sheets document ID in all sheet nodes The workflow reads search queries from the first sheet and exports results to the second sheet automatically. Business Use Cases Local Service Providers** - Find competitors and potential partners in specific geographic areas B2B Sales Teams** - Generate targeted prospect lists for cold outreach campaigns Marketing Agencies** - Build industry-specific lead databases for client campaigns Real Estate Professionals** - Identify businesses in target neighborhoods for commercial opportunities Franchise Development** - Research potential markets and existing competition Market Research** - Analyze business density and contact information across regions Revenue Potential This system transforms lead generation economics: $0 per lead vs. $2-5 per lead from paid databases Process 1,000+ leads daily without hitting API limits Sell as a service for $500-2,000 per industry/location Perfect for agencies offering lead generation to local businesses Difficulty Level: Intermediate Estimated Build Time: 1-2 hours Monthly Operating Cost: $0 (completely free) Watch My Complete Build Process Want to watch me build this entire system live from scratch? I walk through every single step - including the JavaScript code, regex patterns, error handling, and all the debugging that goes into creating a bulletproof scraping system. ๐ฅ Watch My Live Build: "Scrape Unlimited Leads WITHOUT Paying for APIs (99% FREE)" This comprehensive tutorial shows the real development process - including writing custom JavaScript, handling rate limits, and building systems that actually work at scale without getting blocked. Set Up Steps Basic Workflow Architecture: Set up manual trigger for testing and Google Sheets integration Configure initial HTTP request node for Google Maps searches Enable SSL ignore and response headers for reliable scraping URL Extraction Code Setup: Configure JavaScript code node with custom regex patterns Set up input data processing from Google Maps HTML responses Implement URL filtering logic to remove irrelevant domains Website Processing Pipeline: Add "Split in Batches" node for intelligent loop processing Configure HTTP request nodes with proper delays and redirect handling Set up error handling for websites that can't be scraped Email Extraction System: Implement JavaScript code node with email-specific regex patterns Configure email validation and format checking Set up data aggregation for multiple emails per website Data Cleaning & Export: Configure filtering nodes to remove null entries and duplicates Set up "Split Out" node to aggregate emails into single list Connect Google Sheets integration for organized data export Testing & Optimization: Use limit nodes during testing to prevent IP blocking Test with small batches before scaling to full searches Implement proxy integration for high-volume usage Advanced Optimizations Scale the system with: Multi-Page Scraping:** Extract URLs from homepages, then scrape contact pages for more emails Proxy Integration:** Add residential proxies for unlimited scraping without rate limits Industry Templates:** Create pre-configured searches for different business types Contact Information Expansion:** Extract phone numbers, addresses, and social media profiles CRM Integration:** Automatically add leads to sales pipelines and marketing sequences Important Considerations Rate Limiting:** Built-in delays prevent IP blocking during normal usage Scalability:** For high-volume usage, consider proxy services for unlimited requests Compliance:** Ensure proper usage rights for extracted contact information Data Quality:** System includes filtering but manual verification recommended for critical campaigns Check Out My Channel For more advanced automation systems and business-building strategies that generate real revenue, explore my YouTube channel where I share proven automation techniques used by successful agencies and entrepreneurs.
by Mario
Purpose This workflow snippet allows for advanced error catching during retry attempts. There are cases, where you want to check if an item exists first, so you can determine the following actions. Some APIโs do not support an endpoint (e.g. Todoist: completed tasks) to do so, which is why you would work with the error branch, only that this does not work well in combination with the retry functionality. How it works Instead of the builtin retry function of a Node a custom loop is used, to get more granular control in between the iterations If the main executed node fails, the error can be filtered for an expected error, which can trigger a separate action The retries only happen, if an unexpected error happened The workflow only stops, if the defined amount of retries exceeded Setup Copy the nodes into your existing workflow Replace the โReplace meโ placeholder with the Node you want to apply the retry logic on Follow the sticky notes for more instructions and optional settings