# templates

name: Create AI Videos with Scripts, Images & HeyGen Avatars (🔥 LIMITED-TIME OFFER)
author_name: Adam Crafts
author_username: adamcrafts
categories: []
created_at: 2025-06-01T21:53:46.740Z
updated_at: 2025-06-01T21:53:46.740Z
url: https://n8n.io/workflows/4569
scraped_at: 2025-06-19 22:50:22
description:
  Short Content Automation 🎬 (AI Video System with Bulk Gen, Avatar & Music Customization)
  🔥 LIMITED-TIME OFFER: AI Video Automation (Previously \$59)
  Previously Template

  🚀 Transform Your Content Game in Minutes – Save Hours of Work!
  Introducing a powerful AI Video System to automate short video creation — from scriptwriting to avatar + image generation, music, and assembly — all with n8n. This is not a basic template. It's a complete, customizable system with step-by-step videos and my personal enhancements.

  🎁 Why $10 Now? (Regular Price: \$59)

  ✅ Over 4000 people viewed my original automation — see it here — and I receive many messages from people who want it.

  ✅ I learned n8n from free templates and I want to give back.

  ✅ People asking for a more accessible price — this is my answer.

  ⏳ Limited-Time Deal: 7 Days Only!

  After that, this price goes away and the blueprint will be unlisted.

  📦 What You Get

  ✅ Full n8n Workflow: From text prompt → ready-to-publish short video
  ✅ AI Tools Integration: OpenAI, Leonardo.AI, HeyGen, etc.
  ✅ Customization Options: Avatar, Voice, Music, Style
  ✅ Video Setup Guide: Step-by-step walkthrough
  ✅ Clean UI, easy-to-use, even if you're not a developer

  💬 Made With Love by an n8n Creator

  This system is based on months of refinement and feedback from users like you.
  Now it’s your turn to scale your content, automate your work, and stand out.

  💵 Only $10 – Let’s Build Together.

  &gt; 📌 Get it now. Use it forever. No subscriptions. Just value.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.baserow","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured"]

workflow_json:
  {"meta":{"instanceId":"2d54f61dfd963457efb86a8690aae457934e92fb9e4b8b6490ca74fc37094458","templateCredsSetupCompleted":true},"nodes":[{"id":"552f4aea-6eba-4ef3-a15a-5803a25ed701","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-4060,260],"parameters":{"content":""},"typeVersion":1},{"id":"e70c19bc-c100-4c4e-bb0c-3480bf43b82e","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2380,-240],"parameters":{"content":""},"typeVersion":1},{"id":"e51cd6c7-872a-48b8-a6b7-ac47f35a409a","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1180,1240],"parameters":{"content":""},"typeVersion":1},{"id":"1edeb5fc-2774-46ed-a4f8-c4ac3f3a9ac7","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-680,660],"parameters":{"content":""},"typeVersion":1},{"id":"aa0dff4d-a840-45e0-8de9-fcd170be08d2","name":"Should Process?","type":"n8n-nodes-base.if","position":[-4680,860],"parameters":{},"typeVersion":1},{"id":"1b62d439-f82e-432b-a1bc-5b73abc8b5e6","name":"Switch ScriptType","type":"n8n-nodes-base.switch","position":[-4460,960],"parameters":{},"typeVersion":3.2},{"id":"df9759eb-5511-4323-86b8-7d40bb0e43e9","name":"Basic LLM Chain","type":"@n8n/n8n-nodes-langchain.chainLlm","onError":"continueErrorOutput","position":[-4020,460],"parameters":{},"typeVersion":1.5},{"id":"8ff00af2-cb59-4a48-8504-1e388f00d8c3","name":"If","type":"n8n-nodes-base.if","position":[-4240,1160],"parameters":{},"typeVersion":2.2},{"id":"3ccaa3f8-51b7-44f9-83b2-0ad7fb291596","name":"Body","type":"n8n-nodes-base.set","position":[-4900,860],"parameters":{},"typeVersion":3.4},{"id":"d78562f1-6236-4aa8-81dc-741c82d2b9ea","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-3820,1140],"parameters":{},"typeVersion":1.2},{"id":"42276de0-b0f6-490e-9fba-28008e01293b","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-3932,680],"parameters":{},"typeVersion":1.2},{"id":"11c7ba76-0b22-4dfd-b063-dbfc2cf1d582","name":"Leo - Improve Prompt","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-3000,80],"parameters":{},"typeVersion":4.2},{"id":"8d813e38-4689-4102-9a84-322e57573e72","name":"Leo - Get imageId","type":"n8n-nodes-base.httpRequest","position":[-2324,-90],"parameters":{},"typeVersion":4.2},{"id":"759c964b-560e-476c-9948-041d781d7225","name":"Leo - Generate Image","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-2760,20],"parameters":{},"notesInFlow":false,"typeVersion":4.2},{"id":"7ba0fa55-3a4a-45ce-bf84-7b0695014e1f","name":"Wait1","type":"n8n-nodes-base.wait","position":[-2544,-90],"webhookId":"ae4c943c-3a67-4532-8fc5-3f0b5c1e9cd3","parameters":{},"typeVersion":1.1},{"id":"8e770b9e-44c3-4d6f-b816-04a141dcea1b","name":"Scenes Mapping","type":"n8n-nodes-base.set","position":[-3644,710],"parameters":{},"typeVersion":3.4},{"id":"eb75b3e1-7945-47cb-99a3-b123d4509840","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[-3424,710],"parameters":{},"typeVersion":1},{"id":"9d1a5b5a-e6f9-4e0b-b0ab-c5d00a42b933","name":"Runway - Create Video","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-1884,-190],"parameters":{},"typeVersion":4.2},{"id":"e6e34dd1-14b9-457a-94d7-d649df9bf6fa","name":"Runway - Get Video","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-1444,-290],"parameters":{},"typeVersion":4.2},{"id":"9e5b3314-5ff5-40d5-b25b-650b2b86b673","name":"Wait2","type":"n8n-nodes-base.wait","position":[-1664,-290],"webhookId":"1d9b1044-08ca-446c-a290-e1e28d356402","parameters":{},"typeVersion":1.1},{"id":"9122333a-9cbd-4e05-a071-fa63237abc70","name":"loop_over_scenes","type":"n8n-nodes-base.splitInBatches","position":[-3204,710],"parameters":{},"typeVersion":3},{"id":"12e3944f-bf50-452a-a566-e21e37b8ae8c","name":"Code","type":"n8n-nodes-base.code","position":[-2764,910],"parameters":{},"typeVersion":2},{"id":"87281d2b-c75b-442c-b7b4-069e9b547c3b","name":"Wait","type":"n8n-nodes-base.wait","position":[-1004,835],"webhookId":"5cac0c0c-2373-410d-a4fa-93631e4f7a16","parameters":{},"typeVersion":1.1},{"id":"1d14b153-cf53-4bb8-bc48-500d407f1136","name":"json2video : Video Rendering","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-1224,835],"parameters":{},"typeVersion":4.2},{"id":"e85203de-a496-4424-92cf-6702be3107fd","name":"json2video : Check Video Rendering","type":"n8n-nodes-base.httpRequest","position":[-784,785],"parameters":{},"typeVersion":4.2},{"id":"1f7e969a-9eb0-4d34-8bee-cc412794757a","name":"Baserow","type":"n8n-nodes-base.baserow","position":[-344,760],"parameters":{},"typeVersion":1},{"id":"8c3c9f77-c674-4082-8417-d218e4c1f146","name":"Baserow Processing","type":"n8n-nodes-base.baserow","position":[-4460,760],"parameters":{},"typeVersion":1},{"id":"f051222a-69de-488b-95ee-8ddba38cfecc","name":"output","type":"n8n-nodes-base.set","position":[-1224,510],"parameters":{},"typeVersion":3.4},{"id":"4ccc7e0b-95a8-4bf8-9328-914796d04e5f","name":"Update Script","type":"n8n-nodes-base.baserow","position":[-3644,510],"parameters":{},"typeVersion":1},{"id":"1ac9cf4f-2ea5-4901-8021-daa1aaebe526","name":"BackgroundType","type":"n8n-nodes-base.if","position":[-2104,-90],"parameters":{},"typeVersion":2.2},{"id":"3f4cfe61-ad21-4306-b510-ff5a6cdc9c6a","name":"output image","type":"n8n-nodes-base.set","position":[-1884,10],"parameters":{},"typeVersion":3.4},{"id":"ae0c2d35-18f4-4360-a61d-d5c40624864e","name":"Execute Workflow2","type":"n8n-nodes-base.executeWorkflow","position":[-1664,-90],"parameters":{},"typeVersion":1.2},{"id":"53ee6f59-3e74-4dbf-9655-4557f2e3dd80","name":"Execute Workflow3","type":"n8n-nodes-base.executeWorkflow","position":[-2544,110],"parameters":{},"typeVersion":1.2},{"id":"3cc71591-718c-48c5-a81f-903bc27703a7","name":"Execute Workflow4","type":"n8n-nodes-base.executeWorkflow","position":[-3600,880],"parameters":{},"typeVersion":1.2},{"id":"ffba25bf-ebfb-437c-88a9-baffa9183ad2","name":"HeyGen","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-2324,985],"parameters":{},"typeVersion":4.2},{"id":"0f0c91ed-3a81-4add-9219-fb0b2b769592","name":"Wait4","type":"n8n-nodes-base.wait","position":[-2104,885],"webhookId":"d2c37f01-834e-40d3-888e-6e7e4296f474","parameters":{},"typeVersion":1.1},{"id":"e2144fa4-4a79-4203-8690-7fc3654aa2aa","name":"HeyGen : Check Video","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-1884,810],"parameters":{},"typeVersion":4.2},{"id":"5e3c03f0-2688-48e2-88f9-8c56cb2bcd82","name":"heygen_response","type":"n8n-nodes-base.switch","position":[-1664,885],"parameters":{},"typeVersion":3.2},{"id":"f1fe987d-97f3-4f86-b160-1ec019db8ba9","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1880,1200],"parameters":{"content":""},"typeVersion":1},{"id":"ecd90ffe-b4f3-4895-858e-f2dbbc758f3f","name":"Wait6","type":"n8n-nodes-base.wait","position":[-2104,285],"webhookId":"1ae300a3-2b49-4ee0-9817-9d29692d7bd8","parameters":{},"typeVersion":1.1},{"id":"7f2db63c-6ccd-427b-976d-788906acaffa","name":"CaptionsAI1","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[-2324,385],"parameters":{},"typeVersion":4.2},{"id":"ef6d1fda-f589-4a80-bef9-6b58a0c7be4c","name":"CaptionsAI : Check Poll1","type":"n8n-nodes-base.httpRequest","position":[-1884,210],"parameters":{},"typeVersion":4.2},{"id":"704dc30e-92d7-4fbf-84f7-fa28c8e3c800","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[-2544,385],"parameters":{},"typeVersion":1},{"id":"7fa5ee4a-b331-44e3-8eac-bb51a1640f02","name":"j2v_response","type":"n8n-nodes-base.switch","position":[-564,835],"parameters":{},"typeVersion":3.2},{"id":"4bf31cad-30ba-4111-82c6-543c8270ba78","name":"json2video Execute ERROR","type":"n8n-nodes-base.executeWorkflow","position":[-1004,1035],"parameters":{},"typeVersion":1.2},{"id":"2b7f8cf6-e72f-4709-8384-470be9018a58","name":"json2video Execute ERROR1","type":"n8n-nodes-base.executeWorkflow","position":[-344,960],"parameters":{},"typeVersion":1.2},{"id":"000f4384-59f2-45cc-8ac7-947578faf961","name":"CAPTIONS Execute ERROR","type":"n8n-nodes-base.executeWorkflow","position":[-1444,385],"parameters":{},"typeVersion":1.2},{"id":"8c0f1519-7c15-4753-a3a4-e0ea7bdecd91","name":"cap_response","type":"n8n-nodes-base.switch","position":[-1664,285],"parameters":{},"typeVersion":3.2},{"id":"ca2a0e83-1945-44da-88db-fd43f7abdd01","name":"Code Add Sub","type":"n8n-nodes-base.code","position":[-1444,10],"parameters":{},"typeVersion":2},{"id":"32919f30-7192-4fe9-a8c0-5056f23930da","name":"Execute Workflow","type":"n8n-nodes-base.executeWorkflow","position":[-3942,1310],"parameters":{},"typeVersion":1.2},{"id":"0d2c27de-ced5-4717-bd69-120cdca0c404","name":"Code Heygen","type":"n8n-nodes-base.code","position":[-1444,885],"parameters":{},"typeVersion":2},{"id":"49cbb913-b8d8-407b-aba1-772b183fc2cb","name":"Webhook","type":"n8n-nodes-base.webhook","position":[-5120,860],"webhookId":"9dc1daa9-0cc3-4171-bd2c-f334afe7f786","parameters":{},"typeVersion":2},{"id":"ece27b23-6adb-4bde-bd27-16f9c52074b1","name":"If_with_heygen","type":"n8n-nodes-base.if","position":[-2544,910],"parameters":{},"typeVersion":2.2},{"id":"4b574962-192a-4896-9b20-d1a1a6a2dba9","name":"If_with_avatar","type":"n8n-nodes-base.if","position":[-2984,785],"parameters":{},"typeVersion":2.2},{"id":"17443565-19e6-4f87-b3d0-ae760ef2e9c0","name":"heygen Execute ERROR","type":"n8n-nodes-base.executeWorkflow","position":[-2104,1110],"parameters":{},"typeVersion":1.2},{"id":"db4608b4-de96-4fca-8015-9a529c5d7ec2","name":"heygen Execute ERROR2","type":"n8n-nodes-base.executeWorkflow","position":[-1664,1085],"parameters":{},"typeVersion":1.2},{"id":"59b0d81e-47dd-4142-9e4f-2720d3ab4cd2","name":"Execute Workflow5","type":"n8n-nodes-base.executeWorkflow","position":[-2764,235],"parameters":{},"typeVersion":1.2},{"id":"5907b590-cb1a-40f2-973a-c267f4f2a618","name":"CAPTIONS Execute ERROR1","type":"n8n-nodes-base.executeWorkflow","position":[-2104,485],"parameters":{},"typeVersion":1.2},{"id":"5003eb72-ccaf-4397-b222-74520118b710","name":"Execute Workflow6","type":"n8n-nodes-base.executeWorkflow","position":[-1224,-340],"parameters":{},"typeVersion":1.2},{"id":"d7bfd001-f3e7-4615-9cb4-c999f85796b4","name":"Basic LLM Chain Manual","type":"@n8n/n8n-nodes-langchain.chainLlm","onError":"continueErrorOutput","position":[-4020,920],"parameters":{},"typeVersion":1.5},{"id":"7d14ce33-6879-4fbf-8c4d-741dc0199fd8","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-3992,1130],"parameters":{},"typeVersion":1.2},{"id":"0cd3ffe5-17c2-4036-93ff-f26366905418","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-5280,-380],"parameters":{"content":""},"typeVersion":1},{"id":"2dc14abe-5ce2-47dd-95a3-a53e0cc3ba3d","name":"Baserow Error","type":"n8n-nodes-base.baserow","position":[-4900,1280],"parameters":{},"typeVersion":1},{"id":"ec2f48d4-fe85-4395-b6e0-6944a169f405","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[-4680,1280],"parameters":{},"typeVersion":1},{"id":"b57d294a-0872-43b4-9477-84f72990adb4","name":"When Executed by Another Workflow","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-5120,1280],"parameters":{},"typeVersion":1.1},{"id":"2410ae4a-e42b-41de-b5a6-fcef0726918a","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-5160,1200],"parameters":{"content":""},"typeVersion":1},{"id":"8105cbf3-f289-4de6-b39a-db9ba5a8b85d","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-4620,-380],"parameters":{"content":""},"typeVersion":1},{"id":"9e42ccf0-a874-4171-bea5-54647a79fb93","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-1880,520],"parameters":{"content":""},"typeVersion":1}],"pinData":{},"connections":{"If":{"main":[[{"node":"Basic LLM Chain Manual","type":"main","index":0}],[{"node":"Execute Workflow","type":"main","index":0}]]},"Body":{"main":[[{"node":"Should Process?","type":"main","index":0}]]},"Code":{"main":[[{"node":"If_with_heygen","type":"main","index":0}]]},"Wait":{"main":[[{"node":"json2video : Check Video Rendering","type":"main","index":0}]]},"Wait1":{"main":[[{"node":"Leo - Get imageId","type":"main","index":0}]]},"Wait2":{"main":[[{"node":"Runway - Get Video","type":"main","index":0}]]},"Wait4":{"main":[[{"node":"HeyGen : Check Video","type":"main","index":0}]]},"Wait6":{"main":[[{"node":"CaptionsAI : Check Poll1","type":"main","index":0}]]},"HeyGen":{"main":[[{"node":"Wait4","type":"main","index":0}],[{"node":"heygen Execute ERROR","type":"main","index":0}]]},"output":{"main":[[{"node":"loop_over_scenes","type":"main","index":0}]]},"Webhook":{"main":[[{"node":"Body","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"CaptionsAI1","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"loop_over_scenes","type":"main","index":0}]]},"CaptionsAI1":{"main":[[{"node":"Wait6","type":"main","index":0}],[{"node":"CAPTIONS Execute ERROR1","type":"main","index":0}]]},"Code Heygen":{"main":[[{"node":"json2video : Video Rendering","type":"main","index":0}]]},"Code Add Sub":{"main":[[{"node":"json2video : Video Rendering","type":"main","index":0}]]},"cap_response":{"main":[[{"node":"Code Add Sub","type":"main","index":0}],[{"node":"Wait6","type":"main","index":0}],[{"node":"CAPTIONS Execute ERROR","type":"main","index":0}]]},"j2v_response":{"main":[[{"node":"Baserow","type":"main","index":0}],[{"node":"Wait","type":"main","index":0}],[{"node":"json2video Execute ERROR1","type":"main","index":0}]]},"output image":{"main":[[{"node":"loop_over_scenes","type":"main","index":0}]]},"Baserow Error":{"main":[[{"node":"Stop and Error","type":"main","index":0}]]},"BackgroundType":{"main":[[{"node":"Runway - Create Video","type":"main","index":0}],[{"node":"output image","type":"main","index":0}]]},"If_with_avatar":{"main":[[{"node":"Aggregate","type":"main","index":0}],[{"node":"Code","type":"main","index":0}]]},"If_with_heygen":{"main":[[{"node":"HeyGen","type":"main","index":0}],[{"node":"json2video : Video Rendering","type":"main","index":0}]]},"Scenes Mapping":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Basic LLM Chain":{"main":[[{"node":"Scenes Mapping","type":"main","index":0},{"node":"Update Script","type":"main","index":0}],[{"node":"Execute Workflow4","type":"main","index":0}]]},"Should Process?":{"main":[[{"node":"Switch ScriptType","type":"main","index":0},{"node":"Baserow Processing","type":"main","index":0}]]},"heygen_response":{"main":[[{"node":"Code Heygen","type":"main","index":0}],[{"node":"Wait4","type":"main","index":0}]]},"loop_over_scenes":{"main":[[{"node":"If_with_avatar","type":"main","index":0}],[{"node":"Leo - Improve Prompt","type":"main","index":0}]]},"Leo - Get imageId":{"main":[[{"node":"BackgroundType","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Basic LLM Chain","type":"ai_languageModel","index":0}]]},"Switch ScriptType":{"main":[[{"node":"If","type":"main","index":0}],[{"node":"Basic LLM Chain","type":"main","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Basic LLM Chain Manual","type":"ai_languageModel","index":0}]]},"Runway - Get Video":{"main":[[{"node":"output","type":"main","index":0}],[{"node":"Execute Workflow6","type":"main","index":0}]]},"HeyGen : Check Video":{"main":[[{"node":"heygen_response","type":"main","index":0}],[{"node":"heygen Execute ERROR2","type":"main","index":0}]]},"Leo - Generate Image":{"main":[[{"node":"Wait1","type":"main","index":0}],[{"node":"Execute Workflow3","type":"main","index":0}]]},"Leo - Improve Prompt":{"main":[[{"node":"Leo - Generate Image","type":"main","index":0}],[{"node":"Execute Workflow5","type":"main","index":0}]]},"Runway - Create Video":{"main":[[{"node":"Wait2","type":"main","index":0}],[{"node":"Execute Workflow2","type":"main","index":0}]]},"Basic LLM Chain Manual":{"main":[[{"node":"Update Script","type":"main","index":0},{"node":"Scenes Mapping","type":"main","index":0}],[{"node":"Execute Workflow4","type":"main","index":0}]]},"CaptionsAI : Check Poll1":{"main":[[{"node":"cap_response","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Basic LLM Chain","type":"ai_outputParser","index":0},{"node":"Basic LLM Chain Manual","type":"ai_outputParser","index":0}]]},"json2video : Video Rendering":{"main":[[{"node":"Wait","type":"main","index":0}],[{"node":"json2video Execute ERROR","type":"main","index":0}]]},"When Executed by Another Workflow":{"main":[[{"node":"Baserow Error","type":"main","index":0}]]},"json2video : Check Video Rendering":{"main":[[{"node":"j2v_response","type":"main","index":0}]]}}}


name: Google Maps business scraper with contact extraction via Apify and Firecrawl
author_name: Naveen Choudhary
author_username: n8nstein
nodes_used: ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-02T00:09:54.996Z
updated_at: 2025-06-02T00:09:54.996Z
url: https://n8n.io/workflows/4573
scraped_at: 2025-06-19 22:48:45
description:
  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.

workflow_json:
  {"id":"95RHN758KyIlB84T","meta":{"instanceId":"8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112","templateCredsSetupCompleted":true},"name":"Google Maps business scraper with contact extraction via Apify and Firecrawl","tags":[],"nodes":[{"id":"17ab0386-4f7f-4f72-ab28-399febe4bf84","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,-125],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":30}]}},"typeVersion":1.1},{"id":"2e7080b6-a5a4-4571-933f-3a33979037e8","name":"Loop Until Complete","type":"n8n-nodes-base.if","position":[1100,-125],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"de704919-205a-470f-a417-b297fbbdbaf8","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.data.status }}","rightValue":"SUCCEEDED"}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"3e062954-93b9-48d7-b5dc-29ff579793af","name":"Read Pending Queries","type":"n8n-nodes-base.googleSheets","position":[220,-125],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"false","lookupColumn":"Status"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=0","cachedResultName":"Query"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"63d7b375-c4a6-42ae-b9ef-51f963edaa72","name":"Start Apify Scraping Job","type":"n8n-nodes-base.httpRequest","position":[440,-125],"parameters":{"url":"https://api.apify.com/v2/acts/compass~crawler-google-places/runs","method":"POST","options":{},"jsonBody":"={\n  \"searchStringsArray\": [\n    \"restaurant\"\n  ],\n  \"locationQuery\": \"New York, USA\",\n  \"maxCrawledPlacesPerSearch\": 15,\n  \"language\": \"en\",\n  \"maximumLeadsEnrichmentRecords\": 0,\n  \"maxImages\": 0\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"958eb9fc-14f5-41f1-9055-10e0f889c039","name":"Wait for Job Succeed","type":"n8n-nodes-base.wait","position":[660,-125],"webhookId":"97a65079-8ee5-45a2-9de0-afd263bbbe34","parameters":{},"typeVersion":1.1},{"id":"32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079","name":"Check Scraping Status","type":"n8n-nodes-base.httpRequest","position":[880,-200],"parameters":{"url":"=https://api.apify.com/v2/actor-runs/{{ $json.data.id }}","options":{"timeout":10000},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"97c84abb-c21e-497c-a2eb-1bf4b01db0ca","name":"Fetch Scraped Results","type":"n8n-nodes-base.httpRequest","position":[1320,-125],"parameters":{"url":"=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items","options":{"timeout":10000},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"383d8508-54ba-4fbf-9d4b-f13487d1ff25","name":"Save Business Data","type":"n8n-nodes-base.googleSheets","position":[1540,-125],"parameters":{"columns":{"value":{"phone":"={{ $json.phone }}","title":"={{ $json.title }}","status":"false","address":"={{ $json.address }}","website":"={{ $json.website }}","categoryName":"={{ $json.categoryName }}","searchString":"={{ $json.searchString }}"},"schema":[{"id":"searchString","type":"string","display":true,"removed":false,"required":false,"displayName":"searchString","defaultMatch":false,"canBeUsedToMatch":true},{"id":"title","type":"string","display":true,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categoryName","type":"string","display":true,"required":false,"displayName":"categoryName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"website","type":"string","display":true,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["searchString"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1948906848,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848","cachedResultName":"Data"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"cd083a40-2270-44e2-8683-ae3b4d5b85a8","name":"Filter Businesses with Websites","type":"n8n-nodes-base.filter","position":[1760,-125],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"2218f0be-2c48-4a1a-bd21-8bdb67c495a1","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.website }}","rightValue":""},{"id":"d0ef3194-ee94-45c5-b9c3-5db32f08d1b5","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"false"}]}},"typeVersion":2.2},{"id":"234a63b0-3741-43d2-8a8b-ac29d6137ddb","name":"Batch Processing Logic","type":"n8n-nodes-base.splitInBatches","position":[1980,-125],"parameters":{"options":{}},"typeVersion":3},{"id":"63e8e91a-6012-4073-b03d-2158672288ee","name":"Scrape Website Content","type":"n8n-nodes-base.httpRequest","position":[2260,-220],"parameters":{"url":"https://api.firecrawl.dev/v1/scrape","method":"POST","options":{},"jsonBody":"={\n  \"url\": \"{{ $json.website }}\",\n  \"formats\": [\n    \"html\"\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"dIJc7Mqjejgs6m3x","name":"[Firecrawl/Naveen]Bearer Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"d9c1b4dc-c741-4dff-a9cd-0dd6527d514a","name":"Extract Contact Information","type":"n8n-nodes-base.code","position":[2480,-220],"parameters":{"jsCode":"// N8N Code Node - Extract emails, LinkedIn, Facebook, Instagram for single item\nconst item = $input.first();\n\n// Get the text content to search (adjust field names as needed)\nconst textContent = item.json.data.html;\n\n// Initialize result object\nconst result = {\n  website: $('Batch Processing Logic').first().json.website,\n  emails: \"None\",\n  linkedin: \"None\", \n  facebook: \"None\",\n  instagram: \"None\",\n  twitter: \"None\"\n};\n\n// Email extraction regex - matches common email patterns\nconst emailRegex = /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b/gi;\nconst emails = textContent.match(emailRegex);\n\nif (emails && emails.length > 0) {\n  // Remove duplicates and filter out common non-email matches\n  const uniqueEmails = [...new Set(emails)].filter(email => {\n    const lowerEmail = email.toLowerCase();\n    return !lowerEmail.includes('example.com') && \n           !lowerEmail.includes('test@') &&\n           !lowerEmail.includes('noreply@') &&\n           !lowerEmail.includes('no-reply@') &&\n           lowerEmail.length > 5;\n  });\n  \n  if (uniqueEmails.length > 0) {\n    result.emails = uniqueEmails.length === 1 ? uniqueEmails[0] : uniqueEmails.join(', ');\n  }\n}\n\n// LinkedIn extraction - improved pattern\nconst linkedinRegex = /(?:https?:\\/\\/)?(?:www\\.)?linkedin\\.com\\/(?:in\\/|company\\/|pub\\/)[a-zA-Z0-9\\-._]+\\/?/gi;\nconst linkedinMatches = textContent.match(linkedinRegex);\nif (linkedinMatches && linkedinMatches.length > 0) {\n  const cleanLinkedin = linkedinMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.linkedin = cleanLinkedin;\n}\n\n// Facebook extraction - improved to match numeric IDs and usernames\nconst facebookRegex = /(?:https?:\\/\\/)?(?:www\\.|m\\.|mobile\\.)?facebook\\.com\\/(?:[^\\/\\s]+\\/)*[^\\/\\s?#]+/gi;\nconst facebookMatches = textContent.match(facebookRegex);\nif (facebookMatches && facebookMatches.length > 0) {\n  const cleanFacebook = facebookMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.facebook = cleanFacebook;\n}\n\n// Instagram extraction - improved to match various URL formats\nconst instagramRegex = /(?:https?:\\/\\/)?(?:www\\.)?instagram\\.com\\/[a-zA-Z0-9\\-._]+\\/?/gi;\nconst instagramMatches = textContent.match(instagramRegex);\nif (instagramMatches && instagramMatches.length > 0) {\n  const cleanInstagram = instagramMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.instagram = cleanInstagram;\n}\n\n// Twitter/X extraction - improved to match usernames properly\nconst twitterRegex = /(?:https?:\\/\\/)?(?:www\\.)?(?:twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]+\\/?/gi;\nconst twitterMatches = textContent.match(twitterRegex);\nif (twitterMatches && twitterMatches.length > 0) {\n  const cleanTwitter = twitterMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.twitter = cleanTwitter;\n}\n\n// Alternative extraction for social handles without full URLs\n// Look for @username patterns for Instagram and Twitter\nif (result.instagram === \"None\") {\n  const igHandleRegex = /@([a-zA-Z0-9._]{1,30})/gi;\n  const igHandles = textContent.match(igHandleRegex);\n  if (igHandles && igHandles.length > 0) {\n    const username = igHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.instagram = `https://www.instagram.com/${username}`;\n    }\n  }\n}\n\n// Look for Twitter handles without full URLs\nif (result.twitter === \"None\") {\n  const twitterHandleRegex = /@([a-zA-Z0-9_]{1,15})/gi;\n  const twitterHandles = textContent.match(twitterHandleRegex);\n  if (twitterHandles && twitterHandles.length > 0) {\n    const username = twitterHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.twitter = `https://www.x.com/${username}`;\n    }\n  }\n}\n\n// Clean up URLs - remove trailing slashes and parameters\n['linkedin', 'facebook', 'instagram', 'twitter'].forEach(platform => {\n  if (result[platform] !== \"None\") {\n    result[platform] = result[platform].split('?')[0].split('#')[0].replace(/\\/$/, '');\n  }\n});\n\nreturn result;"},"typeVersion":2},{"id":"32ef5f5d-6457-4edc-9299-afea61af4784","name":"Save Contact Details","type":"n8n-nodes-base.googleSheets","position":[2700,-220],"parameters":{"columns":{"value":{"emails":"={{ $json.emails }}","twitter":"={{ $json.twitter }}","website":"={{ $json.website }}","facebook":"={{ $json.facebook }}","linkedin":"={{ $json.linkedin }}","instagram":"={{ $json.instagram }}"},"schema":[{"id":"website","type":"string","display":true,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"emails","type":"string","display":true,"required":false,"displayName":"emails","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin","type":"string","display":true,"required":false,"displayName":"linkedin","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook","type":"string","display":true,"required":false,"displayName":"facebook","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram","type":"string","display":true,"required":false,"displayName":"instagram","defaultMatch":false,"canBeUsedToMatch":true},{"id":"twitter","type":"string","display":true,"required":false,"displayName":"twitter","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":2056137853,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=2056137853","cachedResultName":"Details"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"374d7e2f-6e14-4dd1-a51a-f0cce37945d8","name":"Mark as Processed","type":"n8n-nodes-base.googleSheets","position":[2920,-160],"parameters":{"columns":{"value":{"status":"true","website":"={{ $json.website }}"},"schema":[{"id":"searchString","type":"string","display":true,"required":false,"displayName":"searchString","defaultMatch":false,"canBeUsedToMatch":true},{"id":"title","type":"string","display":true,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categoryName","type":"string","display":true,"required":false,"displayName":"categoryName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"website","type":"string","display":true,"removed":false,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"hasWebsite","type":"string","display":true,"required":false,"displayName":"hasWebsite","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["website"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1948906848,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848","cachedResultName":"Data"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"52c246a4-c483-4539-b22d-f4b046c16724","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[20,-360],"parameters":{"color":4,"width":640,"height":180,"content":"## 🚀 INITIALIZATION PHASE\n- Triggers every 30 minutes\n- Reads unprocessed records from [Google Sheet](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)\n- Starts Google Places scraper for restaurants\n- Waits for completion"},"typeVersion":1},{"id":"2983ac2d-5627-4ab1-9fbf-c09ed8886bf6","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[940,-420],"parameters":{"width":660,"height":180,"content":"## 📊 DATA COLLECTION PHASE\n- Monitors scraper job status\n- Loops until job completes\n- Fetches scraped restaurant data\n- Saves to \"Data\" sheet in [Google Sheets](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)"},"typeVersion":1},{"id":"dc13180b-cf28-44a1-b6e7-c4f0c00f57c2","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1940,-460],"parameters":{"color":6,"width":740,"height":200,"content":"## 🌐 WEBSITE PROCESSING PHASE\n- Filters restaurants with valid websites\n- Loops through each website\n- Scrapes website content with Firecrawl\n- Extracts contact information (emails, social media)\n- Saves to \"Details\" sheet and marks as processed"},"typeVersion":1},{"id":"7a23b11a-22ce-4816-a336-6cd28a90aa49","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2260,80],"parameters":{"width":580,"height":120,"content":"## 🔄 LOOPS\n**Status Check Loop**: Continues until scraper job is complete\n**Website Processing Loop**: Processes each restaurant website individually"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b94bf772-530d-4a3c-b024-795c2a7cfe4a","connections":{"Schedule Trigger":{"main":[[{"node":"Read Pending Queries","type":"main","index":0}]]},"Mark as Processed":{"main":[[{"node":"Batch Processing Logic","type":"main","index":0}]]},"Save Business Data":{"main":[[{"node":"Filter Businesses with Websites","type":"main","index":0}]]},"Loop Until Complete":{"main":[[{"node":"Wait for Job Succeed","type":"main","index":0}],[{"node":"Fetch Scraped Results","type":"main","index":0}]]},"Read Pending Queries":{"main":[[{"node":"Start Apify Scraping Job","type":"main","index":0}]]},"Save Contact Details":{"main":[[{"node":"Mark as Processed","type":"main","index":0}]]},"Wait for Job Succeed":{"main":[[{"node":"Check Scraping Status","type":"main","index":0}]]},"Check Scraping Status":{"main":[[{"node":"Loop Until Complete","type":"main","index":0}]]},"Fetch Scraped Results":{"main":[[{"node":"Save Business Data","type":"main","index":0}]]},"Batch Processing Logic":{"main":[[],[{"node":"Scrape Website Content","type":"main","index":0}]]},"Scrape Website Content":{"main":[[{"node":"Extract Contact Information","type":"main","index":0}]]},"Start Apify Scraping Job":{"main":[[{"node":"Wait for Job Succeed","type":"main","index":0}]]},"Extract Contact Information":{"main":[[{"node":"Save Contact Details","type":"main","index":0}]]},"Filter Businesses with Websites":{"main":[[{"node":"Batch Processing Logic","type":"main","index":0}]]}}}


name: Generate Contextual YouTube Comments Automatically with GPT-4o
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-02T08:41:28.071Z
updated_at: 2025-06-02T08:41:28.071Z
url: https://n8n.io/workflows/4580
scraped_at: 2025-06-19 22:50:32
description:
  Workflow Overview
  This cutting-edge n8n workflow is a powerful automation tool designed to revolutionize how content creators and marketers engage with YouTube channels. By leveraging AI and the YouTube Data API, this workflow automatically:

  Discovers New Content: 
     Monitors a specific YouTube channel
     Retrieves the latest video in real-time
     Checks for new uploads at regular intervals

  Generates Intelligent Comments:
     Uses advanced AI (OpenAI's GPT models) to analyze video metadata
     Crafts contextually relevant, human-like comments
     Ensures each comment feels organic and engaging

  Seamless Deployment:
     Automatically posts the AI-generated comment directly on the video
     Eliminates manual interaction
     Increases potential channel visibility and engagement

  Key Benefits
  🤖 Full Automation: No manual comment writing required
  💡 Smart Contextual Comments: AI understands video content
  ⏱️ Time-Saving: Instant engagement without human intervention
  📈 Potential Increased Visibility: Regular, intelligent interactions

  Setup Requirements
  YouTube Data API Credentials
     Obtain a Google Cloud API key
     Configure channel ID you want to target
     Set up OAuth2 authentication for comment posting

  OpenAI API Access
     Create an OpenAI account
     Generate an API key for comment generation
     Select preferred GPT model (GPT-4o, GPT-3.5, etc.)

  n8n Installation
     Install n8n (cloud or self-hosted)
     Import the workflow configuration
     Configure API credentials
     Set up scheduling preferences

  Potential Use Cases
  Content Creators monitoring competitor channels
  Marketing teams maintaining online presence
  Social media managers automating engagement
  Researchers tracking specific YouTube channels

  Future Enhancements
  Logging comment history
  Dynamic OAuth2 token management
  Multi-channel support
  Sentiment analysis for comment generation

  Connect With Me

  Got questions? Want to dive deeper?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  **Unlock the power of AI-driven YouTube engagement – automate, optimize, and amplify your online# Automate YouTube Engagement with GPT-4o Generated Comments

  Workflow Overview
  This n8n automation leverages AI to streamline YouTube channel engagement, providing a sophisticated solution for content interaction. By combining the YouTube Data API and OpenAI's GPT-4o, the workflow:

  Intelligent Content Discovery:
     Dynamically monitors specified YouTube channels
     Real-time detection of new video uploads
     Configurable monitoring intervals

  AI-Powered Comment Generation:
     Utilizes GPT-4o for contextual analysis
     Generates nuanced, platform-appropriate comments
     Ensures authentic, relevant interactions

  Automated Engagement:
     Seamlessly posts AI-crafted comments
     Enhances channel visibility
     Reduces manual social media management

  Key Benefits
  🤖 Advanced Automation: AI-driven engagement
  💡 Contextual Intelligence: GPT-4o powered insights
  ⏱️ Efficiency Optimization: Instant, scalable interactions
  📈 Strategic Visibility: Consistent, meaningful channel presence

  Detailed Setup Instructions

  Prerequisites
  n8n instance (cloud or self-hosted)
  YouTube Data API access
  OpenAI API key
  Target YouTube channel(s)

  Configuration Steps
  YouTube Data API Setup
     Create a Google Cloud project
     Enable YouTube Data API v3
     Generate OAuth2 credentials
     Store credentials securely in n8n

  OpenAI API Configuration
     Create OpenAI account
     Generate API key
     Select GPT-4o model
     Configure API key in n8n credentials

  Workflow Customization
     Replace placeholder channel IDs
     Adjust monitoring frequency
     Customize AI prompt for comment generation
     Configure OAuth2 authentication

  Workflow Customization Options
  Modify AI prompt to match specific content styles
  Add keyword filters for video selection
  Implement multi-channel support
  Create custom engagement rules

  Potential Use Cases
  Content creator audience engagement
  Brand social media management
  Community interaction automation
  Research and monitoring

  Ethical Considerations
  Maintain transparency about AI-generated comments
  Respect platform guidelines
  Avoid spam or misleading interactions
  Ensure comments add genuine value

  Future Enhancement Roadmap
  Advanced sentiment analysis
  Multi-language support
  Engagement performance tracking
  Adaptive comment generation

  Security Best Practices
  Never hardcode API keys
  Use n8n's credential management
  Implement secure OAuth2 authentication
  Regularly rotate API credentials

  Technical Requirements
  n8n v0.220.0 or higher
  YouTube Data API v3
  OpenAI API access
  Stable internet connection

  Workflow Architecture

  [YouTube Channel Trigger]
      ⬇️
  [Fetch Latest Video]
      ⬇️
  [AI Comment Generation]
      ⬇️
  [Post Comment]

  #YouTubeAutomation #AIEngagement #ContentMarketing #SocialMediaTech #GPT4Automation #WorkflowInnovation #AIComments #DigitalMarketing

  Connect With Me
  Exploring AI-Powered Social Media Automation?

  📧 Email: Yaron@nofluff.online
  🎥 YouTube: @YaronBeen
  💼 LinkedIn: Yaron Been

  Transform your YouTube engagement with intelligent, responsible automation!



  Note: This workflow template is a starting point. Always customize and test thoroughly in your specific environment.

nodes_used:
[cell repeats an earlier one in this file: 103 characters]

workflow_json:
  {"id":"xc36kbxHODDBimC1","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"Youtube commentor","tags":[],"nodes":[{"id":"6a95c116-f7c6-460a-97e6-1cefd90debf4","name":"Check for New Video","type":"n8n-nodes-base.manualTrigger","position":[0,0],"parameters":{},"typeVersion":1},{"id":"2a280065-a28c-456a-abd9-9b0b1899f57f","name":"Set Channel ID","type":"n8n-nodes-base.set","position":[220,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"9fb80084-4cf7-474e-af18-5957daccbf01","name":"Channel 1 id","type":"string","value":"UC_x5XG1OV2P6uZZ5FSM9Ttw"}]}},"typeVersion":3.4},{"id":"5e8c588b-8d5d-4ccf-b9d3-e53374334d62","name":"Fetch Latest Video","type":"n8n-nodes-base.httpRequest","position":[440,0],"parameters":{"url":"https://www.googleapis.com/youtube/v3/search","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"key","value":"YOUR_API"},{"name":"channelId","value":"={{ $json['Channel 1 id'] }}"},{"name":"order","value":"date"},{"name":"maxResults","value":"1"},{"name":"part","value":"snippet"},{"name":"type","value":"video"}]}},"typeVersion":4.2},{"id":"65a0a3da-106a-4017-b5f8-d27751f1fdb7","name":"Commenter Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[760,0],"parameters":{"text":"=Title: {{ $json.items[0].snippet.title }}\nDescription: {{ $json.items[0].snippet.description }}","options":{"systemMessage":"You are a Youtube commenter. Comment on youtube based on video description and title."},"promptType":"define"},"typeVersion":1.9},{"id":"15d6a657-dda7-4c71-b544-1789140072e4","name":"Comment Writer","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[720,240],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"wYwTjEv45IzlAOAu","name":"OpenAi account 2"}},"typeVersion":1.2},{"id":"c42cdc20-0b52-4a70-bb60-9700fe5b2580","name":"Post Comment","type":"n8n-nodes-base.httpRequest","position":[1200,0],"parameters":{"url":"https://www.googleapis.com/youtube/v3/commentThreads","method":"POST","options":{},"jsonBody":"={\n  \"snippet\": {\n    \"videoId\": {{ $json.items[0].id.videoId }},\n    \"topLevelComment\": {\n      \"snippet\": {\n        \"textOriginal\": {{ $json.output }}\n      }\n    }\n  }\n}","sendBody":true,"sendQuery":true,"sendHeaders":true,"specifyBody":"json","queryParameters":{"parameters":[{"name":"part","value":"snippet"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer Access Token"}]}},"typeVersion":4.2},{"id":"bf05fe2a-d11e-49a4-a1b5-bc749b3fee5c","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-40,-580],"parameters":{"color":5,"width":620,"height":780,"content":"## 🟩 **Section 1: 🎯 Video Discovery**\n\n### Nodes:\n\n* 🕒 **Check for New Video** (Schedule Trigger)\n* ✏️ **Set Channel ID** (Edit Fields)\n* 🌐 **Fetch Latest Video** (HTTP Request)\n\n### 🔍 Description:\n\nThis group handles **detecting and fetching the latest video** from a specific YouTube channel.\n\n* **🕒 Schedule Trigger** runs at regular intervals (e.g., every hour) to check for new content.\n* **✏️ Set Channel ID** allows you to manually configure or dynamically inject the channel ID to target.\n* **🌐 Fetch Latest Video** calls the YouTube Data API (GET request) to pull metadata about the most recent upload — primarily the video ID and description.\n\n> 💡 **Purpose**: Ensures you always get the freshest video from the target channel to react to.\n\n---\n\n"},"typeVersion":1},{"id":"b7c1a84c-9faf-4e95-bb95-928bf94a56fd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[680,-640],"parameters":{"color":2,"width":380,"height":1020,"content":"## 🟨 **Section 2: 🤖 Comment Creation**\n\n### Nodes:\n\n* 🧠 **Generate Comment** (AI Agent)\n* 🧾 **Comment Writer Model** (OpenAI Chat Model)\n\n### ✍️ Description:\n\nThis is where the **magic happens** — the AI reads the video’s description and writes a relevant, engaging comment.\n\n* **🧠 Generate Comment (AI Agent)** acts as the task coordinator. It uses the video description as context and issues a prompt to the OpenAI model.\n* **🧾 Comment Writer Model** is your **LLM** (like GPT-4 or GPT-3.5) that intelligently crafts a human-like, thoughtful comment that aligns with the content.\n\n> 💡 **Purpose**: Generate comments that feel organic, contextual, and engaging — potentially increasing visibility and interaction.\n\n---\n\n"},"typeVersion":1},{"id":"e903ead7-d85e-4ef9-84d7-bd069a5d2af9","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1120,-580],"parameters":{"color":3,"width":280,"height":780,"content":"## 🟦 **Section 3: 📤 Comment Deployment**\n\n### Nodes:\n\n* 📬 **Post Comment** (HTTP Request1)\n\n### 🚀 Description:\n\nThis group is responsible for **publishing the AI-generated comment** directly on the video.\n\n* **📬 Post Comment** makes a POST request to the YouTube Data API, attaching the comment and video ID to publish it publicly.\n\n> 💡 **Purpose**: Automate the act of responding to fresh videos without human involvement.\n\n---\n\n"},"typeVersion":1},{"id":"5e2d1a7f-b405-44ec-817a-68c509bcc5b5","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1540,-580],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"63e86a55-daf1-4b64-a2e5-94e9526627dd","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1540,-240],"parameters":{"color":4,"width":1289,"height":1838,"content":"## 🟩 **Section 1: 🎯 Video Discovery**\n\n### Nodes:\n\n* 🕒 **Check for New Video** (Schedule Trigger)\n* ✏️ **Set Channel ID** (Edit Fields)\n* 🌐 **Fetch Latest Video** (HTTP Request)\n\n### 🔍 Description:\n\nThis group handles **detecting and fetching the latest video** from a specific YouTube channel.\n\n* **🕒 Schedule Trigger** runs at regular intervals (e.g., every hour) to check for new content.\n* **✏️ Set Channel ID** allows you to manually configure or dynamically inject the channel ID to target.\n* **🌐 Fetch Latest Video** calls the YouTube Data API (GET request) to pull metadata about the most recent upload — primarily the video ID and description.\n\n> 💡 **Purpose**: Ensures you always get the freshest video from the target channel to react to.\n\n---\n\n## 🟨 **Section 2: 🤖 Comment Creation**\n\n### Nodes:\n\n* 🧠 **Generate Comment** (AI Agent)\n* 🧾 **Comment Writer Model** (OpenAI Chat Model)\n\n### ✍️ Description:\n\nThis is where the **magic happens** — the AI reads the video’s description and writes a relevant, engaging comment.\n\n* **🧠 Generate Comment (AI Agent)** acts as the task coordinator. It uses the video description as context and issues a prompt to the OpenAI model.\n* **🧾 Comment Writer Model** is your **LLM** (like GPT-4 or GPT-3.5) that intelligently crafts a human-like, thoughtful comment that aligns with the content.\n\n> 💡 **Purpose**: Generate comments that feel organic, contextual, and engaging — potentially increasing visibility and interaction.\n\n---\n\n## 🟦 **Section 3: 📤 Comment Deployment**\n\n### Nodes:\n\n* 📬 **Post Comment** (HTTP Request1)\n\n### 🚀 Description:\n\nThis group is responsible for **publishing the AI-generated comment** directly on the video.\n\n* **📬 Post Comment** makes a POST request to the YouTube Data API, attaching the comment and video ID to publish it publicly.\n\n> 💡 **Purpose**: Automate the act of responding to fresh videos without human involvement.\n\n---\n\n## 🧩 Optional Enhancements (Future Groups):\n\n* 📦 **Group: Logging & History**\n\n  * Store each video ID + timestamp + posted comment in a DB (e.g., PostgreSQL or Google Sheets).\n* 🔐 **Group: Authentication**\n\n  * Manage OAuth2 token refreshing and storage for YouTube API access.\n\n---\n\n### 📌 Summary Visual:\n\n```\n🟩 Group 1: 🎯 Video Discovery\n  └── 🕒 Schedule → ✏️ Channel ID → 🌐 Fetch Video\n\n🟨 Group 2: 🤖 Comment Creation\n  └── 🧠 AI Agent → 🧾 OpenAI Model\n\n🟦 Group 3: 📤 Comment Deployment\n  └── 📬 Post Comment\n```\n\n\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"507bae91-627c-44ae-89d5-0e05a607152e","connections":{"Comment Writer":{"ai_languageModel":[[{"node":"Commenter Agent","type":"ai_languageModel","index":0}]]},"Set Channel ID":{"main":[[{"node":"Fetch Latest Video","type":"main","index":0}]]},"Commenter Agent":{"main":[[{"node":"Post Comment","type":"main","index":0}]]},"Fetch Latest Video":{"main":[[{"node":"Commenter Agent","type":"main","index":0}]]},"Check for New Video":{"main":[[{"node":"Set Channel ID","type":"main","index":0}]]}}}


name: Automated YouTube Channel Lead Generation & Email Outreach with Apify and ZeroBounce
author_name: Yaron Been
author_username: yaron-nofluff
nodes_used: ["n8n-nodes-base.httpRequest","n8n-nodes-base.gmail"]
categories: []
created_at: 2025-06-02T08:43:35.648Z
updated_at: 2025-06-02T08:43:35.648Z
url: https://n8n.io/workflows/4582
scraped_at: 2025-06-19 22:50:15
description:
  Workflow Overview
  This sophisticated n8n automation is a powerful lead generation and outreach tool designed to transform YouTube channel research into actionable marketing opportunities. By intelligently connecting multiple services and APIs, this workflow:

  Discovers Targeted Channels: 
     Scrapes YouTube channels based on specific keywords
     Extracts comprehensive channel metadata
     Identifies potential business opportunities

  Intelligent Lead Qualification:
     Filters channels with contact emails
     Validates email authenticity
     Ensures high-quality lead generation

  Personalized Outreach:
     Sends customized cold emails
     Leverages channel-specific personalization
     Automates initial contact process

  Key Benefits
  🕵️ Automated Lead Discovery: Find potential collaborators or clients
  🧠 Smart Filtering: Eliminate invalid or irrelevant leads
  📧 Personalized Outreach: Contextual, channel-specific communication
  ⏱️ Time-Saving: Eliminate manual research and email hunting

  Workflow Architecture

  🔍 Stage 1: Channel Scraping
  Apify Integration**: Scrapes YouTube channels
  Keyword-Based Search**: Target specific niches
  Metadata Extraction**: Collect channel details, emails

  🧩 Stage 2: Lead Qualification
  Email Existence Check**: Filter channels with contact info
  ZeroBounce Verification**: Validate email authenticity
  Quality Control**: Ensure only valid leads proceed

  📬 Stage 3: Personalized Outreach
  Gmail Integration**: Send customized cold emails
  Dynamic Personalization**: Use channel-specific details
  Automated Communication**: Streamline initial contact

  Potential Use Cases
  Marketing Agencies**: Find potential clients
  Influencer Marketers**: Discover collaboration opportunities
  Content Creators**: Network and expand professional connections
  Sales Teams**: Generate targeted lead lists
  Recruitment Specialists**: Identify industry professionals

  Setup Requirements
  Apify Account
     API token
     YouTube Scraper Actor
     Configured search keywords

  ZeroBounce Account
     Email verification API
     Validation credits

  Gmail Account
     OAuth2 authentication
     Configured sending profile

  n8n Installation
     Cloud or self-hosted instance
     Import workflow configuration
     Configure API credentials

  Future Enhancement Suggestions
  🤖 AI-powered email personalization
  📊 Advanced lead scoring mechanisms
  🔄 Automated follow-up sequences
  📈 Integration with CRM platforms
  🌐 Multi-platform lead generation

  Ethical Considerations
  Respect email communication guidelines
  Comply with anti-spam regulations
  Provide clear opt-out mechanisms
  Maintain professional, value-driven outreach

  Connect With Me

  Ready to supercharge your lead generation?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your outreach strategy with intelligent, automated workflows!

workflow_json:
  {"id":"xyq7qemab2OGGItB","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"YouTube Lead Scraper Automation","tags":[],"nodes":[{"id":"23a2cfe7-16f0-4f7b-942e-b0de7b0059f7","name":"Trigger Apify Scraper","type":"n8n-nodes-base.httpRequest","position":[220,0],"parameters":{"url":"https://api.apify.com/v2/actor-tasks/YOUR_TASK_ID/run-sync","method":"POST","options":{},"jsonBody":"{\n  \"input\": {\n    \"searchKeywords\": [\n      \"fitness\"\n    ],\n    \"maxResults\": 10,\n    \"scrapeEmails\": true\n  }\n}","sendBody":true,"sendQuery":true,"specifyBody":"json","queryParameters":{"parameters":[{"name":"token","value":"YOUR_APIFY_TOKEN"}]}},"typeVersion":4.2},{"id":"02c53b04-7321-4d5f-be59-121536160236","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[0,0],"parameters":{},"typeVersion":1},{"id":"c62a8f67-9636-4ddb-a639-1997d609446e","name":"Get Apify Results","type":"n8n-nodes-base.httpRequest","position":[440,0],"parameters":{"url":"=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"token","value":"YOUR_APIFY_TOKEN"},{"name":"clean","value":"true"},{"name":"format","value":"json"}]}},"typeVersion":4.2},{"id":"e9f37f8b-1444-47a7-b134-1478ef5dbc9d","name":"Extract Email & Channel","type":"n8n-nodes-base.set","position":[780,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"01c29690-9b43-41c5-9b88-a587c7e1e4b9","name":"channelTitle","type":"string","value":"={{ $json.channelTitle }}"},{"id":"9ad0d2f1-5bb8-4af0-8633-a45a1ec36c20","name":"email","type":"string","value":"={{ $json.email }}"}]}},"typeVersion":3.4},{"id":"7f73ffd4-0a09-4287-948f-314e89a3e8fc","name":"Email Exists?","type":"n8n-nodes-base.if","position":[1000,0],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"94741b49-6e09-438a-8de1-1b67379ba0c5","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.email }}","rightValue":""}]}},"typeVersion":2.2},{"id":"c8d8243e-7a15-48a1-9c69-1bb79009ab79","name":"Verify Email (ZeroBounce)","type":"n8n-nodes-base.httpRequest","position":[1320,-120],"parameters":{"url":"=https://api.zerobounce.net/v2/validate?api_key=YOUR_API_KEY&email={{ $json.email }}","options":{}},"typeVersion":4.2},{"id":"59f7ab1e-4ac0-4cde-9eae-e3379ff6c669","name":"Email is Valid?","type":"n8n-nodes-base.if","position":[1540,-120],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d17ab221-1aea-4c4a-9ce0-923ef4a67585","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"=valid"}]}},"typeVersion":2.2},{"id":"9f4cc0e7-95e2-41cf-add7-b8c052377431","name":"Send Cold Email","type":"n8n-nodes-base.gmail","position":[1880,-240],"webhookId":"49cb665d-3716-4588-a079-9b3b55a5fb87","parameters":{"sendTo":"={{ $json.address }}","message":"=Hi,\n\nI just checked out your YouTube channel – awesome content on home workouts!  I'm reaching out because we help fitness creators like you grow their email lists and monetize content with premium guides and courses – with no up-front cost.  Would you be open to a quick chat next week? I’d love to show you a couple of ways we could help.\n\nBest Alex","options":{},"subject":"=Love your channel, {{ $('Email Exists?').item.json.channelTitle }} – Quick idea!"},"credentials":{"gmailOAuth2":{"id":"YMHjS2nJsRGP7svY","name":"Gmail account"}},"typeVersion":2.1},{"id":"08af4ffa-b21e-4173-a0d3-1ea63439c348","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-60,-680],"parameters":{"color":5,"width":660,"height":900,"content":"## 🔁 SECTION 1: **Start & Scrape YouTube Data**\n\n### 🟢 **Nodes Involved**\n\n* ⚡ `Manual Trigger`\n* 🌐 `Trigger Apify Scraper`\n* 🌐 `Get Apify Results`\n\n---\n\n### ✨ What This Section Does\n\n|Step                      |  Description                                                                                                                   |\n| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **Manual Trigger**         | Starts the workflow manually (great for testing or on-demand runs).                                                              |\n| **Trigger Apify Scraper** | Sends a `POST` request to Apify to run the YouTube Scraper Actor with your target keywords like `\"fitness\"` or `\"tech\"`.         |\n| **Get Apify Results**     | Waits for the scrape to complete and then fetches the dataset containing YouTube channel details, including emails if available. |\n\n### 📦 Output Example:\n\n```json\n{\n  \"channelTitle\": \"FitLife Hacks\",\n  \"channelUrl\": \"https://youtube.com/@fitlifehacks\",\n  \"email\": \"contact@fitlifehacks.com\"\n}\n```\n\n---\n\n"},"typeVersion":1},{"id":"7acea3ed-cc26-4e39-879e-af2648eb52ce","name":"No Operation, do nothing","type":"n8n-nodes-base.noOp","position":[1320,200],"parameters":{},"typeVersion":1},{"id":"2fc0ad18-040b-4da6-a83d-8e90be99889b","name":"No Operation, do nothing1","type":"n8n-nodes-base.noOp","position":[1900,60],"parameters":{},"typeVersion":1},{"id":"1b9c2db4-776f-4b9c-a60d-c44d873d8d46","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[720,-660],"parameters":{"color":3,"width":420,"height":880,"content":"## 🔎 SECTION 2: **Filter & Prepare Leads**\n\n### 🟢 **Nodes Involved**\n\n* 🧮 `Extract Email & Channel`\n* 🚦 `Email Exists?`\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step                        | 🧾 Description                                                                                |\n| ------------------------------ | --------------------------------------------------------------------------------------------- |\n|  **Extract Email & Channel** | Uses the `Edit Fields` node to isolate the fields you need: `email` and `channelTitle`.       |\n|  **Email Exists?**           | An `IF` node that checks if `email` is not empty. Only leads with actual emails move forward. |\n\n### 🧠 Why This Matters:\n\nFiltering out empty emails ensures you don’t waste verification API calls or try to email blanks.\n\n---\n\n"},"typeVersion":1},{"id":"b8c055f7-802a-4f97-bbff-908275e2a7e9","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1260,-840],"parameters":{"color":6,"width":400,"height":920,"content":"## ✅ SECTION 3: **Verify Emails via ZeroBounce**\n\n### 🟢 **Nodes Involved**\n\n* 🌐 `Verify Email (ZeroBounce)`\n* 🚥 `Email is Valid?`\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step                          | 🧾 Description                                                                                             |\n| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |\n| 🌐 **Verify Email (ZeroBounce)** | Sends an API request to ZeroBounce to check if the email is `valid`, `catch-all`, `invalid`, `abuse`, etc. |\n| 🚥 **Email is Valid?**           | An `IF` node filters out only those emails where the verification result is `\"valid\"` (or safe to send).   |\n\n### ✅ Output Example:\n\n```json\n{\n  \"status\": \"valid\",\n  \"email\": \"contact@fitlifehacks.com\"\n}\n```\n\n---\n\n"},"typeVersion":1},{"id":"39701534-2755-49b9-89cd-67e5c7d4a087","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1800,-720],"parameters":{"color":7,"width":260,"height":680,"content":"## ✉️ SECTION 4: **Send Cold Email**\n\n### 🟢 **Nodes Involved**\n\n* 📧 `Send Cold Email` (Gmail)\n\n---\n\n### ✨ What This Section Does\n\n|  Step           |  Description                                                                                                         |\n| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |\n|  **Gmail Node** | Sends a customized cold email to the lead using Gmail. You can personalize the email using fields like `channelTitle`. |\n\n---\n"},"typeVersion":1},{"id":"728b1e9e-ca99-4d9a-90df-7d12468b285d","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1720,-660],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"7599233b-b1d5-48a8-b47b-95730a5a2732","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1720,-320],"parameters":{"color":4,"width":1289,"height":3238,"content":"# 🧠 YouTube Lead Scraper Automation – n8n Workflow Breakdown\n\nThis automation scrapes YouTube for channels in your niche, extracts emails, validates them, and sends personalized cold emails via Gmail.\n\n---\n\n## 🔁 SECTION 1: **Start & Scrape YouTube Data**\n\n### 🟢 **Nodes Involved**\n\n* ⚡ `Manual Trigger`\n* 🌐 `Trigger Apify Scraper`\n* 🌐 `Get Apify Results`\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step                      | 🧾 Description                                                                                                                   |\n| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n|  **Manual Trigger**         | Starts the workflow manually (great for testing or on-demand runs).                                                              |\n|  **Trigger Apify Scraper** | Sends a `POST` request to Apify to run the YouTube Scraper Actor with your target keywords like `\"fitness\"` or `\"tech\"`.         |\n|  **Get Apify Results**     | Waits for the scrape to complete and then fetches the dataset containing YouTube channel details, including emails if available. |\n\n### 📦 Output Example:\n\n```json\n{\n  \"channelTitle\": \"FitLife Hacks\",\n  \"channelUrl\": \"https://youtube.com/@fitlifehacks\",\n  \"email\": \"contact@fitlifehacks.com\"\n}\n```\n\n---\n\n## 🔎 SECTION 2: **Filter & Prepare Leads**\n\n### 🟢 **Nodes Involved**\n\n* 🧮 `Extract Email & Channel`\n* 🚦 `Email Exists?`\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step                        | 🧾 Description                                                                                |\n| ------------------------------ | --------------------------------------------------------------------------------------------- |\n|  **Extract Email & Channel** | Uses the `Edit Fields` node to isolate the fields you need: `email` and `channelTitle`.       |\n| **Email Exists?**           | An `IF` node that checks if `email` is not empty. Only leads with actual emails move forward. |\n\n### 🧠 Why This Matters:\n\nFiltering out empty emails ensures you don’t waste verification API calls or try to email blanks.\n\n---\n\n## ✅ SECTION 3: **Verify Emails via ZeroBounce**\n\n### 🟢 **Nodes Involved**\n\n* 🌐 `Verify Email (ZeroBounce)`\n* 🚥 `Email is Valid?`\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step                          | 🧾 Description                                                                                             |\n| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |\n| 🌐 **Verify Email (ZeroBounce)** | Sends an API request to ZeroBounce to check if the email is `valid`, `catch-all`, `invalid`, `abuse`, etc. |\n| 🚥 **Email is Valid?**           | An `IF` node filters out only those emails where the verification result is `\"valid\"` (or safe to send).   |\n\n### ✅ Output Example:\n\n```json\n{\n  \"status\": \"valid\",\n  \"email\": \"contact@fitlifehacks.com\"\n}\n```\n\n---\n\n## ✉️ SECTION 4: **Send Cold Email**\n\n### 🟢 **Nodes Involved**\n\n* 📧 `Send Cold Email` (Gmail)\n\n---\n\n### ✨ What This Section Does\n\n| 🔧 Step           | 🧾 Description                                                                                                         |\n| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |\n|  **Gmail Node** | Sends a customized cold email to the lead using Gmail. You can personalize the email using fields like `channelTitle`. |\n\n---\n\n### 💌 Sample Email Content:\n\n```html\nSubject: Quick idea for {{$json[\"channelTitle\"]}}\n\nHi there,\n\nLoved your channel {{$json[\"channelTitle\"]}}! I had a quick idea on how you could grow your audience and monetize better.\n\nWould love to share — open to a quick call next week?\n\nBest,  \n[Your Name]  \n[Your Website]\n```\n\n---\n\n## 🎯 Overall Flow Summary\n\n| Section               | Purpose                                                 |\n| --------------------- | ------------------------------------------------------- |\n|  **Start & Scrape** | Launches the Apify scraper and gets lead data           |\n|  **Filter Leads**   | Extracts relevant info and removes leads without emails |\n|  **Verify Emails**   | Checks email validity via ZeroBounce                    |\n|  **Send Emails**    | Sends cold emails to the filtered, verified leads       |\n\n---\n\n## 🚀 Suggestions for Next Level\n\n* ⏱️ Add `Wait` or `Delay` nodes to avoid hitting Gmail rate limits\n* 📊 Log results to Airtable or Google Sheets\n* 🔁 Loop with batch processing for large lead lists\n* 🧠 Add AI-generated personalized messages with OpenAI API\n\n---\n\n"},"typeVersion":1}],"active":false,"pinData":{"Get Apify Results":[{"json":{"email":"contact@fitlifehacks.com","keywords":["fitness","wellness","training"],"channelUrl":"https://www.youtube.com/@fitlifehacks","description":"Tips on fitness and wellness.","channelTitle":"FitLife Hacks","subscriberCount":58400}},{"json":{"email":"","keywords":["yoga","mindfulness"],"channelUrl":"https://www.youtube.com/@wellnessroutine","description":"Yoga, mindfulness, and productivity.","channelTitle":"Wellness Routine","subscriberCount":12900}},{"json":{"email":"info@homeworkoutpros.net","keywords":["workout","home training"],"channelUrl":"https://www.youtube.com/@homeworkoutpros","description":"Home workout routines and bodyweight training.","channelTitle":"Home Workout Pros","subscriberCount":43200}}],"Trigger Apify Scraper":[{"json":{"data":{"status":"SUCCEEDED","defaultDatasetId":"abc123xyz-leads-dataset"}}}],"Verify Email (ZeroBounce)":[{"json":{"city":"Los Angeles","domain":"fitlifehacks.com","gender":"","region":"CA","status":"valid","account":"contact","address":"contact@fitlifehacks.com","country":"US","zipcode":"90001","lastname":"","mx_found":"true","firstname":"","mx_record":"alt1.aspmx.l.google.com","free_email":false,"sub_status":"","did_you_mean":"","processed_at":"2025-05-31 10:30:00","smtp_provider":"google.com","domain_age_days":"2650"}}]},"settings":{"executionOrder":"v1"},"versionId":"0146b023-e54a-4476-9adc-20d5bdfcd89f","connections":{"Email Exists?":{"main":[[{"node":"Verify Email (ZeroBounce)","type":"main","index":0}],[{"node":"No Operation, do nothing","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Trigger Apify Scraper","type":"main","index":0}]]},"Email is Valid?":{"main":[[{"node":"Send Cold Email","type":"main","index":0}],[{"node":"No Operation, do nothing1","type":"main","index":0}]]},"Get Apify Results":{"main":[[{"node":"Extract Email & Channel","type":"main","index":0}]]},"Trigger Apify Scraper":{"main":[[{"node":"Get Apify Results","type":"main","index":0}]]},"Extract Email & Channel":{"main":[[{"node":"Email Exists?","type":"main","index":0}]]},"Verify Email (ZeroBounce)":{"main":[[{"node":"Email is Valid?","type":"main","index":0}]]}}}


name: Automate LinkedIn Engagement with Phantombuster, OpenAI GPT & Google Sheets Tracking
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-02T08:48:48.133Z
updated_at: 2025-06-02T08:48:48.133Z
url: https://n8n.io/workflows/4586
scraped_at: 2025-06-19 22:50:21
description:
  Workflow Overview
  This sophisticated n8n automation is a powerful LinkedIn engagement and networking tool designed to revolutionize professional social media interaction. By intelligently combining web scraping, AI, and automation technologies, this workflow:

  Discovers Relevant Content: 
     Automatically scrapes LinkedIn posts
     Identifies target profiles and recent content
     Ensures consistent networking opportunities

  Generates Intelligent Interactions:
     Uses AI to craft contextual, professional comments
     Ensures human-like, valuable engagement
     Maintains professional tone and relevance

  Automates Engagement Process:
     Likes and comments on selected posts
     Increases visibility and connection potential
     Builds professional network systematically

  Comprehensive Activity Tracking:
     Logs all interactions in Google Sheets
     Provides transparent engagement history
     Enables performance analysis and optimization

  Key Benefits
  🤖 Full Automation: Consistent daily networking
  💡 AI-Powered Interactions: Intelligent, context-aware engagement
  📊 Detailed Tracking: Comprehensive interaction logging
  🌐 Professional Visibility: Strategic online presence management

  Workflow Architecture

  🔹 Stage 1: Content Discovery
  Scheduled Trigger**: Daily post scanning
  Phantombuster Integration**: LinkedIn post scraping
  Targeted Profile Research**:
    Identifies recent posts
    Extracts critical post metadata

  🔹 Stage 2: AI-Powered Interaction
  OpenAI GPT Model**: Generates contextual comments
  Intelligent Analysis**:
    Understands post content
    Crafts personalized responses
  Professional Tone Maintenance**

  🔹 Stage 3: Engagement Automation
  Automated Liking**: Increases post visibility
  Intelligent Commenting**: 
    Posts AI-generated comments
    Ensures meaningful interaction

  🔹 Stage 4: Performance Logging
  Google Sheets Integration**
  Comprehensive Activity Tracking**
  Interaction History Preservation**

  Potential Use Cases
  Sales Professionals**: Lead generation and networking
  Marketers**: Increased brand visibility
  Recruiters**: Talent discovery and engagement
  Entrepreneurs**: Professional network expansion
  Content Creators**: Audience interaction and growth

  Setup Requirements
  Phantombuster Account
     API key
     Configured LinkedIn scraping agents
     Profile URL list

  OpenAI API
     GPT model access
     API key for comment generation
     Preferred language model

  Google Sheets
     Connected Google account
     Prepared tracking spreadsheet
     Appropriate sharing settings

  n8n Installation
     Cloud or self-hosted instance
     Workflow configuration
     API credential management

  Future Enhancement Suggestions
  🤖 Advanced sentiment analysis
  📊 Engagement performance metrics
  🎯 Intelligent post targeting
  🔍 Machine learning optimization
  🌐 Multi-platform support

  Technical Considerations
  Implement robust error handling
  Use exponential backoff for API calls
  Maintain flexible engagement strategies
  Ensure compliance with platform guidelines

  Ethical Guidelines
  Respect professional networking etiquette
  Maintain genuine, value-adding interactions
  Avoid spammy or repetitive engagement
  Prioritize quality over quantity

  Connect With Me

  Ready to revolutionize your professional networking?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your LinkedIn strategy with intelligent, automated workflows!

  #LinkedInAutomation #AINetworking #ProfessionalGrowth #CareerStrategy #NetworkingTech #AIMarketing #ProfessionalDevelopment #SocialMediaStrategy #ContentEngagement #BusinessIntelligence

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"kMppQ9OLVQ08LU6M","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"LinkedIn Post Engagement using Phantombuster","tags":[],"nodes":[{"id":"9374a17f-fb35-4862-ba86-d52d0c616ee6","name":"Daily Trigger - 9 AM","type":"n8n-nodes-base.scheduleTrigger","position":[0,0],"parameters":{"rule":{"interval":[{"triggerAtHour":9}]}},"typeVersion":1.2},{"id":"c71ab77a-b12d-4966-a33f-d7204f5d31fd","name":"LinkedIn Posts Scraper","type":"n8n-nodes-base.httpRequest","position":[220,0],"parameters":{"url":"https://api.phantombuster.com/api/v2/agent/launch","method":"POST","options":{},"jsonBody":"{\n  \"id\": \"YOUR_AGENT_ID\",\n  \"arguments\": {\n    \"profileUrls\": [\n      \"https://www.linkedin.com/in/USERNAME/\"\n    ],\n    \"numberOfPosts\": 1\n  },\n  \"save\": false\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"X-Phantombuster-Key-1","value":"YOUR_API_KEY"}]}},"typeVersion":4.2},{"id":"9b7dc781-3726-4ce0-a551-57f3b304aebd","name":"Fetch Scraper Results","type":"n8n-nodes-base.httpRequest","position":[440,0],"parameters":{"url":"https://api.phantombuster.com/api/v2/agent/fetch-output","options":{},"sendQuery":true,"sendHeaders":true,"queryParameters":{"parameters":[{"name":"id","value":"YOUR_AGENT_ID"}]},"headerParameters":{"parameters":[{"name":"X-Phantombuster-Key-1","value":"YOUR_API_KEY"}]}},"typeVersion":4.2},{"id":"f7f1e974-9522-4692-9af8-1674bac0341a","name":"Commenter Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[940,0],"parameters":{"text":"=You are a professional LinkedIn marketer. Your job is to write engaging, thoughtful, and relevant comments for posts to increase visibility and connection with the author.\n\nHere is the latest LinkedIn post:\n\nAuthor: {{ $json.authorName }}\nProfile: {{ $json.authorProfile }}\nPost URL: {{ $json.postUrl }}\nDate: {{ $json.date }}\nContent:\n\"\"\"\n{{ $json.text }}\n\"\"\"\n\nWrite a concise and personalized comment (1–2 sentences max) that:\n- Adds value to the conversation\n- Feels human and not generic\n- Avoids spammy language\n- Uses a positive and professional tone\n\nOnly return the comment text. Do not include quotation marks or any intro.","options":{},"promptType":"define"},"typeVersion":1.9},{"id":"d58b36e6-b24b-450b-9577-2da590c51d96","name":"Comment Generation Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[880,240],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"wYwTjEv45IzlAOAu","name":"OpenAi account 2"}},"typeVersion":1.2},{"id":"cd761bd8-1d94-4e28-ade5-a4e69b463124","name":"Like LinkedIn Post","type":"n8n-nodes-base.httpRequest","position":[1760,-140],"parameters":{"url":"https://api.phantombuster.com/api/v2/agent/launch","method":"POST","options":{},"jsonBody":"={\n  \"id\": \"YOUR_LIKER_AGENT_ID\",\n  \"arguments\": {\n    \"postUrls\": [\n      {{ $('Fetch Scraper Results').item.json.postUrl }}\n    ]\n  },\n  \"save\": false\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"X-Phantombuster-Key-1","value":"YOUR_API_KEY"}]}},"typeVersion":4.2},{"id":"337498aa-ee44-4f92-bd46-7bbdc982960d","name":"Post LinkedIn Comment","type":"n8n-nodes-base.httpRequest","position":[1760,140],"parameters":{"url":"https://api.phantombuster.com/api/v2/agent/launch","method":"POST","options":{},"jsonBody":"={\n  \"id\": \"YOUR_COMMENTER_AGENT_ID\",\n  \"arguments\": {\n    \"postUrls\": [\n      {{ $('Fetch Scraper Results').item.json.postUrl }}\n    ],\n    \"comments\": [\n      {{ $json.output }}\n    ]\n  },\n  \"save\": false\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"X-Phantombuster-Key-1","value":"YOUR_API_KEY"}]}},"typeVersion":4.2},{"id":"27e6fab8-c8e9-4613-a8c1-1fb8306b9c46","name":"Log Activity to Sheet","type":"n8n-nodes-base.googleSheets","position":[2360,-20],"parameters":{"columns":{"value":{"Comment":"={{ $('Commenter Agent').item.json.output }}","PostUrl":"={{ $('Fetch Scraper Results').item.json.postUrl }}","Post text":"={{ $('Fetch Scraper Results').item.json.text }}","Timestamp":"={{ $('Fetch Scraper Results').item.json.timestamp }}","AuthorName":"={{ $('Fetch Scraper Results').item.json.authorName }}","AuthorProfile":"={{ $('Fetch Scraper Results').item.json.authorProfile }}"},"schema":[{"id":"AuthorName","type":"string","display":true,"required":false,"displayName":"AuthorName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"AuthorProfile","type":"string","display":true,"required":false,"displayName":"AuthorProfile","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PostUrl","type":"string","display":true,"required":false,"displayName":"PostUrl","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Post text","type":"string","display":true,"required":false,"displayName":"Post text","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Comment","type":"string","display":true,"required":false,"displayName":"Comment","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Timestamp","type":"string","display":true,"required":false,"displayName":"Timestamp","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/15h8fYaIVsC7HZf5-KsPA8tx-459ulURB5UEMC62Khzk/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"15h8fYaIVsC7HZf5-KsPA8tx-459ulURB5UEMC62Khzk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/15h8fYaIVsC7HZf5-KsPA8tx-459ulURB5UEMC62Khzk/edit?usp=drivesdk","cachedResultName":"LinkedIn auto liker and commenter"}},"credentials":{"googleSheetsOAuth2Api":{"id":"K5yYfUnKFTqaRn6A","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"6f8ccb5f-ddfd-4524-8098-51f027712203","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-40,-760],"parameters":{"color":3,"width":640,"height":940,"content":"## 🔹 **Section 1: Trigger and Data Collection**\n\n### 📍Nodes Involved:\n\n* `Daily Trigger - 9 AM`\n* `Start LinkedIn Posts Scraper`\n* `Fetch Scraper Results`\n\n### ✅ **Purpose:**\n\nThis section is responsible for **automatically collecting LinkedIn post data** every day at a specific time.\n\n### 🔍 **Details:**\n\n1. **Daily Trigger - 9 AM**\n\n   * Starts the workflow automatically every day at 9 AM.\n   * Ensures the process runs consistently without manual intervention.\n\n2. **Start LinkedIn Posts Scraper**\n\n   * Sends a `POST` request to Phantombuster's API.\n   * Starts the \"LinkedIn Profile Posts Scraper\" Phantom to collect recent LinkedIn posts from specified profiles.\n\n3. **Fetch Scraper Results**\n\n   * Sends a `GET` request to retrieve the output from the scraping job.\n   * Extracts post data such as post ID, content, author, timestamp, etc.\n"},"typeVersion":1},{"id":"eca7d2c9-342f-4db0-a6b1-c5132f0af256","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[800,-680],"parameters":{"color":5,"width":580,"height":1080,"content":"## 🔹 **Section 2: AI-Based Content Analysis and Comment Generation**\n\n### 📍Nodes Involved:\n\n* `Generate LinkedIn Comment`\n* `Comment Generation Model`\n\n### ✅ **Purpose:**\n\nTo **analyze the content of each scraped LinkedIn post** and use AI to generate relevant and context-aware comments.\n\n### 🔍 **Details:**\n\n1. **Generate LinkedIn Comment**\n\n   * Acts as the AI Agent that facilitates the interaction between the post content and the AI model.\n   * Prepares the data (e.g., extracts post content) and sends it to the model.\n\n2. **Comment Generation Model**\n\n   * Powered by OpenAI's language model.\n   * Processes the post content and returns a thoughtful, engaging comment tailored to the post topic."},"typeVersion":1},{"id":"c47a8e47-cab6-4e47-90d9-41c6e5b56189","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1580,-820],"parameters":{"color":7,"width":460,"height":1140,"content":"## 🔹 **Section 3: Post Engagement Automation**\n\n### 📍Nodes Involved:\n\n* `Like LinkedIn Post`\n* `Post LinkedIn Comment`\n\n### ✅ **Purpose:**\n\nTo **interact with LinkedIn posts** by liking and commenting using the generated content.\n\n### 🔍 **Details:**\n\n1. **Like LinkedIn Post**\n\n   * Sends a `POST` request to Phantombuster to like the LinkedIn post.\n   * This increases engagement and visibility.\n\n2. **Post LinkedIn Comment**\n\n   * Sends a `POST` request with the AI-generated comment to the LinkedIn post.\n   * Engages the post author and audience in a meaningful way.\n"},"typeVersion":1},{"id":"36083131-b3de-4d8c-8d7c-941368fb6312","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2180,-560],"parameters":{"color":2,"width":480,"height":720,"content":"## 🔹 **Section 4: Result Logging and Storage**\n\n### 📍Nodes Involved:\n\n* `Log Activity to Sheet`\n\n### ✅ **Purpose:**\n\nTo **store all the interactions and results in a structured format** for tracking and analysis.\n\n### 🔍 **Details:**\n\n1. **Log Activity to Sheet**\n\n   * Appends data (e.g., post URL, comment, status, timestamp) to a Google Sheets document.\n   * Helps maintain records, monitor performance, and debug issues if necessary.\n\n"},"typeVersion":1},{"id":"9f6c0756-449a-45c4-ab49-080576be9651","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1920,-760],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"df8bc986-f7b8-4378-a0cd-737a15e0279e","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1920,-420],"parameters":{"color":4,"width":1289,"height":3378,"content":"# 🔄 **Automated LinkedIn Engagement Workflow**\n\nThis workflow is designed to **automate the process of collecting LinkedIn posts**, analyzing them with AI, **engaging with them** (liking and commenting), and **logging the actions** in Google Sheets. It runs **daily at 9 AM**, ensuring consistent and timely interaction.\n\n---\n\n## 🧭 **Workflow Overview**\n\nThe workflow is divided into **4 key sections**:\n\n1. **Trigger & Data Collection**\n2. **AI Analysis & Comment Generation**\n3. **LinkedIn Post Engagement**\n4. **Logging & Storage**\n\nEach section is detailed below.\n\n---\n\n## 🔹 Section 1: Trigger & Data Collection\n\n### 📅 **Node: `Daily Trigger - 9 AM`**\n\n* **Type**: Schedule Trigger\n* **Purpose**: Initiates the workflow every day at 9:00 AM automatically.\n* **Benefit**: Removes the need for manual execution, ensuring timely and consistent operation.\n\n---\n\n### 🌐 **Node: `Start LinkedIn Posts Scraper`**\n\n* **Type**: HTTP Request (POST)\n* **Endpoint**: `https://api.phantombuster.com/…`\n* **Purpose**: Starts Phantombuster’s “LinkedIn Profile Posts Scraper” Phantom.\n* **Function**: Sends a request to begin scraping recent posts from specified LinkedIn profiles.\n* **Input**: List of profile URLs, authentication details.\n\n---\n\n### 🌐 **Node: `Fetch Scraper Results`**\n\n* **Type**: HTTP Request (GET)\n* **Endpoint**: `https://api.phantombuster.com/…`\n* **Purpose**: Retrieves the results of the scraping operation.\n* **Output**: JSON data of LinkedIn posts (content, timestamp, author, URL, post ID).\n\n---\n\n## 🔹 Section 2: AI Analysis & Comment Generation\n\n### 🤖 **Node: `Generate LinkedIn Comment`**\n\n* **Type**: AI Agent (Tool Integrator)\n* **Purpose**: Acts as the mediator between the scraped post content and the AI model.\n* **Function**:\n\n  * Extracts post content from the fetched data.\n  * Sends it to the AI for contextual understanding and comment generation.\n\n---\n\n### 🧠 **Node: `Comment Generation Model`**\n\n* **Type**: OpenAI Chat Model (e.g., GPT)\n* **Purpose**: Generates a personalized, thoughtful comment based on the LinkedIn post.\n* **Input**: Post content and context.\n* **Output**: Human-like comment relevant to the post's theme.\n\n---\n\n## 🔹 Section 3: LinkedIn Post Engagement\n\n### 👍 **Node: `Like LinkedIn Post`**\n\n* **Type**: HTTP Request (POST)\n* **Endpoint**: `https://api.phantombuster.com/…`\n* **Purpose**: Likes the target LinkedIn post.\n* **Function**:\n\n  * Increases post visibility.\n  * Adds a lightweight engagement action before commenting.\n\n---\n\n### 💬 **Node: `Post LinkedIn Comment`**\n\n* **Type**: HTTP Request (POST)\n* **Endpoint**: `https://api.phantombuster.com/…`\n* **Purpose**: Posts the AI-generated comment to the post.\n* **Function**:\n\n  * Completes the engagement cycle.\n  * Ensures comments are context-aware and professional.\n\n---\n\n## 🔹 Section 4: Logging & Storage\n\n### 📄 **Node: `Log Activity to Sheet`**\n\n* **Type**: Google Sheets (Append)\n\n* **Purpose**: Logs all workflow results into a Google Sheet.\n\n* **Data Logged**:\n\n  * Post URL\n  * Post content (optional)\n  * AI-generated comment\n  * Status of like/comment actions\n  * Timestamps\n\n* **Benefit**: Provides a centralized log for auditing, review, or further analytics.\n\n---\n\n## ✅ **Key Benefits of This Workflow**\n\n* **Automation**: Runs daily with zero manual effort.\n* **Intelligent Engagement**: AI-powered comment generation ensures relevance and tone.\n* **Tracking & Transparency**: Google Sheets logging ensures every step is recorded.\n* **Scalability**: Easily extendable to more profiles or engagement types.\n\n---\n\n## 📈 **Future Enhancements (Suggestions)**\n\n* Add error handling and retry logic for failed API calls.\n* Include sentiment analysis to refine comment tone.\n* Enable Slack/Email alerts for daily summary.\n* Add filters to only comment on posts with certain keywords or engagement levels.\n\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"6db64df0-bacb-483a-833c-e23893831a22","connections":{"Commenter Agent":{"main":[[{"node":"Like LinkedIn Post","type":"main","index":0},{"node":"Post LinkedIn Comment","type":"main","index":0}]]},"Like LinkedIn Post":{"main":[[{"node":"Log Activity to Sheet","type":"main","index":0}]]},"Daily Trigger - 9 AM":{"main":[[{"node":"LinkedIn Posts Scraper","type":"main","index":0}]]},"Fetch Scraper Results":{"main":[[{"node":"Commenter Agent","type":"main","index":0}]]},"Post LinkedIn Comment":{"main":[[{"node":"Log Activity to Sheet","type":"main","index":0}]]},"LinkedIn Posts Scraper":{"main":[[{"node":"Fetch Scraper Results","type":"main","index":0}]]},"Comment Generation Model":{"ai_languageModel":[[{"node":"Commenter Agent","type":"ai_languageModel","index":0}]]}}}


name: Extract Instagram Profile Data with Apify and Store in Google Sheets
author_name: Yaron Been
author_username: yaron-nofluff
nodes_used: ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest"]
categories: []
created_at: 2025-06-02T08:50:13.898Z
updated_at: 2025-06-02T08:50:13.898Z
url: https://n8n.io/workflows/4587
scraped_at: 2025-06-19 22:48:39
description:
  Workflow Overview
  This cutting-edge n8n automation is a powerful social media intelligence gathering tool designed to transform Instagram profile research into a seamless, automated process. By intelligently combining web scraping, data formatting, and cloud storage technologies, this workflow:

  Discovers Profile Insights: 
     Automatically scrapes Instagram profile data
     Captures comprehensive profile metrics
     Extracts critical social media intelligence

  Intelligent Data Capture:
     Retrieves follower counts
     Collects biographical information
     Captures profile picture and external links

  Seamless Data Logging:
     Automatically stores data in Google Sheets
     Creates a living, updateable database
     Enables easy analysis and tracking

  Key Benefits
  🤖 Full Automation: Instant profile intelligence
  💡 Comprehensive Insights: Detailed social media metrics
  📊 Effortless Tracking: Automated data collection
  🌐 Multi-Purpose Research: Flexible data gathering

  Workflow Architecture

  🔹 Stage 1: Trigger & Input
  Form-Based Trigger**: Manual username submission
  Webhook Support**: Flexible data entry methods
  User-Driven Initiation**

  🔹 Stage 2: Web Scraping
  Apify Integration**: Robust Instagram data extraction
  Comprehensive Profile Scanning**:
    Followers count
    Following count
    Profile biography
    Profile picture URL

  🔹 Stage 3: Data Formatting
  Intelligent Data Mapping**
  Standardized Data Structure**
  Preparation for Storage**

  🔹 Stage 4: Cloud Logging
  Google Sheets Integration**
  Persistent Data Storage**
  Easy Access and Analysis**

  Potential Use Cases
  Influencer Marketing**: Talent identification
  Competitive Intelligence**: Audience research
  Social Media Analysis**: Performance tracking
  Recruitment**: Talent scouting
  Brand Partnerships**: Collaboration opportunities

  Setup Requirements
  Apify Account
     Instagram scraping actor
     API token
     Configured scraping parameters

  Google Sheets
     Connected Google account
     Prepared tracking spreadsheet
     Appropriate sharing settings

  n8n Installation
     Cloud or self-hosted instance
     Workflow configuration
     API credential management

  Future Enhancement Suggestions
  🤖 Advanced profile scoring
  📊 Engagement rate calculation
  🔔 Real-time change alerts
  🌐 Multi-platform profile tracking
  🧠 AI-powered insights generation

  Technical Considerations
  Implement robust error handling
  Use exponential backoff for API calls
  Maintain flexible data extraction strategies
  Ensure compliance with platform terms of service

  Ethical Guidelines
  Respect user privacy
  Use data for legitimate research
  Maintain transparent data collection practices
  Provide opt-out mechanisms

  Connect With Me

  Ready to unlock social media insights?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your social media research with intelligent, automated workflows!

  #InstagramDataScraping #SocialMediaIntelligence #InfluencerMarketing #DataAutomation #AIResearch #MarketingTechnology #SocialMediaAnalytics #ProfileIntelligence #WebScraping #MarketingTech

workflow_json:
  {"id":"rDGkfQpVtkD1D6RH","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"Instagram Profile Scraper","tags":[],"nodes":[{"id":"923b9b8e-f344-4984-a9cc-2ad111db39a4","name":"Provide Usernames","type":"n8n-nodes-base.formTrigger","position":[0,0],"webhookId":"896b15ed-970c-4164-a57a-b6e567b72db7","parameters":{"options":{},"formTitle":"Instagram profile scraper","formFields":{"values":[{"fieldLabel":"Username","requiredField":true}]},"formDescription":"Scrapes profile via apify"},"typeVersion":2.2},{"id":"cd6ea4f9-45dc-4193-954a-798a04716c5c","name":"Scrape Instagram Profile via Apify","type":"n8n-nodes-base.httpRequest","position":[280,0],"parameters":{"url":"https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>","method":"POST","options":{},"jsonBody":"={\n  \"input\": {\n    \"usernames\": [\n      {{ $json.Username }}\n    ],\n    \"resultsLimit\": 1\n  }\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"e140ffbf-0ca4-4415-8cff-a78dfc6c040b","name":"Format Instagram Profile Data","type":"n8n-nodes-base.set","position":[660,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"5dc90212-ac40-4351-a15a-ef9f35ffd389","name":"username","type":"string","value":"={{ $json.username }}"},{"id":"02339555-2d6b-4d20-a59c-2e8dfa63361c","name":"fullName","type":"string","value":"={{ $json.fullName }}"},{"id":"f5a95d72-443d-468a-a1a6-8cc394b93fa4","name":"followersCount","type":"number","value":"={{ $json.followersCount }}"},{"id":"826fe0c8-4fbe-44e7-abf3-8a73022151f2","name":"followsCount","type":"number","value":"={{ $json.followsCount }}"},{"id":"dac8d9cc-5fa8-47d8-859d-d9f164ec20bd","name":"biography","type":"string","value":"={{ $json.biography }}"},{"id":"4c775459-f8f5-43d1-8b1a-aa122413cd12","name":"profilePicUrl","type":"string","value":"={{ $json.profilePicUrl }}"}]}},"typeVersion":3.4},{"id":"9c4f528b-c5c9-4f0b-92c4-1f9d75532fc4","name":"Append Profile to Google Sheet","type":"n8n-nodes-base.googleSheets","position":[880,0],"parameters":{"columns":{"value":{"Username":"={{ $json.username }}","Biography":"={{ $json.biography }}","Full Name":"={{ $json.fullName }}","Followers Count":"={{ $json.followersCount }}","Following Count":"={{ $json.followsCount }}","Profile Pic URL":"={{ $json.profilePicUrl }}"},"schema":[{"id":"Username","type":"string","display":true,"required":false,"displayName":"Username","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Full Name","type":"string","display":true,"required":false,"displayName":"Full Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Followers Count","type":"string","display":true,"required":false,"displayName":"Followers Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Following Count","type":"string","display":true,"required":false,"displayName":"Following Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Biography","type":"string","display":true,"required":false,"displayName":"Biography","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Profile Pic URL","type":"string","display":true,"required":false,"displayName":"Profile Pic URL","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit?usp=drivesdk","cachedResultName":"Instagram Profile Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"K5yYfUnKFTqaRn6A","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"1980e973-f240-4b55-a4b8-4faa36f78c42","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-40,-1460],"parameters":{"color":3,"width":500,"height":1660,"content":"### 🔹 **1. `Trigger: On Form Submission`**\n\n* **Node Type:** Manual Trigger (or Webhook if embedded in a real form)\n* **Purpose:** Starts the workflow when a user submits a form with an Instagram username\n* **Expected Input:**\n\n  ```json\n  {\n    \"username\": \"influencer_1\"\n  }\n  ```\n\n---\n\n### 🔹 **2. `Scrape Instagram Profile via Apify`**\n\n* **Node Type:** HTTP Request\n\n* **Method:** `POST`\n\n* **URL:**\n\n  ```plaintext\n  https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<API_TOKEN>\n  ```\n\n* **Headers:**\n\n  ```json\n  {\n    \"Content-Type\": \"application/json\"\n  }\n  ```\n\n* **Body Parameters:**\n\n  ```json\n  {\n    \"input\": {\n      \"usernames\": [\"={{ $json.username }}\"]\n    }\n  }\n  ```\n\n* **Sample Output from Apify:**\n\n  ```json\n  [\n    {\n      \"username\": \"influencer_1\",\n      \"fullName\": \"Jane Doe\",\n      \"followersCount\": 12500,\n      \"followsCount\": 320,\n      \"biography\": \"Travel | Lifestyle 🌍\",\n      \"profilePicUrl\": \"https://instagram.com/path/to/pic.jpg\",\n      \"isPrivate\": false,\n      \"isVerified\": true,\n      \"externalUrl\": \"https://janedoe.com\"\n    }\n  ]\n  ```\n\n✅ **Result:** The username submitted from the form is scraped in real time using Apify’s Instagram actor, and the result is passed to the next step."},"typeVersion":1},{"id":"9c341b28-0385-4691-904b-8fa8d8e0b213","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[600,-1240],"parameters":{"color":6,"width":500,"height":1440,"content":"## ✨ SECTION 2: 🛠 Format Data + 📊 Append to Google Sheets\n\n### 🔹 **3. `Format Instagram Profile Data`**\n\n* **Node Type:** Set\n* **Purpose:** Clean and organize the Apify response to match your Google Sheets schema\n* **Fields to Set:**\n\n  | Field Name        | Value                      |\n  | ----------------- | -------------------------- |\n  | `Username`        | `{{$json.username}}`       |\n  | `Full Name`       | `{{$json.fullName}}`       |\n  | `Followers`       | `{{$json.followersCount}}` |\n  | `Following`       | `{{$json.followsCount}}`   |\n  | `Bio`             | `{{$json.biography}}`      |\n  | `Profile Pic URL` | `{{$json.profilePicUrl}}`  |\n  | `Website`         | `{{$json.externalUrl}}`    |\n\n✅ **Result:** The data is transformed into a clean format suitable for logging or outreach tracking.\n\n---\n\n### 🔹 **4. `Append Profile to Google Sheet`**\n\n* **Node Type:** Google Sheets (Append Row)\n* **Setup:**\n\n  * **Sheet Name:** `Scraped_Influencer_Data`\n  * **Columns:** Username, Full Name, Followers, Following, Bio, Profile Pic URL, Website\n* **Purpose:** Stores the formatted data into a centralized Google Sheet for future reference or outreach\n\n✅ **Result:** Your influencer data is persistently stored and ready to be used for marketing, analytics, or CRM integration.\n\n---\n\n## ✅ Final Workflow Summary\n\n```plaintext\n[Form Trigger] \n   ⬇️\n[Apify HTTP Request] \n   ⬇️\n[Format Fields]\n   ⬇️\n[Google Sheet Append]\n```"},"typeVersion":1},{"id":"1552dfc6-f98c-45e1-bb18-071fbb69a159","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1800,-1460],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"91ca76cf-d9dd-489c-a9de-357c876d00e2","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1800,-1120],"parameters":{"color":4,"width":1289,"height":2418,"content":"# 🧠 **Workflow Overview: Instagram Profile Scraper using Apify & Google Sheets in n8n**\n\n## 🔍 **Purpose**\n\nThis n8n automation workflow allows you to **scrape Instagram profile data** using the **Apify Instagram Scraper** and **store the results in Google Sheets** for marketing, outreach, or analytics. It's designed to be simple, efficient, and extendable — ideal for influencer marketers, social analysts, or growth teams who want actionable Instagram data without writing code.\n\n---\n\n## 🧩 **Core Workflow Logic**\n\n### 💡 What It Does\n\n1. **Receives an Instagram username** (via form or manual trigger)\n2. **Sends the username to Apify** to scrape public profile data\n3. **Extracts key details** (followers, bio, profile pic, etc.)\n4. **Appends the cleaned data** to a structured Google Sheet\n\n---\n\n## 🏗️ **Workflow Structure & Components**\n\n## 📊 **Data Flow Example**\n\n### 🔸 **Input (Submitted via Form or Manual Trigger):**\n\n```json\n{\n  \"username\": \"influencer_1\"\n}\n```\n\n### 🔹 **Output (Saved to Google Sheets):**\n\n| Username      | Full Name | Followers | Following | Bio    | Profile Pic URL | Website                                                        |                                            |\n| ------------- | --------- | --------- | --------- | ------ | --------------- | -------------------------------------------------------------- | ------------------------------------------ |\n| influencer\\_1 | Jane Doe  | 12,500    | 320       | Travel | Lifestyle 🌍    | [https://instagram.com/pic.jpg](https://instagram.com/pic.jpg) | [https://janedoe.com](https://janedoe.com) |\n\n---\n\n## 🛠️ **Built With**\n\n* [n8n](https://n8n.io/) – Open-source workflow automation\n* [Apify](https://apify.com/) – Instagram Profile Scraper actor\n* Google Sheets (native integration via n8n)\n\n---\n\n## 🔐 **Authentication & API Notes**\n\n* **Apify Token**: Required in the HTTP Request URL\n* **Google Sheets Access**: OAuth2 credentials configured in n8n\n* **Security Tip**: Store secrets as [n8n environment variables](https://docs.n8n.io/hosting/environment-variables/)\n\n---\n\n## 💼 **Real-World Use Cases**\n\n| Use Case                  | Description                                                   |\n| ------------------------- | ------------------------------------------------------------- |\n| 👩‍💼 Influencer Outreach | Automatically collect Instagram metrics for campaign planning |\n| 📊 Competitor Analysis    | Track follower growth and bio updates for competitors         |\n| 📋 CRM Enrichment         | Enrich influencer records with live Instagram data            |\n\n---\n\n## 🚀 **Enhancements & Ideas**\n\n* 🔁 **Loop from Google Sheets:** Read a batch of usernames and scrape in loop\n* 🚫 **Avoid Duplicates:** Add an `IF` node to skip usernames already scraped\n* 📩 **Send Slack/Email Alerts** when new data is added\n* 🧠 **Filter Low Engagement Accounts** (e.g., if followers < 1,000)\n\n---\n\n## 📸 **Visual Workflow Map**\n\n```plaintext\n[Trigger: On Form Submission]\n          ⬇️\n[Scrape Instagram Profile via Apify]\n          ⬇️\n[Format Instagram Profile Data]\n          ⬇️\n[Append Profile to Google Sheet]\n```\n\n---\n\n## 🧾 **Conclusion**\n\nThis workflow is a **powerful no-code solution** to streamline the process of gathering Instagram profile data. It integrates the flexibility of n8n, the scraping power of Apify, and the accessibility of Google Sheets to form a seamless automation — perfect for creators, marketers, and analysts.\n\n"},"typeVersion":1}],"active":false,"pinData":{"Scrape Instagram Profile via Apify":[{"json":{"fullName":"Jane Doe","username":"influencer_1","biography":"Travel | Fashion | Lifestyle 🌍","isPrivate":false,"isVerified":true,"postsCount":340,"externalUrl":"https://janedoe.com","latestPosts":[{"caption":"Exploring the Amalfi coast 🌊","imageUrl":"https://instagram.com/post/abc.jpg","timestamp":1717000000,"likesCount":2300,"commentsCount":180}],"followsCount":320,"profilePicUrl":"https://instagram.com/path/to/profile-pic.jpg","followersCount":12500}}]},"settings":{"executionOrder":"v1"},"versionId":"0073a2a2-78d1-4806-b6f9-216a99a06107","connections":{"Provide Usernames":{"main":[[{"node":"Scrape Instagram Profile via Apify","type":"main","index":0}]]},"Format Instagram Profile Data":{"main":[[{"node":"Append Profile to Google Sheet","type":"main","index":0}]]},"Scrape Instagram Profile via Apify":{"main":[[{"node":"Format Instagram Profile Data","type":"main","index":0}]]}}}


name: Firecrawl AI-Powered Market Intelligence Bot: Automated News Insights Delivery
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-02T08:54:26.735Z
updated_at: 2025-06-02T08:54:26.735Z
url: https://n8n.io/workflows/4588
scraped_at: 2025-06-19 22:48:47
description:
  Workflow Overview
  This cutting-edge n8n automation is a sophisticated market research and intelligence gathering tool designed to transform web content discovery into actionable insights. By intelligently combining web crawling, AI-powered filtering, and smart summarization, this workflow:

  Discovers Relevant Content: 
     Automatically crawls target websites
     Identifies trending topics
     Extracts comprehensive article details

  Intelligent Content Filtering:
     Applies custom keyword matching
     Filters for most relevant articles
     Ensures high-quality information capture

  AI-Powered Summarization:
     Generates concise, meaningful summaries
     Extracts key insights
     Provides quick, digestible information

  Seamless Delivery:
     Sends summaries directly to Slack
     Enables instant team communication
     Facilitates rapid information sharing

  Key Benefits
  🤖 Full Automation: Continuous market intelligence
  💡 Smart Filtering: Precision content discovery
  📊 AI-Powered Insights: Intelligent summarization
  🚀 Instant Delivery: Real-time team updates

  Workflow Architecture

  🔹 Stage 1: Content Discovery
  Scheduled Trigger**: Daily market research
  FireCrawl Integration**: Web content crawling
  Comprehensive Site Scanning**:
    Extracts article metadata
    Captures full article content
    Identifies key information sources

  🔹 Stage 2: Intelligent Filtering
  Keyword-Based Matching**
  Relevance Assessment**
  Custom Domain Optimization**:
    AI and technology focus
    Startup and innovation tracking

  🔹 Stage 3: AI Summarization
  OpenAI GPT Integration**
  Contextual Understanding**
  Concise Insight Generation**:
    3-point summary format
    Captures essential information

  🔹 Stage 4: Team Notification
  Slack Integration**
  Instant Information Sharing**
  Formatted Insight Delivery**

  Potential Use Cases
  Market Research Teams**: Trend tracking
  Innovation Departments**: Technology monitoring
  Startup Ecosystems**: Competitive intelligence
  Product Management**: Industry insights
  Strategic Planning**: Rapid information gathering

  Setup Requirements
  FireCrawl API
     Web crawling credentials
     Configured crawling parameters

  OpenAI API
     GPT model access
     Summarization configuration
     API key management

  Slack Workspace
     Channel for insights delivery
     Appropriate app permissions
     Webhook configuration

  n8n Installation
     Cloud or self-hosted instance
     Workflow configuration
     API credential management

  Future Enhancement Suggestions
  🤖 Multi-source crawling
  📊 Advanced sentiment analysis
  🔔 Customizable alert mechanisms
  🌐 Expanded topic tracking
  🧠 Machine learning refinement

  Technical Considerations
  Implement robust error handling
  Use exponential backoff for API calls
  Maintain flexible crawling strategies
  Ensure compliance with website terms of service

  Ethical Guidelines
  Respect content creator rights
  Use data for legitimate research
  Maintain transparent information gathering
  Provide proper attribution

  Workflow Visualization

  [Daily Trigger]
      ⬇️
  [Web Crawling]
      ⬇️
  [Content Filtering]
      ⬇️
  [AI Summarization]
      ⬇️
  [Slack Delivery]

  Connect With Me

  Ready to revolutionize your market research?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your information gathering with intelligent, automated workflows!


  #AIResearch #MarketIntelligence #AutomatedInsights #TechTrends #WebCrawling #AIMarketing #InnovationTracking #BusinessIntelligence #DataAutomation #TechNews

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"iTYjhgQEFE4ap1c8","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"FireCrawl Summary Bot","tags":[],"nodes":[{"id":"471044c1-cafd-4810-973d-b40c74ef6999","name":"Daily Market Research Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-160,0],"parameters":{"rule":{"interval":[{"triggerAtHour":8}]}},"typeVersion":1.2},{"id":"8f6e97b6-6910-4c6b-8c9a-29a0cf95ac09","name":"Crawl TechCrunch (FireCrawl)","type":"n8n-nodes-base.httpRequest","position":[140,0],"parameters":{"url":"https://api.firecrawl.dev/v1/crawl","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"url","value":"https://techcrunch.com"},{"name":"crawl_type","value":"scrape"},{"name":"extract_article","value":"true"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_FIRECRAWL_API_KEY"}]}},"typeVersion":4.2},{"id":"7d446441-d882-4816-805e-2d52cd8aea87","name":"Filter Relevant Articles","type":"n8n-nodes-base.code","position":[360,0],"parameters":{"jsCode":"const keywords = ['AI', 'machine learning', 'startup', 'generative'];\nconst results = [];\n\nfor (const item of items) {\n  const title = item.json.article?.title?.toLowerCase() || '';\n  const content = item.json.article?.content?.toLowerCase() || '';\n\n  const isRelevant = keywords.some(keyword =>\n    title.includes(keyword.toLowerCase()) ||\n    content.includes(keyword.toLowerCase())\n  );\n\n  if (isRelevant) {\n    results.push(item); // keep only relevant articles\n  }\n}\n\nreturn results;\n"},"typeVersion":2},{"id":"a326e8fd-bfc8-4380-9c66-20481aaa8a6c","name":"Summarizer Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[700,0],"parameters":{"text":"=Summarize the following article in 3 bullet points:\nTitle: {{ $json.article.title }}\ndescription: {{ $json.meta.description }}\nContent: {{ $json.article.content }}","options":{},"promptType":"define"},"typeVersion":1.9},{"id":"d8576228-6261-4654-84de-0864e398c22d","name":"OpenAI Summarizer","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[640,240],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"wYwTjEv45IzlAOAu","name":"OpenAi account 2"}},"typeVersion":1.2},{"id":"f5965b4a-4ab1-4e5f-868c-2dc11c59fc28","name":"Send Summary to Slack","type":"n8n-nodes-base.slack","position":[1060,0],"webhookId":"c2e00b18-42bd-49b7-bc4c-05d60633a7c8","parameters":{"text":"=🔍 AI Research Summary: \nTitle: {{ $('Filter Relevant Articles').item.json.article.title }}\nLink: {{ $('Filter Relevant Articles').item.json.url }}\nSummary: {{ $json.output }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08TTV0CC3E","cachedResultName":"all-nathing"},"otherOptions":{}},"credentials":{"slackApi":{"id":"L2vpqY0w5ba50NlR","name":"Slack account 2"}},"typeVersion":2.3},{"id":"295fae17-e75e-47db-a321-0379899f44cc","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[80,-580],"parameters":{"color":3,"width":440,"height":800,"content":"🌐💻 2. Crawling & Filtering\nNodes:\n🌐 Crawl TechCrunch (FireCrawl) (HTTP Request)\n\n🧠 Filter Relevant Articles (Code)\n\n🔍 What these nodes do:\n🌐 Crawl TechCrunch (FireCrawl)\nUses a POST request to FireCrawl’s API\n\nInputs:\n\nurl: Target site (e.g., https://techcrunch.com)\n\ncrawl_type: \"scrape\"\n\nextract_article: true\n\nRetrieves:\n\ntitle, content, author, published_at\n\n🧠 Filter Relevant Articles\nUses a Code node to check if the article is relevant\n\nKeywords like \"AI\", \"machine learning\", \"startup\" are matched\n\nFilters only the articles that matter to your domain"},"typeVersion":1},{"id":"5fe2fbcc-8489-42cf-a578-48a46f18977d","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[580,-540],"parameters":{"color":5,"width":640,"height":920,"content":"🤖💬 3. Summarization & Delivery\nNodes:\n🧠 Summarize Article with AI (AI Agent)\n\n🔗 OpenAI Chat (Summarizer) (OpenAI Chat Model)\n\n💬 Send Summary to Slack (Slack)\n\n📌 What happens here:\n🤖 Summarize Article with AI\nPasses the article to a GPT-4 or GPT-3.5 agent\n\nUses a prompt like:\n\n“Summarize the following article in 3 bullet points…”\n\n💡 OpenAI Chat (Summarizer)\nExecutes the actual summarization\n\nOutputs a short, clean summary ideal for fast reading\n\n💬 Send Summary to Slack\nPosts the summary to a specific Slack channel (e.g., #market-research)"},"typeVersion":1},{"id":"97ecbbb2-e763-47f0-82b8-2fede05b486f","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-2100,-560],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"d28d5f04-db81-4833-869f-158b4586a337","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-2100,-220],"parameters":{"color":4,"width":1289,"height":2758,"content":"Absolutely! Here's your **Market Research Automation Workflow** beautifully divided into logical sections, with clear explanations and fitting icons to help you grasp each part at a glance.\n\n---\n\n# 🚀 **n8n Market Research Automation Workflow**\n\nAutomate the process of **crawling news sites**, **filtering for relevant content**, **summarizing it with AI**, and **posting it to Slack** — all in a seamless flow.\n\n---\n\n## ⏰ 1. **Trigger & Scheduling**\n\n**Node:** `🕒 Daily Market Research Trigger`\n\n> Starts the workflow on a recurring schedule.\n\n🔧 **What it does:**\n\n* Runs every morning (or your defined time)\n* Ensures your team receives fresh updates daily\n\n📅 **Example Cron Setting:**\n\n* Every day at 8:00 AM\n\n---\n\n## 🌐💻 2. **Crawling & Filtering**\n\n### **Nodes:**\n\n* `🌐 Crawl TechCrunch (FireCrawl)` *(HTTP Request)*\n* `🧠 Filter Relevant Articles` *(Code)*\n\n### 🔍 What these nodes do:\n\n#### 🌐 **Crawl TechCrunch (FireCrawl)**\n\n* Uses a **POST** request to FireCrawl’s API\n* Inputs:\n\n  * `url`: Target site (e.g., `https://techcrunch.com`)\n  * `crawl_type`: `\"scrape\"`\n  * `extract_article`: `true`\n* Retrieves:\n\n  * `title`, `content`, `author`, `published_at`\n\n#### 🧠 **Filter Relevant Articles**\n\n* Uses a `Code` node to check if the article is relevant\n* Keywords like `\"AI\"`, `\"machine learning\"`, `\"startup\"` are matched\n* Filters only the articles that **matter to your domain**\n\n📄 **Sample Code:**\n\n```javascript\nconst keywords = ['AI', 'machine learning', 'startup', 'generative'];\nconst results = [];\n\nfor (const item of items) {\n  const title = item.json.article?.title?.toLowerCase() || '';\n  const content = item.json.article?.content?.toLowerCase() || '';\n\n  const isRelevant = keywords.some(keyword =>\n    title.includes(keyword.toLowerCase()) ||\n    content.includes(keyword.toLowerCase())\n  );\n\n  if (isRelevant) {\n    results.push(item); // keep only relevant articles\n  }\n}\n\nreturn results;\n```\n\n---\n\n## 🤖💬 3. **Summarization & Delivery**\n\n### **Nodes:**\n\n* `🧠 Summarize Article with AI` *(AI Agent)*\n* `🔗 OpenAI Chat (Summarizer)` *(OpenAI Chat Model)*\n* `💬 Send Summary to Slack` *(Slack)*\n\n### 📌 What happens here:\n\n#### 🤖 **Summarize Article with AI**\n\n* Passes the article to a GPT-4 or GPT-3.5 agent\n* Uses a prompt like:\n\n  > “Summarize the following article in 3 bullet points…”\n\n#### 💡 **OpenAI Chat (Summarizer)**\n\n* Executes the actual summarization\n* Outputs a short, clean summary ideal for fast reading\n\n#### 💬 **Send Summary to Slack**\n\n* Posts the summary to a specific Slack channel (e.g., `#market-research`)\n* Message format example:\n\n  ```\n  🔍 *Market Research Summary*\n  *Title:* OpenAI launches GPT-5\n  *Link:* https://techcrunch.com/article\n  *Summary:*\n  - GPT-5 improves reasoning\n  - Enhanced safety mechanisms\n  - Better multilingual performance\n  ```\n\n"},"typeVersion":1}],"active":false,"pinData":{"Crawl TechCrunch (FireCrawl)":[{"json":{"url":"https://techcrunch.com","meta":{"description":"The latest technology news and information on startups."},"title":"TechCrunch - Startup and Technology News","status":"success","article":{"title":"OpenAI launches GPT-5","author":"Jane Doe","content":"OpenAI has officially released GPT-5, a major upgrade with enhanced reasoning and safety improvements...","published_at":"2025-05-28T13:00:00Z"},"content":"<html>...</html>"}}]},"settings":{"executionOrder":"v1"},"versionId":"8d64bd18-6a8f-4a2b-a952-5d8417122a2e","connections":{"Summarizer Agent":{"main":[[{"node":"Send Summary to Slack","type":"main","index":0}]]},"OpenAI Summarizer":{"ai_languageModel":[[{"node":"Summarizer Agent","type":"ai_languageModel","index":0}]]},"Filter Relevant Articles":{"main":[[{"node":"Summarizer Agent","type":"main","index":0}]]},"Crawl TechCrunch (FireCrawl)":{"main":[[{"node":"Filter Relevant Articles","type":"main","index":0}]]},"Daily Market Research Trigger":{"main":[[{"node":"Crawl TechCrunch (FireCrawl)","type":"main","index":0}]]}}}


name: AI-Powered Lead Enrichment with Bright Data MCP and Google Sheets
author_name: Cyril Nicko Gaspar
author_username: cngaspar
categories: []
created_at: 2025-06-02T09:57:14.427Z
updated_at: 2025-06-02T09:57:14.427Z
url: https://n8n.io/workflows/4589
scraped_at: 2025-06-19 22:48:53
description:
  📌 HubSpot Lead Enrichment with Bright Data MCP



  This template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead context—powered by AI and configurable in N8N.

  ❓ What Problem Does This Solve?

  Manual lead enrichment is slow, inconsistent, and drains valuable time. This solution automates the process using a no-code workflow that connects HubSpot, Bright Data MCP, and an AI agent—without requiring scripts or technical skills. Perfect for marketing, sales, and RevOps teams.

  🧰 Prerequisites

  To use this template, you’ll need:

  A self-hosted or cloud instance of N8N
  A Bright Data MCP API token
  A valid OpenAI API key (or compatible AI model)
  A HubSpot account
  Either a Private App token or OAuth credentials for HubSpot
  Basic familiarity with N8N workflows

  ⚙️ Setup Instructions

  1. Set Up Authentication in HubSpot

  🔐 Option 1: Use a Private App Token (Simple Setup)
  Log in to your HubSpot account.
  Navigate to Settings → Integrations → Private Apps.
  Create a new Private App with the following scopes:
     crm.objects.contacts.read
     crm.objects.contacts.write
     crm.schemas.contacts.read
     crm.objects.companies.read (optional)
  Copy the Access Token.
  In N8N, create a credential for HubSpot App Token and paste the app token in the field.
  Go back to Hubspot Private App settings to setup a webhook.
     Copy the url in your workflow's Webhook node and paste it here.

  🔁 Option 2: Use OAuth (Advanced + Secure)
  In HubSpot, go to Settings → Integrations → Apps → Create App.
  Set your Redirect URL to match your N8N OAuth2 redirect path.
  Choose scopes like:
     crm.objects.companies.read
     crm.objects.contacts.read
     crm.objects.deals.read
     crm.schemas.companies.read
     crm.schemas.contacts.read
     crm.schemas.deals.read
     crm.objects.contacts.write (conditionally required)
  Note the Client ID and Client Secret.
  Copy the App ID and the developer API key
  In N8N, create a credential for HubSpot Developer API and paste those info from previous step.
  Attach these credentials to the HubSpot node in N8N.

  2. Setup and obtain API token and other necessary information from Bright Data

     In your Bright Data account, obtain the following information:
     API token
     Web Unlocker zone name (optional)
     Browser API username and password string separated by colon (optional)
  3. Host SSE server from STDIO command
     The methods below will allow you to receive SSE (Server-Sent Events) from Bright Data MCP via a local Supergateway or Smithery

     **

     Method 1: Run Supergateway in a separate web service (Recommended)

     This method will work for both cloud version and self-hosted N8N.

     Signup to any cloud services of your choice (DigitalOcean, Heroku, Hetzner, Render, etc.).

  For NPM based installation:

     Create a new web service.
     Choose Node.js as runtime environment and setup a custom server without repository.
     In your server’s settings to define environment variables or .env file, add:
  `API_TOKEN=your_brightdata_api_token
  WEB_UNLOCKER_ZONE=optional_zone_name
  BROWSER_AUTH=optional_browser_auth`
     Paste the following text as a start command: npx -y supergateway --stdio "npx -y @brightdata/mcp" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message
     Deploy it and copy the web server URL, then append /sse into it.
     Your SSE server should now be accessible at: https://your_server_url/sse

  For Docker based installation:
     Create a new web service.
     Choose Docker as the runtime environment.
     Set up your Docker environment by pulling the necessary images or creating a custom Dockerfile.
     In your server’s settings to define environment variables or .env file, add:
  `API_TOKEN=your_brightdata_api_token
  WEB_UNLOCKER_ZONE=optional_zone_name
  BROWSER_ZONE=optional_browser_zone_name`
      Use the following Docker command to run Supergateway: `docker run -it --rm -p 8000:8000 supercorp/supergateway \
      --stdio "npx -y @brightdata/mcp /" \
      --port 8000`
     Deploy it and copy the web server URL, then append /sse into it.
     Your SSE server should now be accessible at: https://your_server_url/sse

     For more installation guides, please refer to https://github.com/supercorp-ai/supergateway.git.
     **

     Method 2: Run Supergateway in the same web service as the N8N instance

     This method will only work for self-hosted N8N.

  a. Set Required Environment Variables

     In your server's settings to define environment variables or .env file, add:

        API_TOKEN=your_brightdata_api_token
     WEB_UNLOCKER_ZONE=optional_zone_name
     BROWSER_ZONE=optional_browser_zone_name
  b. Run Supergateway in Background

        npx -y supergateway --stdio "npx -y @brightdata/mcp" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message
        Use the command above to execute it through the cloud shell or set it as a pre-deploy command.


     Your SSE server should now be accessible at:  
     http://localhost:8000/sse

   
     For more installation guides, please refer to https://github.com/supercorp-ai/supergateway.git.

     *

     *Method 3: Configure via Smithery.ai* (Easiest)
  If you don't want additional setup and want to test it right away, follow these instructions:

     Visit https://smithery.ai/server/@luminati-io/brightdata-mcp/tools to:
     Signup (if you are new to Smithery)
     Create an API key
     Define environment variables via a profile
     Retrieve your SSE server HTTP URL

  4. Connect Google Sheets to N8N

  Ensure your Google Sheet:
    Contains columns like row_id, first_name, last_name, email, and status.
    Is shared with your N8N service account (or connected via OAuth)

  In N8N:
    Add a Google Sheets Trigger node
    Set it to watch for new rows in your lead sheet

  5. Import and Configure the N8N Workflow

  Import the provided JSON workflow into N8N
  Update nodes with your credentials:
    Hubspot: Add your API key or connect it via OAuth.
    Google Sheets Trigger: Link to your actual sheet
    OpenAI Node: Add your API key
    Bright Data Tool Execution: Add Bright Data token and SSE URL

  🔄 How It Works
  New contact in Hubspot or a new row is added to the Google Sheet
  N8N triggers the workflow
  AI agent classifies the task (e.g., “Find LinkedIn”, “Get company info”)
  The relevant MCP tool is called
  Results are appended back to the sheet or routed to another destination
  Rerun the specific record by specifying status "needs more enrichment", or leaving it blank. 

  🧩 Use Cases

  B2B Lead Enrichment** – Add missing fields (title, domain, social profiles)
  Email Intelligence** – Validate and enrich based on email
  Market Research** – Pull company or contact data on demand
  CRM Auto-fill** – Push enriched leads to tools like HubSpot or Salesforce

  🛠️ Customization

  Prompt Tuning** – Adjust how the AI interprets input data
  Column Mapping** – Customize which fields to pull from the sheet
  Tool Logic** – Add retries, fallback tools, or confidence-based routing
  Destination Output** – Integrate with CRMs, Slack, or webhook endpoints

  ✅ Summary

  This template turns a Google Sheet into an AI-powered lead enrichment engine. By combining Bright Data’s tools with a natural language AI agent, your team can automate repetitive tasks and scale lead ops—without writing code.

  Just add a row, and let the workflow do the rest.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.hubspot","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.mcpClientTool"]

workflow_json:
  {"meta":{"instanceId":"4e6be3a68285934388a854ac0ffdc5e5500688d5cdb88d0ec2d734e85f097355","templateCredsSetupCompleted":true},"nodes":[{"id":"80ffc9b5-2a35-46e3-a641-45ae6f9556bd","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[-5820,2140],"parameters":{"options":{"columnsToWatch":["status"]},"pollTimes":{"item":[{"mode":"everyMinute"}]},"sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"VNqOvRgnzQaAingt","name":"Google Sheets Trigger account"}},"typeVersion":1},{"id":"06d817c6-f625-495e-bfd3-d019a98f0ebb","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-3260,2280],"parameters":{"schemaType":"manual","inputSchema":"{\n\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\"title\": \"UserData\",\n\"type\": \"object\",\n\"properties\": {\n  \"first_name\": {\n      \"type\": \"string\"\n  },\n  \"last_name\": {\n      \"type\": \"string\"\n  },\n  \"middle_name\": {\n      \"type\": \"string\"\n  },\n  \"gender\": {\n      \"type\": \"string\"\n  },\n  \"address\": {\n      \"type\": \"string\"\n  },\n  \"city\": {\n      \"type\": \"string\"\n  },\n  \"state\": {\n      \"type\": \"string\"\n  },\n  \"zip\": {\n      \"type\": \"integer\"\n  },\n  \"country\": {\n      \"type\": \"string\"\n  },\n  \"email\": {\n      \"type\": \"string\",\n      \"format\": \"email\"\n  },\n  \"phone\": {\n      \"type\": \"string\"\n  },\n  \"date_of_birth\": {\n      \"type\": \"string\"\n  },\n  \"field_of_study\": {\n      \"type\": \"string\"\n  },\n  \"graduation_date\": {\n      \"type\": \"string\"\n  },\n  \"company\": {\n      \"type\": \"string\"\n  },\n  \"job_title\": {\n      \"type\": \"string\"\n  },\n  \"department\": {\n      \"type\": \"string\"\n  },\n  \"facebook_handle\": {\n      \"type\": \"string\"\n  },\n  \"linkedin_url\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n  },\n  \"x_handle\": {\n      \"type\": \"string\"\n  },\n  \"instagram_handle\": {\n      \"type\": \"string\"\n  },\n  \"company_address\": {\n      \"type\": \"string\"\n  },\n  \"company_city\": {\n      \"type\": \"string\"\n  },\n  \"company_state\": {\n      \"type\": \"string\"\n  },\n  \"company_zip\": {\n      \"type\": \"integer\"\n  },\n  \"company_country\": {\n      \"type\": \"string\"\n  },\n  \"company_phone\": {\n      \"type\": \"string\"\n  },\n  \"company_email\": {\n      \"type\": \"string\",\n      \"format\": \"email\"\n  },\n  \"company_industry\": {\n      \"type\": \"string\"\n  },\n  \"company_size\": {\n      \"type\": \"integer\"\n  },\n  \"company_founded_year\": {\n      \"type\": \"integer\"\n  },\n  \"degree\": {\n      \"type\": \"string\"\n  },\n \n  \"job_function\": {\n      \"type\": \"string\"\n  },\n  \"marital_status\": {\n      \"type\": \"string\"\n  },\n  \"salutation\": {\n      \"type\": \"string\"\n  },\n  \"school\": {\n      \"type\": \"string\"\n  },\n  \"scrape_error\": {\n      \"type\": \"string\"\n  }\n},\n\"required\": [\n  \"first_name\",\n  \"last_name\",\n  \"email\"\n],\n\"additionalProperties\": false\n}"},"typeVersion":1.2},{"id":"18ef61dc-5134-4c8b-817b-da162c093b06","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-5880,1920],"parameters":{"color":4,"width":460,"height":540,"content":"## Watch for the updated record in Google Sheets based on the column 'status'\nWrite 'needs more enrichment' in the status column if you want to retry the enrichment\n"},"typeVersion":1},{"id":"e3b79eff-1504-4da3-85ef-4423f5ee71cd","name":"Auto-fixing Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserAutofixing","position":[-3480,2080],"parameters":{"options":{"prompt":"Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease only return the first_name, last_name, email, and scrape_error (put the error details in this field)"}},"typeVersion":1},{"id":"1023e561-8f92-4fe1-8d21-1b6fcd2bbb6e","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-3500,2200],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"K4cmCYcro5viwUfR","name":"Thijs 2"}},"typeVersion":1.2},{"id":"ac4f57e8-f7f0-47b8-b039-9a93f198083a","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-6620,1440],"parameters":{"color":4,"width":520,"height":540,"content":"## Manually run the records that is needed enrichment\n"},"typeVersion":1},{"id":"c46b338f-ccb6-4ce4-a1a3-623a615d19b2","name":"Process each leads one by one","type":"n8n-nodes-base.splitInBatches","position":[-4620,1260],"parameters":{"options":{}},"typeVersion":3},{"id":"e6f86e5f-f49f-4781-90d2-78747efd5053","name":"Filter the leads that needs enrichment","type":"n8n-nodes-base.filter","position":[-5600,2140],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"1ec242aa-557e-434a-8bb5-d043b5645e88","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.status?.toString() }}","rightValue":""},{"id":"400fe682-5882-441f-a506-ea8f9bdb9df8","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"needs more enrichment"}]}},"typeVersion":2.2},{"id":"46203489-bdd1-48ea-a020-8f5e1734cbdb","name":"Remove unneccessary fields for the prompt","type":"n8n-nodes-base.set","position":[-4100,1260],"parameters":{"include":"except","options":{},"excludeFields":"row_number, status, row_id","includeOtherFields":true},"typeVersion":3.4},{"id":"838ba8a6-3f41-4973-b5aa-805b9abc6baa","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-800,720],"parameters":{"color":4,"width":980,"height":1620,"content":"# Update the record in Google Sheet"},"typeVersion":1},{"id":"1315c393-9cb2-4345-ba01-34faa5673e72","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-4260,1040],"parameters":{"color":6,"width":840,"height":740,"content":"# AI Agent with Bright Data MCP attached\nPlease play around which model suited best"},"typeVersion":1},{"id":"f77f311d-20c4-4e5d-a679-f905a5e1680a","name":"Bright Data MCP Client","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[-3760,1540],"parameters":{"include":"selected","sseEndpoint":"http://localhost:8000/sse","includeTools":["search_engine","web_data_linkedin_person_profile","web_data_linkedin_company_profile","web_data_linkedin_people_search","web_data_crunchbase_company","web_data_tiktok_profiles","web_data_instagram_profiles"]},"typeVersion":1},{"id":"f5d6bf43-d9c0-4272-9d5f-cf1371f0e27a","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-4000,1540],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"3wONK02jjm23nMHf","name":"OpenAi account"}},"typeVersion":1.2},{"id":"370ea5eb-0abc-418a-836f-f9e28d3f11be","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-3360,1040],"parameters":{"width":1160,"height":760,"content":"# Formating the results and comparing it to the original"},"typeVersion":1},{"id":"cc8043c0-6306-4808-9caf-0776b9a29553","name":"If","type":"n8n-nodes-base.if","position":[-2980,1440],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"54ed6517-f4b9-48ff-baf1-37c7551c85ed","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.first_name }}","rightValue":"={{ $('Process each leads one by one').item.json.first_name }}"},{"id":"465b70a3-9830-4521-8248-a1236795b296","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.last_name }}","rightValue":"={{ $('Process each leads one by one').item.json.last_name }}"},{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"7cfe0f1d-d2ef-4630-b4d4-5ef155852f4c","name":"Switch","type":"n8n-nodes-base.switch","position":[-3240,1280],"parameters":{"rules":{"values":[{"outputKey":"Email only","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"26b1eb37-80d1-4966-a223-fe7a6d032083","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email !== \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() === \"\"  }}","rightValue":""}]},"renameOutput":true},{"outputKey":"Name only","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"7a4f68df-3d5b-4476-b186-8a5fb847d78e","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email === \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() !== \"\"  }}","rightValue":""}]},"renameOutput":true},{"outputKey":"Both email and name exists","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"13d089ae-1fd1-4a15-a35c-edae907141f5","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email !== \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() !== \"\"  }}","rightValue":""}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"f4357d32-0d4f-4131-8367-63ac527bb9e2","name":"If2","type":"n8n-nodes-base.if","position":[-2980,1120],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"0efb7c41-869f-4803-b725-7133fe74dfd6","name":"Merge","type":"n8n-nodes-base.merge","position":[-2620,1620],"parameters":{"mode":"chooseBranch","useDataOfInput":2},"typeVersion":3.1},{"id":"5478a933-3704-4282-a043-b61e7c84c86e","name":"If1","type":"n8n-nodes-base.if","position":[-2980,1280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"54ed6517-f4b9-48ff-baf1-37c7551c85ed","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.first_name }}","rightValue":"={{ $('Process each leads one by one').item.json.first_name }}"},{"id":"465b70a3-9830-4521-8248-a1236795b296","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.last_name }}","rightValue":"={{ $('Process each leads one by one').item.json.last_name }}"},{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"b96100ab-1edf-46ce-8c1d-c16c7617b327","name":"Not matched route","type":"n8n-nodes-base.noOp","position":[-2400,1200],"parameters":{},"typeVersion":1},{"id":"896fdbd8-e6b2-4e5e-8cbb-8c347714f541","name":"Space requests by 5 seconds","type":"n8n-nodes-base.wait","position":[940,1440],"webhookId":"ca47f66b-d536-4751-ab54-7d1e049ca14a","parameters":{},"typeVersion":1.1},{"id":"5e4b65b7-30b6-4980-a851-43b8112d6347","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-3740,1960],"parameters":{"color":6,"width":840,"height":560,"content":"## Format the output"},"typeVersion":1},{"id":"146b61b9-cd18-4e72-b07f-4f848d909a66","name":"Scraper AI Agent","type":"@n8n/n8n-nodes-langchain.agent","notes":"\nSteps:\n1. Scrape the url and find for the input fields common in the form such as text, radio buttons, checkboxes.  etc. Identify selectors for these input fields. Find the submit button too or the button to proceed to the next section or step.","position":[-3880,1280],"parameters":{"text":"=Here's the lead's data:\n\n{{ $json.toJsonString() }}","options":{"maxIterations":30,"systemMessage":"=Prompt: Person and Company Enrichment Task\n\nObjective:\nEnrich the lead’s information as completely and accurately as possible. Avoid fabricating data and maintain strict adherence to the correct tool schema for each tool used in the MCP client.\n\n⸻\n\n1. Person Enrichment Instructions:\n- Start with a Google Search:\nPrioritize locating the individual’s LinkedIn profile URL using the available information.\n- Query Guidelines:\n- If the email address is available, use it in your search query.\n- If not, use the person’s first name and last name.\n- Always append keywords like “linkedin”, “facebook”, “instagram”, or other relevant social media platforms to refine the search.\n- LinkedIn-Based Enrichment:\nOnce the LinkedIn URL is found, use it to gather available details from their profile.\n\n⸻\n\n2. Company Enrichment Instructions:\n- Email Domain Extraction:\nIf the person’s email is not from a generic provider (e.g., gmail.com, outlook.com, hotmail.com, icloud.com), extract the domain and use it in your search.\n- Query Composition:\n- Combine the extracted domain with any existing value in the “company” field of the lead’s details.\n- Do not rely on or reuse company data obtained from other tool outputs.\n- Focus on sourcing reliable company information from LinkedIn and Crunchbase.\n\n⸻\n\nOutput Format:\n\nReturn the enriched data in valid JSON format using the original key structure. Exclude any fields that remain empty. Example output:\n\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"address\": \"123 Maple Street, Apt 4\",\n  \"instagram_handle\": \"johndoe38\"\n}\n\n","returnIntermediateSteps":true},"promptType":"define","hasOutputParser":true},"retryOnFail":true,"typeVersion":1.9},{"id":"bfbf1be5-96a7-470e-a3d2-006dbf948c4d","name":"Merge1","type":"n8n-nodes-base.merge","position":[-1560,1460],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.1},{"id":"fa2096a7-56d7-45aa-b10f-4ae7456339b4","name":"Judge the accuracy of scraped data","type":"@n8n/n8n-nodes-langchain.openAi","position":[-2020,1280],"parameters":{"modelId":{"__rl":true,"mode":"id","value":"=gpt-4o-mini"},"options":{},"messages":{"values":[{"role":"system","content":"Task:\nEvaluate the accuracy of the scraped data compared to the original source data.\n\nInstructions:\n- Assess how closely the scraped output matches the original data in terms of content, structure, and completeness.\n- Provide a confidence score based on the overall accuracy.\n- Explain your reasoning in concise, clear remarks.\n\nOutput Format (JSON):\n\n{\n  \"confidence\": [decimal between 0 and 1, e.g., 0.98 for 98% accuracy],\n  \"remarks\": \"A brief explanation justifying the confidence score, highlighting any discrepancies or issues found.\"\n}\n"},{"content":"=Original source data:\n{{ $('Remove unneccessary fields for the prompt').item.json.toJsonString() }}\n\nScraped output:\n{{ $json.output.toJsonString() }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"K4cmCYcro5viwUfR","name":"Thijs 2"}},"typeVersion":1.8},{"id":"32f37490-752b-4ee1-b68f-c56f17615bf4","name":"Just to make the connection neat","type":"n8n-nodes-base.noOp","position":[1480,2480],"parameters":{},"typeVersion":1},{"id":"01f944b6-e821-4ca3-ba09-bbc33f562ef4","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-2080,1020],"parameters":{"color":2,"width":1160,"height":740,"content":"# Identify the accuracy of the scraped data\nThis may serve as another layer of accuracy filtering"},"typeVersion":1},{"id":"08a34aec-7419-4cb9-b495-dff406c6f61d","name":"Extract the AI results only","type":"n8n-nodes-base.set","position":[-1820,1280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"298abc40-159e-4aa3-ab4d-039829c2d1a0","name":"confidence","type":"number","value":"={{ $json.message.content.confidence }}"},{"id":"c2662984-8fa9-46eb-bc6d-fb7be5fc4451","name":"remarks","type":"string","value":"={{ $json.message.content.remarks }}"}]}},"typeVersion":3.4},{"id":"716a21d4-230d-4747-a031-ca8aac1bc3af","name":"Check the confidence score","type":"n8n-nodes-base.if","position":[-720,1580],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"f153193c-b517-49fc-8ae4-1bea6bd0ff91","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.confidence }}","rightValue":0.85}]}},"typeVersion":2.2},{"id":"a4eb12f7-26b9-4f8f-a51a-ff54c769c06b","name":"Prepare the scraped output for Google Sheets","type":"n8n-nodes-base.set","position":[-1340,1560],"parameters":{"mode":"raw","options":{},"jsonOutput":"={{ $json.output }}"},"typeVersion":3.4},{"id":"06bf86dc-c92f-4540-8963-219015d745fb","name":"Add confidence score to Google Sheet","type":"n8n-nodes-base.set","position":[-1140,1580],"parameters":{"options":{},"assignments":{"assignments":[{"id":"3d437c0b-ff3e-4c21-95e0-5557866806c5","name":"remarks","type":"string","value":"={{ $('Merge1').item.json.remarks }}"},{"id":"5ef03fde-ee61-49a3-8c73-1ab4b66654a6","name":"confidence","type":"number","value":"={{ $('Merge1').item.json.confidence }}"},{"id":"745b0dd7-7ac9-4e97-9192-db95ff2d2706","name":"row_id","type":"string","value":"={{ $('Process each leads one by one').item.json.row_id }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"f6ba009f-47f1-428e-95e6-b3d8ca23208d","name":"Add record if the confidence score is below 85%","type":"n8n-nodes-base.googleSheets","position":[-100,2020],"parameters":{"columns":{"value":{"first_name":"={{ $json.output.first_name }}"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":false,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":false,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":false,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"9a5a4808-a8d1-4b49-82b5-b33bc48b56f5","name":"Override the record if the confidence score is equal or greater than 85%","type":"n8n-nodes-base.googleSheets","position":[-220,1400],"parameters":{"columns":{"value":{"first_name":"={{ $json.output.first_name }}","row_number":"={{ $('Google Sheets').item.json.row_number }}"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":false,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":false,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":false,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"1eb07d73-aa8f-4cba-a760-5d142eea9734","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-400,1260],"parameters":{"color":7,"width":480,"height":360,"content":"## Override the record if the confidence score is equal or greater than 85%"},"typeVersion":1},{"id":"274d8c92-9094-4b26-8d6e-689e38fe9540","name":"Update the status of the record","type":"n8n-nodes-base.googleSheets","position":[-220,1020],"parameters":{"columns":{"value":{"row_id":"={{ $('Process each leads one by one').item.json.row_id }}","status":"no information found"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"removed":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"removed":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"9958acae-7675-48c2-a400-0ee00267745f","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-400,1700],"parameters":{"color":7,"width":480,"height":560,"content":"## Append row if the confidence score is below 85%"},"typeVersion":1},{"id":"ae5d281a-31a3-46a0-b5af-8dcf376d2947","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-400,840],"parameters":{"color":7,"width":480,"height":360,"content":"## Scraped data doesn't match the source. This will only update the status of the record."},"typeVersion":1},{"id":"a5aa4f8f-d7ec-4d28-87a2-c774ba627a95","name":"Update row_id and status","type":"n8n-nodes-base.set","position":[-300,2020],"parameters":{"options":{},"assignments":{"assignments":[{"id":"9edb1a8c-d71c-4b13-aa89-6a329a58fd67","name":"row_id","type":"string","value":"={{ $('Process each leads one by one').item.json.row_id }}-{{ $now.toMillis() }}"},{"id":"e95fdab0-79a5-4546-9b6d-0750fd44932c","name":"status","type":"string","value":"human review needed"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"2eb2c10a-1ab8-408f-9411-13fa356b4664","name":"Update the status of the original record","type":"n8n-nodes-base.googleSheets","position":[-240,1780],"parameters":{"columns":{"value":{"row_id":"={{ $json.row_id }}","status":"human review needed"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"removed":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"removed":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":true,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":true,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"e2cb5ff7-3d0d-4766-bda2-2ea5d1b8cf54","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[-5960,780],"parameters":{"options":{},"fieldToSplitOut":"body"},"typeVersion":1},{"id":"da05a953-9e66-49b5-8c62-5cd48f439772","name":"Google Sheets","type":"n8n-nodes-base.googleSheets","position":[-5420,900],"parameters":{"columns":{"value":{"email":"={{ $json.properties.email.value }}","phone":"={{ $json.properties.phone.value }}","row_id":"={{ $json.vid }}","last_name":"={{ $json.properties.lastname.value }}","first_name":"={{ $json.properties.firstname.value }}"},"schema":[{"id":"row_id","type":"string","display":true,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":false,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":true,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":true,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"48243a45-396f-4610-b97f-808ca39e90a6","name":"HubSpot","type":"n8n-nodes-base.hubspot","position":[-5680,900],"parameters":{"contactId":{"__rl":true,"mode":"id","value":"={{ $json.contactId || $json.objectId }}"},"operation":"get","authentication":"appToken","additionalFields":{}},"credentials":{"hubspotAppToken":{"id":"udy2ya160kahX72n","name":"HubSpot App Token account 2"}},"typeVersion":2.1},{"id":"1088136d-5530-47f2-b08f-3c91c28bd383","name":"Google Sheets1","type":"n8n-nodes-base.googleSheets","position":[-6280,1620],"parameters":{"options":{},"filtersUI":{"values":[{"lookupColumn":"status"},{"lookupValue":"needs more enrichment","lookupColumn":"status"}]},"sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"},"combineFilters":"OR"},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"16a4e5d7-3d4f-4aa4-b802-5bc61c6767b6","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-6520,1620],"parameters":{},"typeVersion":1},{"id":"2cf15cf0-be32-41d8-82f6-78a142e32b4a","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[-6500,540],"parameters":{"color":3,"width":1380,"height":720,"content":"# New Contact trigger in Hubspot and Save it to Google Drive"},"typeVersion":1},{"id":"6a2d33a9-c2f9-412e-a70c-8a64b7da252b","name":"New Contact in Hubpost (OAuth2)","type":"n8n-nodes-base.hubspotTrigger","position":[-6340,1020],"webhookId":"dab75ae0-affc-4616-bad6-2e88d1afabc7","parameters":{"eventsUi":{"eventValues":[{}]},"additionalFields":{}},"credentials":{"hubspotDeveloperApi":{"id":"HjFlmcRCWYRjI6nD","name":"New HS Dev"}},"typeVersion":1},{"id":"fd273f08-9d98-4539-bad1-96a1ea6c0fc5","name":"New Contact in Hubpost (Private App)","type":"n8n-nodes-base.webhook","position":[-6320,680],"webhookId":"40d4eddf-4f9f-471f-a029-4a95f5f045b9","parameters":{"path":"hsleads","options":{},"httpMethod":"POST"},"typeVersion":2},{"id":"d348c77a-7782-45c5-9d6d-d7464ff876c6","name":"No Operation, do nothing","type":"n8n-nodes-base.noOp","position":[300,1560],"parameters":{},"typeVersion":1},{"id":"6a1149d6-186f-49ce-a8b3-3a97b83b10a7","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[440,1840],"parameters":{"color":3,"width":680,"height":500,"content":"# Update the Hubspot contact for the high confidence score"},"typeVersion":1},{"id":"2c3f4e27-a1ee-4a0a-8fb8-180b5de97ae6","name":"Update the Hubspot Contact","type":"n8n-nodes-base.hubspot","position":[880,2080],"parameters":{"email":"={{ $json.email }}","options":{},"authentication":"appToken","additionalFields":{"city":"={{ $json.city }}","degree":"={{ $json.degree }}","gender":"={{ $json.gender }}","school":"={{ $json.school }}","country":"={{ $json.country }}","industry":"={{ $json.company_industry }}","jobTitle":"={{ $json.job_title }}","lastName":"={{ $json.last_name }}","firstName":"={{ $json.first_name }}","postalCode":"={{ $json.zip }}","salutation":"={{ $json.salutation }}","companyName":"={{ $json.company }}","dateOfBirth":"={{ $json.date_of_birth?.toDateTime() }}","jobFunction":"={{ $json.job_function }}","phoneNumber":"={{ $json.phone }}","fieldOfStudy":"={{ $json.field_of_study }}","maritalStatus":"={{ $json.marital_status }}","streetAddress":"={{ $json.address }}","graduationDate":"={{ $json.graduation_date?.toDateTime() }}","twitterUsername":"={{ $json.x_handle }}","customPropertiesUi":{"customPropertiesValues":[{"value":"={{ $json.instagram_handle }}","property":"=instagram_handle"},{"value":"={{ $json.facebook_handle }}","property":"=facebook_handle"},{"value":"={{ $json.linkedin_url }}","property":"=linkedin_url"}]}}},"credentials":{"hubspotAppToken":{"id":"udy2ya160kahX72n","name":"HubSpot App Token account 2"}},"typeVersion":2.1},{"id":"fdadcb0e-f66e-4755-8939-ab28d51301eb","name":"Set Desired Confidence Score","type":"n8n-nodes-base.if","position":[580,2100],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8f546fac-c14d-40f8-9fd0-7c431e1ae7f8","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $json.confidence }}","rightValue":0.89}]}},"typeVersion":2.2}],"pinData":{"New Contact in Hubpost (OAuth2)":[{"appId":7851008,"eventId":1468606353,"portalId":46194715,"sourceId":"userId:60775145","contactId":126603412869,"changeFlag":"CREATED","occurredAt":1748880900273,"changeSource":"CRM_UI","attemptNumber":0,"subscriptionId":3713763,"subscriptionType":"contact.creation"}],"New Contact in Hubpost (Private App)":[{"body":[{"appId":10626375,"eventId":3048592825,"objectId":126603412869,"portalId":23861635,"sourceId":"25200","changeFlag":"CREATED","occurredAt":1746526735728,"changeSource":"INTEGRATION","attemptNumber":0,"subscriptionId":3429387,"subscriptionType":"contact.creation"}],"query":{},"params":{},"headers":{"host":"hostmetric.app.n8n.cloud","accept":"*/*","cf-ray":"93b7bc86b08cd695-IAD","cdn-loop":"cloudflare; loops=1; subreqs=1","cf-ew-via":"15","cf-worker":"n8n.cloud","x-real-ip":"54.174.62.144","cf-visitor":"{\"scheme\":\"https\"}","user-agent":"HubSpot Connect 2.0 (http://dev.hubspot.com/) (namespace: webhooks-nio-http-client) - WebhooksExecutorDaemon-executor","cf-ipcountry":"US","content-type":"application/json","x-is-trusted":"yes","content-length":"264","accept-encoding":"gzip, br","x-forwarded-for":"54.174.62.144, 162.158.79.214","cf-connecting-ip":"54.174.62.144","x-forwarded-host":"hostmetric.app.n8n.cloud","x-forwarded-port":"443","x-forwarded-proto":"https","x-forwarded-server":"traefik-prod-users-gwc-36-bc488dfd9-8q4qs","x-hubspot-signature":"c9e6138e683ed3092c5e223f3046cab7940dca29417666154796d1cffbfe4e58","x-hubspot-signature-v3":"9f5gSQ/tiqplcUzRVIHzK0igKjJYRxqzKraiB7URkIY=","x-hubspot-timeout-millis":"10000","x-hubspot-request-timestamp":"1746526736409","x-hubspot-signature-version":"v1"},"webhookUrl":"https://hostmetric.app.n8n.cloud/webhook/overnightleads","executionMode":"production"}]},"connections":{"If":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"If1":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"If2":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"Merge":{"main":[[{"node":"Merge1","type":"main","index":1},{"node":"Judge the accuracy of scraped data","type":"main","index":0}]]},"Merge1":{"main":[[{"node":"Prepare the scraped output for Google Sheets","type":"main","index":0}]]},"Switch":{"main":[[{"node":"If2","type":"main","index":0}],[{"node":"If1","type":"main","index":0}],[{"node":"If","type":"main","index":0}]]},"HubSpot":{"main":[[{"node":"Google Sheets","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"HubSpot","type":"main","index":0}]]},"Google Sheets":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Google Sheets1":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Scraper AI Agent":{"main":[[{"node":"Switch","type":"main","index":0},{"node":"Merge","type":"main","index":1}]]},"Not matched route":{"main":[[{"node":"Update the status of the record","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Scraper AI Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Auto-fixing Output Parser","type":"ai_languageModel","index":0}]]},"Google Sheets Trigger":{"main":[[{"node":"Filter the leads that needs enrichment","type":"main","index":0}]]},"Bright Data MCP Client":{"ai_tool":[[{"node":"Scraper AI Agent","type":"ai_tool","index":0}]]},"No Operation, do nothing":{"main":[[{"node":"Set Desired Confidence Score","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Auto-fixing Output Parser","type":"ai_outputParser","index":0}]]},"Update row_id and status":{"main":[[{"node":"Add record if the confidence score is below 85%","type":"main","index":0}]]},"Auto-fixing Output Parser":{"ai_outputParser":[[{"node":"Scraper AI Agent","type":"ai_outputParser","index":0}]]},"Check the confidence score":{"main":[[{"node":"Override the record if the confidence score is equal or greater than 85%","type":"main","index":0},{"node":"No Operation, do nothing","type":"main","index":0}],[{"node":"Update row_id and status","type":"main","index":0},{"node":"Update the status of the original record","type":"main","index":0}]]},"Extract the AI results only":{"main":[[{"node":"Merge1","type":"main","index":0}]]},"Space requests by 5 seconds":{"main":[[{"node":"Just to make the connection neat","type":"main","index":0}]]},"Set Desired Confidence Score":{"main":[[{"node":"Update the Hubspot Contact","type":"main","index":0}]]},"Process each leads one by one":{"main":[[],[{"node":"Remove unneccessary fields for the prompt","type":"main","index":0}]]},"New Contact in Hubpost (OAuth2)":{"main":[[{"node":"HubSpot","type":"main","index":0}]]},"Update the status of the record":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]},"Just to make the connection neat":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Judge the accuracy of scraped data":{"main":[[{"node":"Extract the AI results only","type":"main","index":0}]]},"Add confidence score to Google Sheet":{"main":[[{"node":"Check the confidence score","type":"main","index":0}]]},"New Contact in Hubpost (Private App)":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Google Sheets1","type":"main","index":0}]]},"Filter the leads that needs enrichment":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Remove unneccessary fields for the prompt":{"main":[[{"node":"Scraper AI Agent","type":"main","index":0}]]},"Prepare the scraped output for Google Sheets":{"main":[[{"node":"Add confidence score to Google Sheet","type":"main","index":0}]]},"Add record if the confidence score is below 85%":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]},"Override the record if the confidence score is equal or greater than 85%":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]}}}


name: QR Code Generator via Webhook
author_name: ist00dent
author_username: ist00dent
nodes_used: ["n8n-nodes-base.httpRequest"]
categories: []
created_at: 2025-06-02T14:37:16.047Z
updated_at: 2025-06-02T14:37:16.047Z
url: https://n8n.io/workflows/4596
scraped_at: 2025-06-19 22:49:11
description:
  This n8n template allows you to instantly generate QR codes from any text or URL by simply sending a webhook request. It's a versatile tool for creating dynamic QR codes for various purposes, from marketing campaigns to event registrations, directly integrated into your automated workflows.

  🔧 How it works
  Receive Data Webhook: This node acts as the entry point for the workflow. It listens for incoming POST requests and expects a JSON body with a data property containing the text or URL you want to encode into the QR code.
  Generate QR Code: This node makes an HTTP GET request to the QR Server API (api.qrserver.com) to generate the QR code image. The content from your webhook is passed as the data parameter to the API.
  Respond with QR Code: This node sends the response from the QR Server API back to the service that initiated the webhook. The QR Server API directly returns the image data, so your webhook response will be the QR code image itself.

  👤 Who is it for?
  This workflow is ideal for:

  Marketers: Generate QR codes for product links, event registrations, or promotional materials on the fly.
  Developers: Integrate QR code generation into applications, websites, or internal tools.
  Event Organizers: Create dynamic QR codes for ticketing, information access, or check-ins.
  Businesses: Streamline processes requiring physical-to-digital transitions, like menu access or contact sharing.
  Automation Enthusiasts: Add QR code generation capabilities to any workflow.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "data": "https://www.yourwebsite.com/your-specific-page-or-text-to-encode"
  }

  The workflow will return the QR code image directly in the response.

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive Data Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /generate-qr).
  Customize QR Code (Optional):
    Double-click the Generate QR Code node.
    You can adjust the size parameter in the URL (e.g., size=200x200 for a larger QR code) or add other parameters supported by the QR Server API (e.g., bgcolor, color, qzone).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  Handling the Image Output: Since the QR Server API directly returns the image, the webhook response will be the image data. Depending on your use case, you might want to:
    Save to File/Cloud: Insert a node (e.g., Write Binary File, Amazon S3, Google Drive) after Generate QR Code to save the image to a file system or cloud storage.
    Embed in HTML/Email: If you're building an HTML response or sending an email, you might need to convert the image data to a Base64 string or provide a URL to a saved image.
  Error Handling: Enhance workflow robustness by adding an Error Trigger node. This allows you to catch any issues during QR code generation and set up notifications or logging.
  Dynamic Size/Color: You can extend the Receive Data Webhook to accept parameters for size, color, or bgcolor in the incoming JSON. Then, dynamically pass these to the url of the Generate QR Code node to create highly customizable QR codes.
  Input Validation: For more advanced use cases, you could add a Function node after the webhook to validate the incoming data to ensure it's in a valid format (e.g., a URL).

workflow_json:
  {"id":"2Ttwb1pfwNkhBDuB","meta":{"instanceId":"1777696fb9fddfee653e70940936c2b1e28ba1f1bde53b7182fbd6eb01988706"},"name":"QR Code Generator via Webhook","tags":[],"nodes":[{"id":"1a6f0b70-47f1-4a13-9d06-569574438a07","name":"Note for Webhook Trigger","type":"n8n-nodes-base.stickyNote","position":[200,-40],"parameters":{"height":320,"content":"This node listens for incoming POST requests. It expects a JSON body with a 'data' property (or 'sampleData' as currently configured) which will be encoded into the QR code. You can easily adjust the webhook path."},"typeVersion":1},{"id":"b66d7f5a-cf82-43bd-902c-3e9a74fc4e3e","name":"Note for QR Code Generation","type":"n8n-nodes-base.stickyNote","position":[500,-40],"parameters":{"color":2,"width":280,"height":320,"content":"This node makes an HTTP GET request to the QR Server API to generate the QR code image. The 'data' parameter in the URL is populated from the incoming webhook. The 'size' parameter can be adjusted here."},"typeVersion":1},{"id":"e55153df-3269-46d5-8c01-289eb72415ae","name":"Note for Webhook Response","type":"n8n-nodes-base.stickyNote","position":[840,-60],"parameters":{"color":3,"width":300,"height":340,"content":"This node sends the response from the QR Server API (which is typically the QR code image data itself, or a URL to it if you change the API call) back to the original caller of the webhook. You can insert other nodes before this to save the image, send it via email, etc."},"typeVersion":1},{"id":"c9a692b7-62bd-40e2-8c92-0dbbc37f3e12","name":"Generate QR Code","type":"n8n-nodes-base.httpRequest","position":[580,140],"parameters":{"url":"=https://api.qrserver.com/v1/create-qr-code/?size=150x150&data={{ $json.body.data }}","method":"=GET","options":{}},"typeVersion":4.2},{"id":"cb065a0f-562a-432f-9ed4-c942fdd6a808","name":"Receive Data Webhook","type":"n8n-nodes-base.webhook","position":[260,140],"webhookId":"6960391c-83cf-49b3-aa8d-761cd8263d76-unique-id","parameters":{"path":"generate-qr","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"acd3ea0f-7694-4875-994c-3b365c10fc28","name":"Respond with QR Code","type":"n8n-nodes-base.respondToWebhook","position":[920,140],"parameters":{"options":{},"respondWith":"allIncomingItems"},"typeVersion":1.2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"23aac7b6-e36d-4074-b81d-dbdcb8204451","connections":{"Generate QR Code":{"main":[[{"node":"Respond with QR Code","type":"main","index":0}]]},"Receive Data Webhook":{"main":[[{"node":"Generate QR Code","type":"main","index":0}]]}}}


name: Lookup IP Geolocation Details with IP-API.com via Webhook
author_name: ist00dent
author_username: ist00dent
nodes_used: ["n8n-nodes-base.httpRequest"]
categories: []
created_at: 2025-06-02T14:59:14.608Z
updated_at: 2025-06-02T14:59:14.608Z
url: https://n8n.io/workflows/4599
scraped_at: 2025-06-19 22:50:28
description:
  This n8n template enables you to instantly retrieve detailed geolocation information for any given IP address by simply sending a webhook request. Leverage the power of IP-API.com to gain insights into user locations, personalize experiences, or enhance security protocols within your automated workflows.

  🔧 How it works
  Receive IP Webhook: This node acts as the entry point, listening for incoming POST requests. It expects a JSON body containing an ip property with the IP address you wish to look up.
  Get IP Geolocation: This node makes an HTTP GET request to the IP-API.com service, passing the IP address from your webhook. The API responds with a comprehensive JSON object detailing the IP's location (country, city, region), ISP, organization, and more.
  Respond with Geolocation Data: This node sends the full geolocation data received from IP-API.com back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  Marketing & Sales Teams: Personalize website content, offers, or ads based on a visitor's geographic location. Tailor email campaigns by region.
  Customer Support: Quickly identify a customer's location to provide more localized or relevant assistance.
  Security & Fraud Detection: Analyze incoming connection IPs to identify suspicious activity, block known malicious regions, or flag potential fraud.
  Analytics & Reporting: Augment your analytics data with geographical insights about your users or traffic.
  Developers & Integrators: Easily add IP lookup functionality to custom applications, internal tools, or monitoring systems.
  Content Delivery Networks (CDNs): Route users to the closest servers for faster content delivery (though advanced CDNs usually handle this automatically).

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "ip": "8.8.8.8" // Replace with the IP address you want to look up
  }

  The workflow will return a JSON response similar to this (data will vary based on IP):

  {
    "status": "success",
    "country": "United States",
    "countryCode": "US",
    "region": "VA",
    "regionName": "Virginia",
    "city": "Ashburn",
    "zip": "20149",
    "lat": 39.0437,
    "lon": -77.4875,
    "timezone": "America/New_York",
    "isp": "Google LLC",
    "org": "Google Public DNS",
    "as": "AS15169 Google LLC",
    "query": "8.8.8.8"
  }

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive IP Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /ip-lookup).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  This workflow, while simple, is a powerful building block. Here's how you can make it even more useful:

  Conditional Logic: Add IF nodes after "Get IP Geolocation" to create conditional branches. For example:
    If countryCode is 'CN' or 'RU', send an alert to your security team.
    If city is 'New York', route the request to a specific sales representative.
  Data Enrichment: Integrate this workflow into larger automation. For instance:
    When a new sign-up occurs, pass their IP address to this workflow, then save the returned geolocation data (country, city, ISP) alongside their user profile in your CRM or database.
    For e-commerce, use the location data to pre-fill shipping fields or suggest local currency/language.
  Logging & Analytics: Store the lookup results in a spreadsheet (Google Sheets), database (PostgreSQL, Airtable), or logging service. This can help you track where your users are coming from over time.
  Rate Limiting: IP-API.com has rate limits for its free tier. If you anticipate high usage, consider adding a Delay node or implementing a caching mechanism with a Cache node to avoid hitting limits. For heavy use, you might need to upgrade to a paid plan.
  Dynamic Response: Instead of returning the full JSON, you could use a Function node to extract only specific pieces of information (e.g., just the country and city) and return a more concise response.
  Input Validation: For robust production use, add a Function node after the webhook to validate that the incoming ip value is indeed a valid IP address. If it's not, you can return an error message to the caller.

workflow_json:
  {"id":"9Ua1Wqenubbi6OkW","meta":{"instanceId":"1777696fb9fddfee653e70940936c2b1e28ba1f1bde53b7182fbd6eb01988706"},"name":"IP Geolocation Lookup via Webhook","tags":[],"nodes":[{"id":"03bd8d64-8336-4c15-8ed3-af3144ee1113","name":"Note for Webhook Trigger","type":"n8n-nodes-base.stickyNote","position":[380,80],"parameters":{"width":280,"height":280,"content":"This node listens for incoming POST requests. It expects a JSON body with an 'ip' property containing the IP address you want to look up (e.g., {\"ip\": \"8.8.8.8\"}). You can easily adjust the webhook path to suit your needs."},"typeVersion":1},{"id":"7fefa097-190c-4b86-9fbc-d110e6d913b9","name":"Note for IP Lookup","type":"n8n-nodes-base.stickyNote","position":[760,60],"parameters":{"color":2,"width":260,"height":300,"content":"This node makes an HTTP GET request to the IP-API.com service to get detailed geolocation information for the IP address provided by the webhook. The API returns data like country, city, region, ISP, and more."},"typeVersion":1},{"id":"46964ab7-7845-4b39-92f9-9011a1484fa3","name":"Note for Webhook Response","type":"n8n-nodes-base.stickyNote","position":[1100,40],"parameters":{"color":3,"width":280,"height":340,"content":"This node sends the full geolocation data received from IP-API.com back to the original caller of the webhook. This data can be directly consumed or further processed (e.g., logged, filtered, used in conditional logic) before being returned."},"typeVersion":1},{"id":"0b4b792d-30fa-4f55-b96c-b9b88da026f0","name":"Get IP Geolocation","type":"n8n-nodes-base.httpRequest","position":[840,220],"parameters":{"url":"=http://ip-api.com/json/{{ $json.body.ip }}","method":"=GET","options":{}},"typeVersion":4.2},{"id":"a6c774ad-9aa6-4b0b-8644-5966d7242907","name":"Receive IP Webhook","type":"n8n-nodes-base.webhook","position":[440,220],"webhookId":"76cf0099-b4e9-4446-a355-9fa85b72365d-unique-id","parameters":{"path":"ip-lookup","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"ee2b27c2-a96f-432f-b950-fff3a8dab462","name":"Respond with Geolocation Data","type":"n8n-nodes-base.respondToWebhook","position":[1200,220],"parameters":{"options":{},"respondWith":"allIncomingItems"},"typeVersion":1.2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"97ad1608-6a06-4b47-9faa-ee5c120232fc","connections":{"Get IP Geolocation":{"main":[[{"node":"Respond with Geolocation Data","type":"main","index":0}]]},"Receive IP Webhook":{"main":[[{"node":"Get IP Geolocation","type":"main","index":0}]]}}}


name: 🤖 AI content generation for Auto Service 🚘 Automate your social media📲!
author_name: N8ner
author_username: n8ner
categories: []
created_at: 2025-06-02T15:08:52.136Z
updated_at: 2025-06-02T15:08:52.136Z
url: https://n8n.io/workflows/4600
scraped_at: 2025-06-19 22:48:37
description:
  Who Is This For?

  🚘This workflow is designed for auto service / car repair businesses looking to streamline their social media marketing with Ai tools and automation via n8n. 
  Whether you’re a small garage owner, a car repair shop, an automotive specialist or automechanic - this tool helps you maintain an active online presence without spending hours creating content.

  💪🏼 Though this template is set up for Auto Service daily content uploads, but the underlying logic is universal. You can easily adapt it for any niche by editing prompts, adding nodes, and creating or uploading a variety of content to any platform. You can use any LLM and generative AI of your choice. Personally, I prefer the smooth and effective results from ChatGPT 4.1 combined with GPT Image 1. But you can generate videos instead of images for your posts as well 😉

  What Problem Is This Workflow Solving?

  🤦‍♂️ Many auto service businesses struggle with consistently posting engaging content due to time constraints or lack of marketing expertise. 
  💎This workflow solves that by automating the content creation and posting process, ensuring your social media channels stay fresh and active, ultimately attracting more customers.

  What This Workflow Does:

  Generates daily social media posts tailored specifically to the auto service niche using AI.
  Allows easy customization of post and image prompts.
  Integrates research links through the Tavily Internet Search tool for relevant content.
  Supports starting posts based on reference article links via Google Sheets.
  Automatically publishes posts to your connected social media platforms.
  Enables scheduled or trigger-based posting for maximum flexibility.

  How It Works?

  Easy, actually ☺️ 

  AI creates daily social media content made just for Auto Service. You can simply edit prompts for both posts and images, set up news or articles research links via the Tavily Internet Search tool. You can also start the workflow with a reference article link through Google Sheets.

  🎯 Consistently posting relevant and actual niche content helps attract new customers, all while leveraging AI and n8n tools to keep the process seamless and cost-effective. 

  Set Up Steps:

  I kept it quick and simple for you ✨

  If you’re happy with the current LLM and image model configurations, just connect your OpenAI API credentials to enable AI content generation.
  Link your social media accounts (Facebook, Telegram, X, etc.) for autoposting.
  Optionally connect Google Sheets if you want to trigger posts based on sheet updates with reference links.
  Customize prompts as needed to match your brand voice, style and marketing tasks.
  Choose between:
  1) Scheduled automatic generation and posting at the same time as socials algorythms like it.
  2) Google Sheets trigger with reference.
  3) Manual start.

  How to Customize This Workflow to Your Needs?
  Switch AI models and edit prompts to better reflect your specific services or promotions.
  Add or modify research links in Tavily to keep your posts timely and relevant.
  Adjust posting schedules to match peak engagement times for your audience.
  Expand or reduce the number of social platforms integrated depending on your marketing strategy.
  Use Google Sheets to batch upload ideas or curate specific content topics.


  After adjusting a few settings, activate the workflow and let it run. 

  🤖 The system will then automatically publish your content across your selected social platforms — saving you time and effort. 



  📌 You’ll find more detailed tips and additional ai models for customizing ai generation process inside the workflow via sticky notes.

  💬 Need help? For additional guidance, feel free to message me — here’s my profile in the n8n community for direct contact  👈 click!

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.telegram","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.twitter","n8n-nodes-base.linkedIn","n8n-nodes-base.apiTemplateIo","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference","@n8n/n8n-nodes-langchain.lmChatMistralCloud","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.lmChatAzureOpenAi","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatDeepSeek","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.lmChatXAiGrok"]

workflow_json:
  {"id":"JdFtT41G2iqwGt1e","meta":{"instanceId":"c778ccc6e6bdd79c80ccc835bc5d5a950bf07bb2941c80ee5afaeb18d9e2e8ef","templateCredsSetupCompleted":true},"name":"🤖 AI content generation for Auto Service 🚘 Automate your social media📲!","tags":[],"nodes":[{"id":"e4a3ceac-acaa-434c-aefc-19e4fed34ea6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[340,-1340],"parameters":{"color":5,"width":5760,"height":2920,"content":"![Source example](https://i.ibb.co/PZF4szJr/photo-2025-05-30-13-24-04.jpg#full-width)"},"typeVersion":1},{"id":"d806bec6-ee52-4e7e-9b10-41b2dd16b1ba","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[340,-500],"parameters":{"color":5,"width":1260,"height":1260,"content":"# [made with ❤️ by N8ner 👈 click! Feel free to message me!](https://community.n8n.io/u/n8ner/badges) ![](https://i.ibb.co/2YyTWq2v/circuit.jpg#full-width#full-width)"},"typeVersion":1},{"id":"6e8ee9ec-fe55-48d8-afab-b5d2a677cedb","name":"Telegram","type":"n8n-nodes-base.telegram","position":[4180,-320],"webhookId":"f33ade31-7243-4d8f-a7e9-fc450ebf7eb5","parameters":{"chatId":"7564233298","operation":"sendPhoto","binaryData":true,"additionalFields":{"caption":"={{ $('GENERATE TEXT').item.json.output }}"},"binaryPropertyName":"={{'data'}}"},"credentials":{"telegramApi":{"id":"5EqQR7c8hHg7JUam","name":"Telegram account"}},"typeVersion":1.2,"alwaysOutputData":false},{"id":"72b10789-5887-49b3-bbc3-06c220bc8150","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[1800,-220],"parameters":{"rule":{"interval":[{"triggerAtHour":9}]}},"typeVersion":1.2},{"id":"64bd78e2-2a1b-4ea8-bf92-e6c113acd229","name":"When clicking Execute workflow","type":"n8n-nodes-base.manualTrigger","position":[1800,60],"parameters":{},"typeVersion":1},{"id":"cb7597f8-fdb9-48de-994a-da6b684421c7","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[1800,380],"parameters":{"event":"=rowAdded","options":{"valueRender":"UNFORMATTED_VALUE","columnsToWatch":["Links for articles to refer"],"dataLocationOnSheet":{"values":{"range":"A2:A10","rangeDefinition":"specifyRangeA1"}}},"pollTimes":{"item":[{"mode":"everyX","unit":"minutes","value":1}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Y26GgkSEimhjFhNyArFEvHTonv6JaqMWVU9jxnV-y-c/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"1Y26GgkSEimhjFhNyArFEvHTonv6JaqMWVU9jxnV-y-c"}},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"SaouUrFEnn4hWJcQ","name":"Google Sheets Trigger account"}},"notesInFlow":false,"typeVersion":1},{"id":"157ac7c9-54df-4dc0-aa89-1b63b17f3148","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[3640,-140],"parameters":{"options":{},"fieldToSplitOut":"choices[0].message.content"},"typeVersion":1},{"id":"bcd7bc00-fb79-4709-8a97-0a43bc274f4c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[3960,-520],"parameters":{"color":7,"width":520,"height":1300,"content":"# Finish - Upload to Platforms![Guide](https://i.ibb.co/d41JsL8q/Screenshot-2025-05-30-122423-1.jpg#full-width#full-width)"},"typeVersion":1},{"id":"2f7884d1-7da0-492b-8503-9a4de0911773","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[4120,420],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"f7181d0c-1bf4-4031-86dd-95761940de68","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[4120,160],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"d1e3f2e4-8f4e-40aa-b512-b7e7d2667f1e","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[4120,-100],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"64b6a403-4913-4d1b-8b61-581dec0223a7","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[4120,-360],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"a48fa4e0-3781-426f-9f48-1fec77acba68","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[1600,-500],"parameters":{"color":7,"width":500,"height":1260,"content":"# START - Choose a Trigger![Guide](https://i.ibb.co/d41JsL8q/Screenshot-2025-05-30-122423-1.jpg#full-width#full-width)"},"typeVersion":1},{"id":"33dc129d-2784-4fb9-a027-589aa443d37b","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[1740,320],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"e1666561-2404-460e-b37e-0ebfd15b6261","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[1740,20],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"d34574fe-5791-4508-b847-e20eda64cd66","name":"Sticky Note12","type":"n8n-nodes-base.stickyNote","position":[1740,-280],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"ac1bb708-89fb-496e-8291-e86d509ff2f8","name":"Sticky Note13","type":"n8n-nodes-base.stickyNote","position":[2160,-360],"parameters":{"color":7,"width":760,"height":460,"content":"### Edit prompt and system message up for you, customize llm and search links, add your own prompts database ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"1c2803d0-8ea1-48c1-b3df-6e9a5156be07","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[2520,300],"parameters":{"color":7,"width":760,"height":420,"content":"### Edit prompt and system message up for you, customize llm and add own prompts database ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"b40ab1d2-e7d4-4dce-8200-41ecb761eb9b","name":"Sticky Note15","type":"n8n-nodes-base.stickyNote","position":[3120,-300],"parameters":{"color":7,"width":760,"height":380,"content":"### Set up Ai model for generating images, customize prompt up for you ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"4aeadd2d-a393-414d-a584-344934f89586","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[4480,-520],"parameters":{"color":5,"width":1620,"height":1300,"content":"# The template is set up for Auto Service daily content uploads, but the underlying logic is universal. You can easily adapt it for any niche by editing prompts, adding nodes, and creating or uploading a variety of content to any platform. You can use any LLM and generative AI of your choice. Personally, I prefer the smooth and effective results from ChatGPT 4.1 combined with GPT Image 1.  Enjoy and [message me](https://community.n8n.io/u/n8ner/badges) with your reviews for future improvements! ![](https://i.ibb.co/qLxMHbd5/customize-ride1.jpg#full-width#full-width )"},"typeVersion":1},{"id":"07a0cb9c-fdd6-4120-b9cc-f92d636eed27","name":"Mistral Cloud Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatMistralCloud","position":[4620,-220],"parameters":{"model":"pixtral-large-latest","options":{}},"credentials":{"mistralCloudApi":{"id":"FnOd31BOjfSRcl8F","name":"Mistral Cloud account 2"}},"typeVersion":1},{"id":"765cbb25-897b-408d-ac1d-613c07629a78","name":"OpenRouter Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[4880,-80],"parameters":{"options":{}},"credentials":{"openRouterApi":{"id":"JH3j9elCwOwmv4CQ","name":"OpenRouter account"}},"typeVersion":1},{"id":"486efc72-84ea-4f1e-bc8d-f3e53f250ddd","name":"Anthropic Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[4620,40],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-3-7-sonnet-20250219","cachedResultName":"Claude 3.7 Sonnet"},"options":{}},"typeVersion":1.3},{"id":"21d18ef8-7520-476b-a471-5e3a64902a65","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[4980,-220],"parameters":{"options":{}},"typeVersion":1},{"id":"c14142c6-7294-47a9-805a-038bbe367097","name":"xAI Grok Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatXAiGrok","position":[4780,40],"parameters":{"options":{}},"typeVersion":1},{"id":"9460fa92-6e31-448f-b87b-7a440a791426","name":"DeepSeek Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatDeepSeek","position":[4980,40],"parameters":{"options":{}},"typeVersion":1},{"id":"5db59ffd-c09a-4146-b140-47e8399d6c41","name":"Hugging Face Inference Model","type":"@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference","position":[5160,-220],"parameters":{"model":"https://huggingface.co/black-forest-labs/FLUX.1-dev","options":{}},"credentials":{"huggingFaceApi":{"id":"pTOJMnoQUX7aj7qX","name":"HuggingFaceApi account"}},"typeVersion":1},{"id":"8eea8670-a4a2-4e58-ae04-3a1e7f8cf1de","name":"Freepik API","type":"n8n-nodes-base.httpRequest","position":[4540,400],"parameters":{"url":"https://api.freepik.com/v1/ai/text-to-image/imagen3","method":"POST","options":{},"jsonBody":"{\n  \"prompt\": \"Crazy dog in the space\",\n  \"num_images\": 1,\n  \"aspect_ratio\": \"square_1_1\",\n  \"styling\": {\n    \"style\": \"anime\",\n    \"effects\": {\n      \"color\": \"pastel\",\n      \"lightning\": \"warm\",\n      \"framing\": \"portrait\"\n    }\n  },\n  \"person_generation\": \"allow_all\",\n  \"safety_settings\": \"block_none\"\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"x-freepik-api-key","value":"FPSX38a53a81a693e71a0e9437a657de6342"}]}},"typeVersion":4.2},{"id":"dc0fb490-d710-4a3d-9c49-2ba3652b2770","name":"Runware API","type":"n8n-nodes-base.httpRequest","position":[4540,580],"parameters":{"url":"https://api.runware.ai/v1","method":"POST","options":{"redirect":{"redirect":{}}},"jsonBody":"[\n  {\n    \"taskType\": \"authentication\",\n    \"apiKey\": \"<API_KEY>\"\n  },\n  {\n    \"taskType\": \"imageInference\",\n    \"taskUUID\": \"39d7207a-87ef-4c93-8082-1431f9c1dc97\",\n    \"positivePrompt\": \"a cat\",\n    \"width\": 512,\n    \"height\": 512,\n    \"model\": \"civitai:102438@133677\",\n    \"numberResults\": 1\n  }\n]","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"b2ea776e-4b6f-4f1a-9c3a-1719719209ec","name":"Clipdrop API","type":"n8n-nodes-base.httpRequest","position":[4760,580],"parameters":{"url":"https://clipdrop-api.co/text-to-image/v1","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"prompt"}]},"genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"EIcFRRZtIyuSbthu","name":"Bearer Auth account"}},"typeVersion":4.2},{"id":"4133831e-0c79-44ae-ba7a-0bf8bead48fd","name":"Ollama Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOllama","position":[4780,-220],"parameters":{"options":{}},"typeVersion":1},{"id":"c045b699-12cf-48a2-94ce-bcec997434de","name":"Azure OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatAzureOpenAi","position":[5160,40],"parameters":{"options":{}},"typeVersion":1},{"id":"d6134f16-65c1-49ee-823a-2b10954707a2","name":"APITemplate.io","type":"n8n-nodes-base.apiTemplateIo","position":[5200,580],"parameters":{},"credentials":{"apiTemplateIoApi":{"id":"8BoC4xP9YSekp9OA","name":"APITemplate.io account"}},"typeVersion":1},{"id":"2f627d07-42e6-4334-8255-24aa86ba7146","name":"Ideogram API","type":"n8n-nodes-base.httpRequest","position":[4980,580],"parameters":{"url":"https://api.ideogram.ai/v1/ideogram-v3/generate","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"prompt","value":"A photo of a cat sleeping on a couch."},{"name":"rendering_speed","value":"TURBO"}]},"headerParameters":{"parameters":[{"name":"Api-Key","value":"<apiKey>"}]}},"typeVersion":4.2},{"id":"72377c43-3e1e-4c52-84de-aa8ef825f150","name":"Replicate API","type":"n8n-nodes-base.httpRequest","position":[4760,400],"parameters":{"url":"https://api.replicate.com/v1/models/ideogram-ai/ideogram-v2/predictions","method":"POST","options":{},"jsonBody":"{\n  \"input\": {\n    \"prompt\": \"An illustration of a black running shoe with the text \\\"Run AI with an API\\\" written on the shoe. The shoe is placed on a blue background. The text is white and bold. The overall image has a modern and techy vibe.\",\n    \"aspect_ratio\": \"16:9\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer $REPLICATE_API_TOKEN"},{"name":"Prefer","value":"wait"}]}},"typeVersion":4.2},{"id":"ae03e3a1-ff22-46ce-b31b-e355611252c0","name":"Imagen Google API","type":"n8n-nodes-base.httpRequest","position":[4980,400],"parameters":{"url":"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict","body":"0","method":"POST","options":{},"sendBody":true,"contentType":"raw","sendHeaders":true,"rawContentType":"application/json; charset=utf-8","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer $(gcloud auth print-access-token)"}]}},"typeVersion":4.2},{"id":"16eeca87-25b3-42c9-a2d1-7dde51e08db4","name":"HuggingFace API","type":"n8n-nodes-base.httpRequest","position":[5200,400],"parameters":{"url":"https://uu149rez6gw9ehej.eu-west-1.aws.endpoints.huggingface.cloud/distilbert-sentiment","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"{\"inputs\": \"Deploying my first endpoint was an amazing experience.\"}"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer <Token>"}]}},"typeVersion":4.2},{"id":"ed97601a-7ced-478a-ace3-63ab79f951e8","name":"Runway Images","type":"n8n-nodes-base.httpRequest","position":[4980,220],"parameters":{"url":"https://api.dev.runwayml.com/v1/text_to_image","method":"POST","options":{},"jsonBody":"{\n  \"promptText\": \"string\",\n  \"ratio\": \"1920:1080\",\n  \"seed\": 4294967295,\n  \"model\": \"gen4_image\",\n  \"referenceImages\": [\n    {\n      \"uri\": \"http://example.com\",\n      \"tag\": \"string\"\n    }\n  ],\n  \"contentModeration\": {\n    \"publicFigureThreshold\": \"auto\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer {{ YOUR API KEY }}"},{"name":"X-Runway-Version","value":"2024-11-06"}]}},"typeVersion":4.2},{"id":"7db2a283-7061-4440-8def-534e96ff7dfe","name":"GENERATE TEXT","type":"@n8n/n8n-nodes-langchain.agent","position":[2340,-180],"parameters":{"text":"=Use link as a main reference article source {{ $json.name }}! IMPORTANT! Actualize up to date information and facts check up, use Internet research with Tavily tool!","options":{"systemMessage":"(!IMPORTANT!) Write short engaging posts under 1024  characters for Telegram. \n\nOverview\nYou are a brand agent for Autoservis, specializing in creating professional and educational posts about car repair. You write random and interesting daily tips, lifehacks, notes, actual news for 2025 year.\n\nGoals:\nAlways start by conducting real-time research using the Tavily tool to gather the most accurate and up-to-date information on the topic. The post should be written to engage the specified target audience.\n\nBased on your research, create a well-structured Telegram post that:\n\nBegins with a captivating hook\n\nMaintains a professional tone\n\nIs clear and easy to read\n\nIs educational and informative\n\nUses minimal emojis (only when very relevant)\n\nIncludes proper source attribution (e.g., \"according to [Source]\")\n\nContains relevant hashtags to improve visibility\n\nEnds with a clear call to action (e.g., ask for thoughts, feedback, or shares)\n\nOutput instructions:\nYour ONLY output should be the final Telegram post text.\n\nDo not include explanations, notes, or anything outside the post itself.\n\nExample workflow:\nReceive the topic (e.g., вЂњReturn on investment in warehouse automationвЂќ)\n\nUse Tavily to research and gather the latest information or case studies\n\nDraft the post using this research\n\nFormat it with references, clear structure, relevant hashtags, and a call to action\n\nAt the end of the post write\nService center address: 123 Main St, New York, NY, for appointments call (212) 555-1234"},"promptType":"define"},"typeVersion":1.8},{"id":"946716eb-39a5-42f6-88a2-bc89b3351c91","name":"GENERATE PROMPT","type":"@n8n/n8n-nodes-langchain.agent","position":[2680,460],"parameters":{"text":"Make it perfect.\nPhoto-realistic to Hyper-realistic style.\nWidescreen aspect ratio with the highest pixel resolution. Generate an extremely detailed and realistic image based on the provided reference description {{ $json.output }}. Include comprehensive visual details covering:\n\n- SubjectвЂ™s appearance: facial features, expressions, skin tone, hair style and texture, clothing fabric, color, and fit, posture, accessories.\n- Environment: specific real-world setting and background elements, natural lighting (direction, intensity, color temperature), and ambient mood.\n- Colors and textures: precise color palettes, authentic fabric and skin textures, natural reflections, and subtle visual cues enhancing lifelike clarity.\n\nExclude any abstract art styles, text, numbers, letters, logos, or non-photographic elements to ensure natural realism.\n\nThe prompt should specify image rendering in 16K photographic resolution with maximum clarity and realism.\n\nAdditionally, provide explicit, practical instructions on enhancing an existing photo to 16K resolution using advanced AI super-resolution upscaling techniques that:\n\n- Preserve fine details without blurriness or unnatural sharpening.\n- Maintain natural textures and lighting.\n- Minimize artifacts like noise, halos, or abnormal edges.\n- Deliver photo-realistic output with enhanced clarity.\n\nEnsure the background is clear, finely detailed, and naturally integrated with the subject to reinforce photographic accuracy.\n\nFocus solely on producing a precise, clear prompt and enhancement guidance centered on natural realism and photographic fidelity for ultra-high resolution images.\n\n","options":{"systemMessage":"=Overview\nYou are an AI agent that converts Telegram posts into visual prompt descriptions for generating graphic marketing materials. These visuals are meant to accompany the Telegram post, effectively conveying the message in a visually appealing, brand-consistent style.\n\nObjective:\nAnalyze the provided Telegram post.\n\nExtract the core message, insight, or key takeaway.\n\nCraft a clear, compelling graphic prompt suitable for a text-to-image generator.\n\nThe final graphic should:\n\nVisually represent or enhance the main idea of the post\n\nBe appropriate for a professional Telegram feed\n\nAppear polished, modern, and engaging\n\nOutput Instructions:\nProvide only the final image prompt without quotation marks.\n\nDo not repeat or paraphrase the Telegram post.\n\nAvoid adding explanations or any additional textвЂ”output only the image prompt.\n\nDo not leave placeholders like вЂњHeader area reserved for customizable callout text.вЂќ\n\nInclude numeric data from the original post when relevant.\n\nStyle Guidelines:\nApproach this like a brand designer or marketing creative.\n\nVisual elements may include text, charts, icons, abstract shapes, overlays, modern illustrations, motion-inspired effects, bold typographic elements (described but not rendered), or metaphorical concepts.\n\nYou may suggest layout styles (e.g., вЂњsplit screen layout,вЂќ вЂњheader with bold title and subtle background illustrationвЂќ).\n\nKeep in mind the prompt will be used by AI image generation toolsвЂ”make it clear and effective.\n\nExample Prompt Format:\nA sleek flat-design graphic featuring a human brain intertwined with mechanical gears, symbolizing the integration of AI and automation.\nMinimalist background with soft gradients, clean sans-serif text areas.\n- - - Important! dont put text on image! - - -"},"promptType":"define"},"typeVersion":1.8},{"id":"bd34e79d-6f3e-4b75-b6cc-ac5e3062ad3e","name":"LinkedIn","type":"n8n-nodes-base.linkedIn","position":[4180,200],"parameters":{"text":"={{ $json['choices[0].message.content'] }}","person":"[CONFIGURE_YOUR_LINKEDIN_PERSON_ID]","authentication":"communityManagement","additionalFields":{}},"typeVersion":1},{"id":"b49aaca1-f326-4fc2-8cc6-265891905f52","name":"X","type":"n8n-nodes-base.twitter","position":[4180,460],"parameters":{"additionalFields":{}},"typeVersion":2},{"id":"d5cc6185-5c6d-4ed4-8b93-c546fe57b804","name":"Facebook","type":"n8n-nodes-base.facebookGraphApi","position":[4180,-60],"parameters":{"options":{},"httpRequestMethod":"POST"},"typeVersion":1},{"id":"7525e88c-eacd-4bb5-8f08-b85dd6aa8777","name":"Minimax Images","type":"n8n-nodes-base.httpRequest","position":[4540,220],"parameters":{"url":"https://api.minimaxi.chat/v1/image_generation","method":"POST","options":{"redirect":{"redirect":{}}},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"model","value":"image-01"},{"name":"prompt","value":"men Dressing in white t shirt, full-body stand front view image :25, outdoor, Venice beach sign, full-body image, Los Angeles, Fashion photography of 90s, documentary, Film grain, photorealistic"},{"name":"aspect_ratio","value":"16:9"},{"name":"response_format","value":"url"},{"name":"n","value":"3"},{"name":"prompt_optimizer","value":"true"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer {api_key}"}]}},"typeVersion":4.2},{"id":"02acacfc-fa40-440d-a35c-f615c3369c82","name":"Kling Images","type":"n8n-nodes-base.httpRequest","position":[4760,220],"parameters":{"url":"https://api-singapore.klingai.com/v1/images/text2image","method":"POST","options":{"redirect":{"redirect":{}}},"jsonBody":"{\n\t\"code\": 0, //Error codesпј›Specific definitions can be found in Error codes\n  \"message\": \"string\", //Error information\n  \"request_id\": \"string\", //Request ID, generated by the system, is used to track requests and troubleshoot problems\n  \"data\":[\n    {\n      \"task_id\": \"string\", //Task ID, generated by the system\n      \"task_status\": \"string\", //Task status, Enum valuesпјљsubmittedгЂЃprocessingгЂЃsucceedгЂЃfailed\n      \"task_status_msg\": \"string\", //Task status information, displaying the failure reason when the task fails (such as triggering the content risk control of the platform, etc.)\n      \"created_at\": 1722769557708, //Task creation time, Unix timestamp, unit ms\n      \"updated_at\": 1722769557708, //Task update time, Unix timestamp, unit ms\n      \"task_result\":{\n        \"images\":[\n          {\n            \"index\": int, //Image NumberпјЊ0-9\n            \"url\": \"string\" //URL for generating imagesпјЊsuch asпјљhttps://h1.inkwai.com/bs2/upload-ylab-stunt/1fa0ac67d8ce6cd55b50d68b967b3a59.png(To ensure information security, generated images/videos will be cleared after 30 days. Please make sure to save them promptly.)\n          }\n      \t]\n      }\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer xxx"}]}},"typeVersion":4.2},{"id":"0a394dbb-ae24-456c-b13f-f568edd40b44","name":"Leonardo Images","type":"n8n-nodes-base.httpRequest","position":[5200,220],"parameters":{"url":"https://cloud.leonardo.ai/api/rest/v1/generations/id","options":{"redirect":{"redirect":{}}},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"typeVersion":4.2},{"id":"692e118f-9272-45f9-80c4-6463add4977c","name":"Tavily Internet Search","type":"@tavily/n8n-nodes-tavily.tavilyTool","position":[2260,-280],"parameters":{"query":"={\n  \"query\": \"{searchTerm}\",\n  \"topic\": \"general\",\n  \"search_depth\": \"advanced\",\n  \"chunks_per_source\": 3,\n  \"max_results\": 1,\n  \"time_range\": null,\n  \"days\": 7,\n  \"include_answer\": true,\n  \"include_raw_content\": false,\n  \"include_images\": false,\n  \"include_image_descriptions\": false,\n  \"include_domains\": [],\n  \"exclude_domains\": []\n}","options":{},"descriptionType":"manual","toolDescription":"Search in Tavily"},"credentials":{"tavilyApi":{"id":"v2o6xkt7VGeBiPOs","name":"Tavily account"}},"typeVersion":1},{"id":"de72e33d-5f58-4fbd-80cf-0eb9f4344175","name":"OPENAI GENERATES IMAGE","type":"@n8n/n8n-nodes-langchain.openAi","position":[3280,-140],"parameters":{"model":"gpt-image-1","prompt":"= IMPORTANT! DONT WRITE TEXT ON A PICTURE! Create perfect visual for\n{{ $json.output }}","options":{},"resource":"image"},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.8},{"id":"0dbe4250-2cd8-4295-bd4b-42ec26ab6cb6","name":"OPENAI WRITES PROMPTS","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2620,600],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.2},{"id":"07dc3e20-3d51-4bb7-a327-5d961afb2b96","name":"OPENAI WRITES POSTS","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2260,-40],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.2}],"active":false,"pinData":{"X":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"Facebook":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"LinkedIn":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"APITemplate.io":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}]},"settings":{"executionOrder":"v1"},"versionId":"37a7baec-9442-450f-9373-fad685598558","connections":{"LinkedIn":{"main":[[]]},"Split Out":{"main":[[{"node":"X","type":"main","index":0},{"node":"Facebook","type":"main","index":0},{"node":"LinkedIn","type":"main","index":0},{"node":"Telegram","type":"main","index":0}]]},"GENERATE TEXT":{"main":[[{"node":"GENERATE PROMPT","type":"main","index":0}]]},"APITemplate.io":{"main":[[]]},"Minimax Images":{"main":[[]]},"GENERATE PROMPT":{"main":[[{"node":"OPENAI GENERATES IMAGE","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]},"OPENAI WRITES POSTS":{"ai_languageModel":[[{"node":"GENERATE TEXT","type":"ai_languageModel","index":0}]]},"Google Sheets Trigger":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]},"OPENAI WRITES PROMPTS":{"ai_languageModel":[[{"node":"GENERATE PROMPT","type":"ai_languageModel","index":0}]]},"OPENAI GENERATES IMAGE":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Tavily Internet Search":{"ai_tool":[[{"node":"GENERATE TEXT","type":"ai_tool","index":0}]]},"When clicking вЂExecute workflowвЂ™":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]}}}


name: Automate Travel Agent Outreach with Web Scraping, OpenAI, and Google Sheets
author_name: Mohan Gopal
author_username: mohan
categories: []
created_at: 2025-06-02T18:01:17.136Z
updated_at: 2025-06-02T18:01:17.136Z
url: https://n8n.io/workflows/4606
scraped_at: 2025-06-19 22:49:13
description:
  🔧 Automated Workflow: Scrape Travel Agent Contacts and Send Personalized Survey Emails
  This workflow is designed to automate the process of scraping travel agent contact data, standardizing the information, storing it, and then sending out personalized survey emails using AI. It’s especially useful for outreach campaigns, research, or lead generation.

  ⚙️ Workflow Breakdown
  📍 Part 1: Scraping and Storing Travel Agent Data
  HTTP Scrape Website
  Type: HTTP Request (POST)

  Function: Calls a third-party scraping API (https://api.firecrawl.dev...) to scrape data from a travel agent listing site.

  Purpose: Extract raw HTML or structured data from a website containing contact info.

  OpenAI Standardise Data
  Type: OpenAI Message Model

  Function: Uses AI to clean and standardize the raw scraped data into structured JSON (e.g., name, email, agency, location).

  Purpose: Ensures uniformity in formatting, making data easier to process downstream.

  Split Out
  Type: Item Splitter

  Function: Splits the standardized array of agent records into individual items.

  Purpose: Allows appending each agent as a separate row in Google Sheets.

  Google Sheet - Data Store
  Type: Google Sheets (Append)

  Function: Stores each individual record in a spreadsheet.

  Purpose: Maintains a centralized and accessible log of scraped and processed contacts.

  📍 Part 2: Read Records and Send Personalized Survey Emails
  Triggered Manually – when “Test Workflow” button is clicked.

  Trigger – When clicking 'Test workflow'
  Type: Manual Trigger

  Function: Starts the second part of the workflow manually.

  Use Case: Testing or running the outreach email process on demand.

  Google Sheet Data Store (Read)
  Type: Google Sheets (Read)

  Function: Reads the stored travel agent records from the spreadsheet.

  Purpose: Retrieves contact details and context for personalized messaging.

  OpenAI Mail Composer
  Type: OpenAI Message Model

  Function: Generates a custom email for each agent using their details.

  Purpose: Creates human-like, engaging emails that include a survey link (optional input).

  Google Sheet Update Records
  Type: Google Sheets (Update)

  Function: Optionally marks the record as "emailed" or logs the date of outreach.

  Purpose: Prevents duplicate outreach and helps track campaign status.

  Send Email
  Type: Email Node (SMTP or integrated service)

  Function: Sends the personalized email generated by OpenAI.

  Purpose: Delivers the survey to each travel agent with contextually relevant messaging.

  🧠 Use Case:
  Targeted email outreach to travel agents.

  Collect insights or feedback via survey links.

  Use personalized messaging to improve response rates.

  📌 Benefits:
  ✅ Fully automated scraping and processing.

  ✅ Personalized at scale using OpenAI.

  ✅ Easily repeatable for different domains or campaigns.

  ✅ Centralized recordkeeping in Google Sheets.

  🛠️ Tech Stack:
  n8n: Automation and workflow management

  OpenAI: AI-based text standardization and email generation

  Firecrawl (or similar): Web scraping API

  Google Sheets: Data storage and tracking

  Email Node: Survey email delivery

nodes_used:
  ["n8n-nodes-base.emailSend","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.openAi"]

workflow_json:
  {"id":"OIDO7J5NqLAuLrKI","meta":{"instanceId":"92e36925b2d06addd7a010605535ce53ac105737436355f7e52e2980c726ed3d","templateCredsSetupCompleted":true},"name":"01 Scraping Site & Storing Records","tags":[{"id":"oKGIn6U0wpeHShTN","name":"working flow","createdAt":"2025-06-02T06:27:44.762Z","updatedAt":"2025-06-02T06:27:44.762Z"}],"nodes":[{"id":"e6b6b5d8-ae51-42e6-8f14-fa94b3b9cc5a","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-360,360],"parameters":{},"typeVersion":1},{"id":"29628132-3a79-4512-b1dd-ed5574e69363","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-340,-280],"parameters":{"width":580,"height":140,"content":"## This is workflow of scrapping list of travel agents website...\n  \n**use this for scrapping different sites that has information in standard format information information** "},"typeVersion":1},{"id":"a7575f0a-db6a-48e1-9fb8-01f8e543589b","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[240,-100],"parameters":{"options":{},"fieldToSplitOut":"message.content[\"Travel Agents\"]"},"typeVersion":1},{"id":"3cb85d6b-b0e9-4ca9-a4a1-7b241909eccc","name":"Send Email","type":"n8n-nodes-base.emailSend","position":[680,360],"webhookId":"2ce28736-1500-4766-acba-bbae4618197f","parameters":{"text":"=Dear  {{ $json['Agent Name'] }} team,\n{{ $json.Icebreaker }}\n\n{{ $json['AI Agent in Travel'] }}\n\n{{ $json['Call to Action'] }}\n\nBest Regards\nMohan Gopal\n\n{{ $json.PS }}\n\n","options":{"ccEmail":"mohan.gopal001@gmail.com"},"subject":"={{ $json.Subject }}","toEmail":"={{ $json['Email Address'] }}","fromEmail":"contact@mohangopal.com","emailFormat":"text"},"credentials":{"smtp":{"id":"OxDjXwRpd4Ll2OPw","name":"SMTP account"}},"typeVersion":2.1},{"id":"19d9b52b-5ca8-4027-98fe-d3e36fb9e229","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-360,200],"parameters":{"width":580,"height":120,"content":"## Read Scrapped and Stored Records in SpreadSheet and Send Survey Email \n** Simple Read and Compose Personalised email and send..."},"typeVersion":1},{"id":"57827b6b-5f62-4b17-99ce-d14b4d0c27bb","name":"Google Sheet - Data Store","type":"n8n-nodes-base.googleSheets","position":[440,-100],"parameters":{"columns":{"value":{"City":"={{ $json.City }}","Status":"InProgress","Country":"={{ $json.Country }}","Summary":"={{ $json.Summary }}","Website":"={{ $json.Website }}","Mail Sent":"ToDo","Telephone":"={{ $json.Telephone }}","Agent Name":"={{ $json[\"Travel Agent Name\"] }}","Email Address":"={{ $json[\"Email Address\"] }}","Survey Received":"Pending","Response Received":"Pending"},"schema":[{"id":"Agent Name","type":"string","display":true,"required":false,"displayName":"Agent Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Telephone","type":"string","display":true,"required":false,"displayName":"Telephone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Country","type":"string","display":true,"required":false,"displayName":"Country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"City","type":"string","display":true,"required":false,"displayName":"City","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Mail Sent","type":"string","display":true,"removed":false,"required":false,"displayName":"Mail Sent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Response Received","type":"string","display":true,"removed":false,"required":false,"displayName":"Response Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Survey Received","type":"string","display":true,"removed":false,"required":false,"displayName":"Survey Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":false,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1598367286,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1598367286","cachedResultName":"ScrapedList"},"documentId":{"__rl":true,"mode":"list","value":"1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk","cachedResultName":"Travel Agents List"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"eef292a7-b539-4b38-935e-27b7f6e1e871","name":"Google Sheet Data Store","type":"n8n-nodes-base.googleSheets","position":[-120,360],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1316921362,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362","cachedResultName":"TestTravelAgents"},"documentId":{"__rl":true,"mode":"list","value":"1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk","cachedResultName":"Travel Agents List"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"5428022b-1492-4ed0-8fa7-a13f1b6dd9be","name":"OpenAI1 Mail Composer","type":"@n8n/n8n-nodes-langchain.openAi","position":[100,360],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o","cachedResultName":"GPT-4O"},"options":{},"messages":{"values":[{"role":"system","content":"=You are a helpful and  intelligent writing assistant who understands Travel Domain and have experience in mailing Travel Agents about Surveys "},{"content":"Your task is to personalize an email that will encourage the travel agent to complete the survey and submit. \n\nYou will do this by taking the Travel Agents details as input, and editing 5 sections of email: Subject line, ice-breaker, AI Agent in Travel Business, Call to action and a PS field. \n\nYour template as below: \n\nSubject line: \"Is your {companyname} prepared for AI Agent Revolution.\" \n\nIcebreaker: \n\"I understand you are in the travel business doing {uniquethingsaboutthemortheirUSP} and I've been following the impact on travel business for a while. The travel industry is evolving rapidly with AI-driven tools changing how business is conducted. This survey aims to gather insights from travel agents in Malaysia to assess their awareness, operational challenges, and interest in implementing AI Agents in daily workflows.\n\nYour responses will help us:\n\nUnderstand key pain points in your current operations.\nEvaluate awareness and readiness for AI integration.\nDesign a tailored AI Agent solution to improve productivity, efficiency, and profitability for travel businesses like yours.\n\nAll responses will be kept confidential and used only for aggregate analysis.\"\n\nAI Agent in Treavel Business: \n\"AI Agents are intelligent systems that can independently perform tasks traditionally done by humans. In the travel industry, these agents can:\n\nCompile and price custom tour packages.\nAutomatically follow up with suppliers.\nManage bookings, cancellations, and customer queries.\nHandle payment tracking and reconciliation.\n\nWith automation, AI Agents can reduce manual work, increase accuracy, and free up your team to focus on customer experience and business growth.\"\n\nCall to action: \n\"Your experience matters. We're conducting a brief survey to understand how AI Agents can help travel agencies like yours save time, reduce manual work, and boost efficiency.\n\n📋 Takes less than 5 minutes\n🔐 Your responses are confidential\n📈 Get a free insights report based on aggregated results\n🎁 Early access to our AI Agent pilot program\n\n👉 Click Here to Take the Survey\n\nLet’s build smarter travel solutions together.\nThank you for being part of this industry transformation.\"\n\nPS: \"Even if you ar not interested in survey, kindly respond 'NOT INTERESTED\" in the reply. \n\nGuidelines:\n1. Your tone of voice should be \"Semi-formal conversation\". No fancy language. \n2. Do not repeat sentences or data from the input, make it more natural and human like.\n3. Make sure the Subject line is non-capitalized, even if it is gramatically incorrect. Makes it look more human.   \n4. Respond in JSON using the below format:\n{\"Subject line\":\"\",\"Icebreaker\":\"\",\"AI Agent in Treavel Business:\":\"\",\"Call to action\":\"\",\"PS\":\"\" }"},{"content":"=Agent Name:  {{ $json['Agent Name'] }}\nEmail Address: {{ $json['Email Address'] }}\nSummary: {{ $json.Summary }}\nWebsite: {{ $json.Website }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"SCKN5KUziIpM8NB7","name":"OpenAi account 5"}},"typeVersion":1.8},{"id":"13922526-19c5-495a-ba65-3cb0c77a1816","name":"OpenAI Standardise Data","type":"@n8n/n8n-nodes-langchain.openAi","position":[-120,-100],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-mini-2025-04-14","cachedResultName":"GPT-4.1-MINI-2025-04-14"},"options":{},"messages":{"values":[{"role":"system","content":"=Yor role is to extract the complete list of travel Agents information from the incoming data and standardise them in the below structured format for storing in spreadsheet. \n\nYour output has to be in a structured format that includes the \n - Agent name\n - Summary: summary from introduction section, \n - Email address, \n - Telephone number,\n - Website,\n- Country,\n- City\n\nYou will receive an input of <scrapped-website>\n\nRespond in JSON format:\n{\n    \"Travel Agent Name\": \"\",\n    \"Summary\": \"\",\n    \"Email Address\": \"\",\n    \"Telephone\": \"\",\n    \"Website\": \"\"\n    \"Country\":\"\"\n    \"City\"\": \"\"\n}\ninput N/A where data is not available "},{"role":"system","content":"=<scrapped-website>\n{{ $json.data.markdown }}\n</scrapped-website> "}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"SCKN5KUziIpM8NB7","name":"OpenAi account 5"}},"typeVersion":1.8},{"id":"f6fda879-81e2-4aa6-ada4-5fff6e645ba4","name":"Google Sheet Update Records","type":"n8n-nodes-base.googleSheets","position":[460,360],"parameters":{"columns":{"value":{"PS":"={{ $json.message.content.PS }}","City":"={{ $('Google Sheet Data Store').item.json.City }}","Status":"In-Progress","Country":"={{ $('Google Sheet Data Store').item.json.Country }}","Subject":"={{ $json.message.content['Subject line'] }}","Summary":"={{ $('Google Sheet Data Store').item.json.Summary }}","Website":"={{ $('Google Sheet Data Store').item.json.Website }}","Mail Sent":"Sent","Telephone":"={{ $('Google Sheet Data Store').item.json.Telephone }}","Agent Name":"={{ $('Google Sheet Data Store').item.json['Agent Name'] }}","Icebreaker":"={{ $json.message.content.Icebreaker }}","Email Address":"={{ $('Google Sheet Data Store').item.json['Email Address'] }}","Call to Action":"={{ $json.message.content['Call to action'] }}","Survey Received":"Pending","Response Received":"Pending","AI Agent in Travel":"={{ $json.message.content['AI Agent in Treavel Business'] }}"},"schema":[{"id":"Agent Name","type":"string","display":true,"required":false,"displayName":"Agent Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"removed":false,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Telephone","type":"string","display":true,"required":false,"displayName":"Telephone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Country","type":"string","display":true,"required":false,"displayName":"Country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"City","type":"string","display":true,"required":false,"displayName":"City","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Mail Sent","type":"string","display":true,"required":false,"displayName":"Mail Sent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Response Received","type":"string","display":true,"required":false,"displayName":"Response Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Survey Received","type":"string","display":true,"required":false,"displayName":"Survey Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Subject","type":"string","display":true,"removed":false,"required":false,"displayName":"Subject","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Icebreaker","type":"string","display":true,"removed":false,"required":false,"displayName":"Icebreaker","defaultMatch":false,"canBeUsedToMatch":true},{"id":"AI Agent in Travel","type":"string","display":true,"removed":false,"required":false,"displayName":"AI Agent in Travel","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Call to Action","type":"string","display":true,"removed":false,"required":false,"displayName":"Call to Action","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PS","type":"string","display":true,"removed":false,"required":false,"displayName":"PS","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Email Address"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1316921362,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362","cachedResultName":"TestTravelAgents"},"documentId":{"__rl":true,"mode":"id","value":"=1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"c6ab2fe5-8876-4673-a5f3-6eacd4625a4c","name":"HTTP Scrape Website","type":"n8n-nodes-base.httpRequest","position":[-340,-100],"parameters":{"url":"https://api.firecrawl.dev/v1/scrape","method":"POST","options":{},"jsonBody":"{\n  \"url\": \"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/\",\n  \"formats\": [\n    \"markdown\"\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"pbJsYdisPYx3PSPs","name":"Header Auth account 3"}},"typeVersion":4.2}],"active":false,"pinData":{"HTTP Scrape Website":[{"json":{"data":{"markdown":"- [Meetings & Events](https://www.japanmeetings.org/)\n- [Muslim Guide](https://www.japan.travel/en/my/muslim-guide/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n\n- Select Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)\n\n\n[![JNTO](https://asset.japan.travel/image/upload/v1581485582/static/svg/common/img_logo_japan-endless-discovery.svg)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n- HOME\n- Destinations\n- Things to Do\n- Plan Your Trip\n- Stories & Features\n- News\n\n- [![](https://www.japan.travel/static/f/img/iconmonstr-facebook-5.4c6310fccfc8.svg)](https://www.facebook.com/Visit.My.Japan)\n- [![](https://www.japan.travel/static/f/img/iconmonstr-instagram-15.87f48f84bf94.svg)](https://www.instagram.com/visitmyjapan/)\n- [![](https://www.japan.travel/static/f/img/iconmonstr-youtube-10.6f5ac725789b.svg)](https://www.youtube.com/c/JNTOMALAYSIACHANNEL)\n\n- ![](https://www.japan.travel/static/f/img/iconmonstr-globe-thin.b44ced265bc3.svg)\n\n\n- 简体中文\n- 繁體中文（香港）\n- 繁體中文（臺灣）\n- India (English)\n- Bahasa Indonesia\n- 한국어\n- ภาษาไทย\n- Tiếng Việt\n- Singapore (English)\n- Philippines (English)\n- Malaysia (English)\n- Australia/New Zealand (English)\n- Français\n- Deutsch\n- Italiano\n- Español\n- United Kingdom (English)\n- Nordic countries（English）\n- Canada (English)\n- Canada (Français)\n- United States (English)\n- Mexico (español)\n- Português\n- العربية\n- Japan(日本語)\n- Global (English)\n\n[![JNTO](https://asset.japan.travel/image/upload/v1581485582/static/svg/common/img_logo_japan-endless-discovery.svg)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n[HOME](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/) Back\n\n- [Destinations](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/)\n\n\n\n\n- All\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_hokkaido.b7b80abd4549.svg)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_tohoku.23e16b69e32c.svg)\n\n\n\n\n\n  - - [Aomori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/)\n- [Akita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/)\n- [Iwate](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/)\n- [Yamagata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/)\n- [Miyagi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/)\n- [Fukushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/)\n\n![](https://www.japan.travel/static/f/img/map_hokuriku.971b7d8aaf59.svg)\n\n- - [Niigata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/)\n- [Toyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/toyama/)\n- [Ishikawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/)\n\n![](https://www.japan.travel/static/f/img/map_kanto.5c4544e53975.svg)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Kanagawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/)\n- [Chiba](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/chiba/)\n- [Saitama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/saitama/)\n- [Ibaraki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/ibaraki/)\n- [Tochigi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/)\n- [Gunma](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/)\n\n![](https://www.japan.travel/static/f/img/map_chubu.5b6f65f92ac3.svg)\n\n- - [Yamanashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/)\n- [Shizuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/shizuoka/)\n- [Gifu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/)\n- [Aichi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/aichi/)\n- [Mie](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/)\n\n![](https://www.japan.travel/static/f/img/map_kansai.93e83e6aaa46.svg)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/)\n- [Shiga](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/)\n- [Hyogo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/)\n- [Wakayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/wakayama/)\n\n![](https://www.japan.travel/static/f/img/map_chugoku.702fcee42844.svg)\n\n- - [Tottori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/tottori/)\n- [Shimane](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/)\n- [Okayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/)\n- [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/)\n- [Yamaguchi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/yamaguchi/)\n\n![](https://www.japan.travel/static/f/img/map_shikoku.8f9ef0eea1eb.svg)\n\n- - [Tokushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/tokushima/)\n- [Kagawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/)\n- [Ehime](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/ehime/)\n- [Kochi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kochi/)\n\n![](https://www.japan.travel/static/f/img/map_kyushu.e2ab055eccbf.svg)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/)\n- [Saga](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/saga/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/)\n- [Oita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/)\n- [Kumamoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kumamoto/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/)\n- [Kagoshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/)\n\n![](https://www.japan.travel/static/f/img/map_okinawa.83b83fa44d8c.svg)\n\n- Major cities\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_hokkaido.b7b80abd4549.svg)\n\n\n\n\n\n  - - [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n- [Asahikawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/asahikawa-and-hokkaido-north/)\n- [Hakodate](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/hakodate-and-hokkaido-south/)\n- [Kushiro](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/kushiro-and-hokkaido-east/)\n\n![](https://www.japan.travel/static/f/img/map_tohoku.23e16b69e32c.svg)\n\n- - [Sendai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/sendai-area/)\n- [Aomori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/aomori-city-and-around/)\n- [Akita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/akita-and-around/)\n- [Morioka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/morioka-and-around/)\n- [Tsuruoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/tsuruoka-and-sakata/)\n- [Fukushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/fukushima-city/)\n\n![](https://www.japan.travel/static/f/img/map_hokuriku.971b7d8aaf59.svg)\n\n- - [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Niigata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/niigata-city-and-around/)\n- [Toyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/toyama/toyama-and-around/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/nagano-and-around/)\n- [Matsumoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/matsumoto-and-around/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/fukui-and-around/)\n\n![](https://www.japan.travel/static/f/img/map_kanto.5c4544e53975.svg)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Yokohama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/yokohama-and-around/)\n- [Saitama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/saitama/new-urban-center-area/)\n- [Chiba](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/chiba/)\n- [Utsunomiya](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/utsunomiya-area/)\n- [Maebashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/maebashi-and-akagi/)\n\n![](https://www.japan.travel/static/f/img/map_chubu.5b6f65f92ac3.svg)\n\n- - [Nagoya](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/aichi/nagoya-station-and-around/)\n- [Fujiyoshida](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/mt-fuji-and-around/)\n- [Hamamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/shizuoka/hamamatsu-and-around/)\n- [Gifu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/gifu-and-around/)\n- [Takayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/takayama-and-around/)\n- [Iseshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/ise-bay-area/)\n\n![](https://www.japan.travel/static/f/img/map_kansai.93e83e6aaa46.svg)\n\n- - [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/osaka-bay-area/)\n- [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/around-kyoto-station/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/nara-city-and-around/)\n- [Kobe](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/kobe-and-around/)\n- [Himeji](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/himeji-and-around/)\n- [Otsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/otsu-area/)\n\n![](https://www.japan.travel/static/f/img/map_chugoku.702fcee42844.svg)\n\n- - [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/hiroshima-city/)\n- [Okayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/okayama-and-around/)\n- [Kurashiki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/kurashiki/)\n- [Matsue](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/matsue-and-around/)\n- [Tottori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/tottori/tottori-and-around/)\n- [Shimonoseki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/yamaguchi/shimonoseki/)\n\n![](https://www.japan.travel/static/f/img/map_shikoku.8f9ef0eea1eb.svg)\n\n- - [Matsuyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/ehime/matsuyama-and-around/)\n- [Takamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/takamatsu-area/)\n- [Tokushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/tokushima/tokushima-city/)\n- [Kochi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kochi/kochi-and-around/)\n\n![](https://www.japan.travel/static/f/img/map_kyushu.e2ab055eccbf.svg)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Kumamoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kumamoto/kumamoto/)\n- [Kagoshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/kagoshima-and-around/)\n- [Beppu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/beppu-and-yufuin-around/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-city-and-around/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/miyazaki/)\n\n![](https://www.japan.travel/static/f/img/map_okinawa.83b83fa44d8c.svg)\n\n- - [Naha](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/naha-and-the-main-island/)\n- [Ishigaki Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/ishigaki-island-and-around/)\n- [Miyako Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Kerama Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/the-kerama-islands/)\n\n- Passion\n\n\n\n\n\n\n\n\n\n\n  - - [Mt. Fuji](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/fuji-guide/)\n- [Tokyo Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/tokyo-islands/)\n- [Zao](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/zao-area/)\n- [Yakushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/yakushima/)\n- [Japan Alps](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/the-nagano-alps/)\n- [Towada](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/lake-towada-and-around/)\n\n- - [Niseko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/niseko-and-nearby-ski-resorts/)\n- [Minakami](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/minakami-area/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/nagano-and-around/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/miyazaki-surf-sports/)\n- [Miyako](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Ishigaki Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/ishigaki-island-and-around/)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/central-kyoto/)\n- [Hongu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/wakayama/hongu/)\n- [Kiso](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/kiso/)\n- [Koka & Shigaraki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/koga-and-shigaraki/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/nara-park-and-around/)\n- [Hida Takayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/takayama-and-around/)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/dotonbori-and-shinsaibashi/)\n- [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n- [Ginza, Nihonbashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/ginza-and-nihombashi/)\n- [Ise](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/ise-bay-area/)\n- [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n\n- - [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Setouchi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/setouchi-islands/)\n- [Kiyosato](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/kiyosato-and-around/)\n- [Hakone](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/hakone-and-around/)\n- [Roppongi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/roppongi-and-akasaka-area/)\n\n- - [Beppu & Yufuin (Onsen)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/beppu-and-yufuin-around/)\n- [Miyako Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Suwa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/suwa/)\n- [Ginzan Onsen](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1798/)\n- [Nagasaki Islands](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-islands/)\n\n- - [Yokohama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/yokohama-and-around/)\n- [Sendai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/sendai-area/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/osaka-castle-and-around/)\n- [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/hiroshima-city/)\n\n- Vacation Style\n\n\n\n\n\n\n\n\n\n\n  - - [Kumano Kodo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/979/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/fukui-and-around/)\n- [Shimane](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/)\n- [Shonai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/tsuruoka-and-sakata/)\n- [Shikoku Karst](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/816/)\n\n- - [Oki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/oki/)\n- [Amami Oshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/amami-oshima-and-nearby-islands/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-islands/)\n- [Sado](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/sado-island/)\n\n- - [Beppu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/716/)\n- [Hakone](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1572/)\n- [Kusatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1518/)\n- [Kinosaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/2005/)\n- [Hachimantai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1824/)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/)\n- [Nikko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/nikko-area/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/)\n- [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Omihachiman](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/omihachiman-area/)\n- [Aizuwakamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/aizuwakamatsu-and-oze/)\n\n- - [Shiretoko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/2143/)\n- [Hachimantai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/hachimantai-area/)\n- [Kerama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/the-kerama-islands/)\n- [Shirakami](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/shirakami-area/)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/)\n- [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b9/12/b9121642-d05b-4426-8ac9-42397a24a4b0/guide_luxury_b2glwo)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/c6/d2/c6d2dd0b-53f0-48cb-afbb-8499c4d34051/nagano2474_15-thumbnail_fgejbt)SNOW LIKE NO OTHER](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/snow/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ae/2a/ae2a9ec6-f70a-4e5f-9713-6f40ec2fc8bc/05_at_ka7sji)Action & Adventure](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/action-and-adventure/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/35/cc/35ccc726-bb6e-4978-86e7-a8c0ea9aa27e/kv_cycling_r00t6j)Cycling](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/cycling/)\n\n- [Things to Do](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/)\n\n\n\n\n- Nature & Outdoor\n\n\n\n\n\n\n\n\n\n\n- [Diving in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/diving/)\n- [Skiing in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/skiing/)\n- [Seasonal Flowers in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/flowers/)\n- [Sustainable Outdoors](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/adventure-great-outdoors/)\n- [Adventure](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/adventure/)\n\n- [Off the Beaten Track in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/off-the-beaten-track/)\n- [Scenic Spots](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-spot/)\n- [World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/)\n- [Home Stays & Farm Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/a0/01a0bf64-6b31-49a8-8fe2-137b0e0343cc/sports_da6kbj)Sports & Outdoors](https://www.japan.travel/en/sports/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b0/15b0ec10-8a32-4cac-98d0-e815b5454e52/hokkaido1460_1-thumbnail_m1jtwa)Japan's National Parks](https://www.japan.travel/national-parks/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/69/97/6997d16d-3a64-4714-8117-b3fbd1d523d6/it1823_010_wgbq8b)Nature (Experiences in Japan)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/nature/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/2d/012dca0a-2a91-439a-943d-cb1a9a8142bc/it649_003_fby2dd)Outdoor (Experiences in Japan)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/outdoor/)\n\n- Tradition\n\n\n\n\n\n\n\n\n\n\n- [Japanese Gardens](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/japanese-garden/)\n- [Japanese Crafts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/traditional-craft-experiences-and-workshops/)\n- [Temple Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/temple-stays/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n\n- [Festivals and Events](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/festivals-and-events/)\n- [Theater in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/theater/)\n- [Japanese Tea Ceremony](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/tea-ceremony/)\n- [Cultural Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/cultural-experiences/)\n- [Culture in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/culture/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b5/56/b5568a6e-46f6-4d15-912e-8d0387ab9205/it551_001_bsavbv)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/tradition/)\n\n- Food & Drink\n\n\n\n\n\n\n\n\n\n\n- [Gastronomy](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/)\n- [Local Cuisine Eastern Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-cuisine-eastern-japan/)\n- [Local Cuisine Western Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-cuisine-western-japan/)\n- [Local Street Food](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-street-food-favorites-budget-restaurant-japan/)\n- [Japan's Local Ekiben](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/experience-japans-local-ekiben-culture/)\n- [Yakitori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/yakitori-a-guide-to-chicken-skewers/)\n\n- [Japanese Whisky](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-whisky/)\n- [Vegetarian and Vegan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/vegetarian-guide/)\n- [Sushi in Japan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/sushi-in-japan/)\n- [Japanese Sake Breweries](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/sake/)\n- [Sake 101](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/sake-shochu/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/30/06/3006bba5-2d48-4b49-9840-fd58db695de8/02_cuisine_it245_001_fvjz7r)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/cuisine/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/47/be/47bec00d-f539-4b93-bbba-68dbee111697/kv_gastronomy_mzcgm1)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/gastronomy/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/c2/99/c299c1bc-8607-4b75-a06d-b7378a2d7796/seafoodkaiseki_0166_m_1_dokhfz_vadwpe)Gastronomy](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/)\n\n- Art & Culture\n\n\n\n\n\n\n\n\n\n\n- [Art Museums](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/art-museum/)\n- [Architecture](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/explore-the-world-of-japanese-architecture/)\n- [Performing Arts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/performing-arts/)\n- [Theatre](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/travel-directory/Theatre/)\n\n- [Art Festivals](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/art-festivals/)\n- [Japanese Anime and Comics](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-anime-and-comics/)\n- [Japanese Ceramics](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/ceramics/)\n- [Local Crafts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/local-craft/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/36/0136d4e8-2bbd-4fcf-80c9-0f3b3c411171/it1027_003_zyogb4)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/art/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/51/b3/51b3db5a-1d2c-4057-88d4-451817c9db02/kv_arts-and-culture_fg6dmu)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/arts-and-culture/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/65/75/65758e76-606a-426b-bff9-535767c1ae6f/saitama_s_id45_2-thumbnail_gdy9ld)Art Festivals](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/art-festivals/)\n\n- Cities\n\n\n\n\n\n\n\n\n\n\n- [Scenic Spots](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-spot/)\n- [Scenic Night Views](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-night-view/)\n- [Natural Wonders](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/natural-wonder/)\n- [Theme Parks](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/theme-park/)\n\n- [Nightlife](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/travel-directory/Nightlife/)\n- [Samurai & Ninja](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/samurai-and-ninja/)\n- [Iconic Architecture](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/iconic-architecture/)\n- [Shopping](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/shopping/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/83/1583fbdc-dd72-4fec-929e-cedd0e1579f5/03_city_jimu0285_011_cpoieb-thumbnail_ciz5al)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/cities/)\n\n- Relaxation\n\n\n\n\n\n\n\n\n\n\n- [Onsen](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/onsen/)\n- [Wellness Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/wellness-travel-in-japan/)\n- [Japanese Ryokan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-ryokan/)\n- [Home Stays & Farm Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n- [A Guide to Stargazing in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/a-guide-to-stargazing-in-japan/)\n\n- [Japanese Gardens](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/japanese-garden/)\n- [Flowers](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/flowers/)\n- [Relaxation in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/relaxation/)\n- [Forest Bathing (Shinrin-yoku)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/forest-bathing/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/fd/49/fd498f7f-2bf2-4e5d-b783-4013fd77b15e/it3798_002_zl26z3)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/relaxation/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ec/61/ec612a72-0e9f-4b14-bf2c-de0e9a9424e1/kv_accommodations_q9g18f)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/accommodations/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ff/79/ff797d2f-9674-4310-b67d-19c22325e57e/amana_s_id54_3_wivpwh)Wellness Travel](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/wellness-travel-in-japan/)\n\n- Featured\n\n\n\n\n\n\n\n\n\n\n- [Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/)\n- [Sports](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/)\n- [Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/)\n- [National Parks](https://www.japan.travel/national-parks/)\n- [Japan's Local Treasures](https://www.japan.travel/en/japans-local-treasures/)\n\n- [Japan Heritage](https://www.japan.travel/japan-heritage/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n- [Snow Like No Other](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/snow/)\n- [EXPO 2025](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/expo2025/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/1d/ac/1daced8c-aea5-4788-907c-f0bbb2a68b0c/20190107_dogo_onsen_honkan_it485_01_gfwdiq)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b0/15b0ec10-8a32-4cac-98d0-e815b5454e52/hokkaido1460_1-thumbnail_m1jtwa)National Parks](https://www.japan.travel/national-parks/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b3/15b3cf3d-7b36-485c-9d73-2463eb9b814a/index_mainimage_yzrzta-thumbnail_fvq3nl)Japan Heritage](https://www.japan.travel/japan-heritage/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/21/3f/213fe6a7-d80a-467f-a410-0b524da7c181/001_takachiho_tuth2y_1_wzydg1)Sustainable Travel in JAPAN](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- [Plan Your Trip](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/)\n\n\n\n\n- Traveling to Japan\n\n\n\n\n\n\n\n\n\n\n  - - [Visa Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/visa-info/)\n- [Getting to Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-to-japan/)\n- [Airport Access](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/airport-access/)\n- [COVID-19: Practical Information for Traveling to Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/practical-coronavirus-information/)\n\n- - [Shopping](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/shopping-in-japan)\n- [Anime Tourism](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-anime-and-comics/)\n- [Temple Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/temple-stays/)\n- [Countryside Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n- [Accessible Tourism](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/)\n\n- - [Hokkaido Great Outdoors](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/exploring-mother-natures-bounty-in-hokkaido)\n- [Scenic World Heritage in Tohoku](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/scenic-world-heritage-in-tohoku)\n- [Shikoku’s Nature and Traditions](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/shikokus-fascinating-nature-and-longstanding-traditions)\n- [Southern Kyushu by Rail](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/kyushus-hot-springs-by-rail)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/dc/5a/dc5ab715-f26d-4c1d-a6ac-a912dded8281/hokkaido1462_2-thumbnail_b2qbca)First-Time Visitor Info](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/de/a9/dea98934-353a-43a1-a62c-f2c572ff2309/nagano117_3_wfecpu)Online Reservation Sites](https://www.japan.travel/en/plan/online-reservation-sites/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/f0/e0/f0e0eabe-b8ea-4791-8bf6-eaed459f1ef8/image_travel_clkhrk)Stories & Guides](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story-and-guide/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/97/f8/97f8f3e9-33ba-4d34-9ff8-7aa36ab652f7/display_sfotql-thumbnail_soxoyb)Itineraries](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/)\n\n- Getting Around\n\n\n\n\n\n\n\n\n\n\n  - - [Traveling by Rail](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/traveling-by-rail/)\n- [How to Travel by Train and Bus](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/how-to-travel-by-train-and-bus-in-japan/)\n- [JR Rail Passes](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/jr-rail-passes/)\n- [Scenic Railways](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/scenic-railways/)\n- [Renting a Car](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-around/cars/)\n- [Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- - [Travel Brochures](https://www.japan.travel/brochures/eng/index.php)\n- [Useful Apps](https://www.japan.travel/en/plan/useful-apps/)\n- [Online Reservation Sites](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/online-reservation-sites/)\n- [Eco-friendly Accommodation](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/eco-friendly-accommodation/)\n- [Luxury Accommodations](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/accommodations/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n\n- - [Traveling With a Disability](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/traveling-with-disability/)\n- [Hands-free Travel](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-around/luggage-storage/)\n- [How to Book a Certified Tour Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/how-to-book-a-certified-tour-guide/)\n- [Volunteer Guides](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/list-of-volunteer-guides/)\n- [Tourist Information Center](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/tic/)\n- [FAQ](https://faq.japan-travel.jnto.go.jp/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/93/e0/93e0d53c-bb73-4b2f-9829-06a40866bcdc/1571309427013-69c5e78f2aec88a3c49ccde4ba038afb-0-pixta_35407445_m-auto-oriented_r6bhx4)Travel Brochures](https://www.japan.travel/brochures/eng/index.php) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/e6/ea/e6ea4fbb-f64a-41b2-a786-e94b519b4174/tempura_mjl18v-thumbnail_u1yyrl)Restaurant Search](https://dining.japan.travel/en/restaurant/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/2a/44/2a44220a-cf25-45d3-a716-2cd1f117c3c7/001_takachiho_tuth2y)Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/de/a9/dea98934-353a-43a1-a62c-f2c572ff2309/nagano117_3_wfecpu)Online Reservation Sites](https://www.japan.travel/en/plan/online-reservation-sites/)\n\n- About Japan\n\n\n\n\n\n\n\n\n\n\n  - - [World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/)\n- [Fuji Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/fuji-guide/)\n- [Japanese Ryokan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-ryokan/)\n- [Japanese Manners](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/understanding-and-mastering-japanese-manners-and-etiquette/)\n- [Useful Apps](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/useful-apps/)\n- [Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- - [Spring in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/spring-guide/)\n- [Summer in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/summer-guide/)\n- [Autumn in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/autumn-guide/)\n- [Winter in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/winter-guide/)\n\n- - [Cherry Blossom Forecast](https://www.japan.travel/en/see-and-do/cherry-blossom-forecast-2024/)\n- [Autumn Leaves Forecast](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/autumn-leaves-forecast-2023/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ef/db/efdb4307-9aa9-4780-8768-3d92d52d69de/pixta_24426523-thumbnail_xkw2ln)Weather & Geography](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/weather/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b6/cf/b6cfd4f8-73fc-4cc8-9002-9cc5c724357a/toyama1225_1_okcgdj)Autumn Leaves Forecast](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/autumn-leaves-forecast-2023/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/0e/0b/0e0b9cd7-ed76-4298-b986-e356f66af70b/wh017_3063_3_bqmvjf)World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/2a/44/2a44220a-cf25-45d3-a716-2cd1f117c3c7/001_takachiho_tuth2y)Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- Essential Information\n\n\n\n\n\n\n\n\n\n\n- [Japan Visitor Hotline](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/hotline/)\n- [Travel Insurance in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/travel-insurance-in-japan/)\n- [Japan Safe Travel Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/japan-safe-travel-information/)\n- [Local Laws](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/local-laws/)\n- [Visa Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/visa-info/)\n\n- [Accessibility in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/)\n- [Vegetarian Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/vegetarian-guide/)\n- [Muslim Travelers](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/muslim-travelers/)\n- [Safety Tips](https://www.jnto.go.jp/safety-tips/eng/index.html)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/83/79/83791e7b-eec6-40c3-930a-f95996e52633/pixta_s_id59_1-thumbnail_ahkhgl)Accessibility in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/35/95/3595403e-882f-42bb-b5a3-917d55f18b61/img_hotline_2_mrmbil)Japan Visitor Hotline](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/hotline/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/81/12/8112222a-506b-4752-9704-2ec7e7a73e98/pixta_s_id35_1-thumbnail_ysowpg)Travel Insurance in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/travel-insurance-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/9d/fd/9dfd0d56-ad5f-4d75-87fe-a616046ced25/safety_tips_192_navy_rh4dkt)Safety Tips](https://www.jnto.go.jp/safety-tips/eng/index.html)\n\n- [Stories & Features](https://www.japan.travel/en/my/story/)\n\n\n\n\n- [Cuisine](https://www.japan.travel/en/my/story/cuisine/)\n- [Nature](https://www.japan.travel/en/my/story/nature/)\n- [Tradition](https://www.japan.travel/en/my/story/tradition/)\n- [Luxury](https://www.japan.travel/en/my/story/luxury/)\n- [Guide](https://www.japan.travel/en/my/story/guide/)\n- [Winter](https://www.japan.travel/en/my/story/winter/)\n- [All New Stories](https://www.japan.travel/en/my/story/)\n\n- [Create Your Joyful Japan](https://www.japan.travel/en/my/create-your-joyful-japan/application/)\n- [The Latest Itinerary](https://www.japan.travel/en/my/the-latest-itinerary/)\n- [Area Travel Pass](https://www.japan.travel/en/my/area-travel-pass/)\n- [Travelers Blog](https://www.japan.travel/en/my/travelers-blog/)\n- [Western Japan Sample Itinerary](https://www.japan.travel/en/my/westernjapan-promotion/)\n- [Tohoku Colors](https://www.japan.travel/tohoku-colors/)\n\n- [![The Latest Itinerary](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/d6/ca/d6ca88de-c9ab-46b5-8192-e0945967de40/kv_ilcuap)The Latest Itinerary](https://www.japan.travel/en/my/the-latest-itinerary/)\n- [![Enjoy Smart Trip with Travel Passes](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/9b/46/9b46471d-f265-4a57-93ea-5b74b76653d5/enjoy_smart_trip_with_travel_passes_yeefzx)Enjoy Smart Trip with Travel Passes](https://www.japan.travel/en/my/enjoy-smart-trip-travel-passes/)\n- [![Fascinating Suburb Japan](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/32/e6/32e66ae0-28b1-4181-a925-3ca5af808877/fascinating_suburb_japanhetsuda_oy8ndw)Fascinating Suburb Japan](https://www.japan.travel/en/my/fascinating-suburb-japan/)\n- [![First Winter in Japan](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/49/8a/498a87be-4393-470d-90e8-eb8ccafc64c0/first_winter_in_japan_mcb8oc)First Winter in Japan](https://www.japan.travel/en/my/your-first-winter-japan/)\n\n- [News](https://www.japan.travel/en/my/news/)\n\n\n\n\n- [News from JNTO MY](https://www.japan.travel/en/my/news/)\n- [News from JNTO & Partners](https://www.japan.travel/en/travel-directory/latest-news/)\n- [Travel Trade News](https://www.japan.travel/en/my/travel-trade/news/)\n\n- [Newsletters for Travelers](https://www.japan.travel/en/my/news-letter/)\n- [Newsletters for Professionals](https://www.japan.travel/en/my/travel-trade/newsletter-partner-exclusive/)\n\n- - [Meetings & Events](https://www.japanmeetings.org/)\n- [Muslim Guide](https://www.japan.travel/en/my/muslim-guide/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n\nMy Favorites\n\n- **${v.title}**\n${v.desc \\| trunc(25)}\n\n\n- **${v.title}**\n${v.desc \\| trunc(25)}\n\n\n[View All](https://www.japan.travel/favorite)\n\nUse the\n\n## Planning a Trip to Japan?\n\nShare your travel photos with us by hashtagging your images with #visitjapanjp\n\n![](https://res-3.cloudinary.com/jnto/image/upload/w_750,h_1100,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1)\n\n# List of Travel Agencies in Malaysia\n\n**Select the state to find out your preferred travel agencies :**\n\n[Kuala Lumpur](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#kualalumpur)[Selangor](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#selangor)[Johor](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#johor)[Penang](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#penang)[Sabah](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#sabah)\n\n## Kuala Lumpur\n\n### Apple Vacations Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | We are a travel agency which mainly organize group package to all over the world. For previous year before Covid pandemic, we sent more than 15,000 customer annually to Japan from Hokkaido to Okinawa. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | HQ: Wisma Apple, 2nd Floor, 42-2 Jalan Sultan Ismail, 50250 Kuala Lumpur<br>Branch: Lot S323A, Second Floor (New Wing and Highstreet)<br>1 Utama Shopping Centre<br>No. 1, Lebuh Bandar Utama, Bandar Utama, 47800 Petaling Jaya, Selangor |\n| Tel | 03-2705 8299 |\n| Email | [asia@applevacations.my](mailto:asia@applevacations.my) |\n| Website | [Apple Vacations Homepage](https://www.applevacations.my/en/) |\n| SNS | [Apple Vacations Facebook](https://www.facebook.com/applevacationsmy) |\n\n### Best Holiday Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_194,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/f7/93/f7932791-d876-405f-9125-7bcbdba9cc69/best_holiday_logo_-_vince_koh_aufrz2)\n\n|     |     |\n| --- | --- |\n| Introduction | Established in 5th August 2002, Best Holiday is a travel agent that works to provide the most valuable and quality tour packages. With the foundation build on China tour packages, Best Holiday is among the very few travel agents that could provide quality tour packages at a very competitive price. |\n| Types | FIT, Package |\n| Address | 3.11-3.15 3rd Floor, Wisma Cosway, Jalan Raja Chulan 50200 Kuala Lumpur. |\n| Tel | +603-2141-6333 |\n| Email | [sales@bestholiday.com.my](mailto:sales@bestholiday.com.my) |\n| SNS | [Best Holiday Facebook](https://www.facebook.com/bestholiday.my) |\n\n### BMC Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Incentive and business travel |\n| Address | Megan Avenue 1, 189 Jalan Tun Razak, Block A, 2nd Floor, Unit 7 and 8, 50400 Kuala Lumpur, Selangor |\n| Tel | 03-2161 1448 |\n| Email | [incentive@bmctravel.com](mailto:incentive@bmctravel.com) |\n| Website | [BMC Travel Homepage](https://www.bmctravel.com/) |\n\n### Corporate Information Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/8b/8b/8b8bc0b2-7fbd-42fa-b41a-f39629e88137/corporateinformationtravel_logo_ldlyc6)\n\n|     |     |\n| --- | --- |\n| Introduction | Airline Reservation & Ticketing, MICE, Holiday Packages, Golf Adventure, Pick A Trip Travel App, Transportation & Guide Services, Muslim Travel, Student Travel, Travel Insurance, Visa Application |\n| Types | FIT, Muslim, MICE, Students |\n| Address | Mid Valley Branch: B-1-3 & B-1-4, (1/F, Block B), Northpoint Offices, Mid Valley City, No. 1, Medan Syed Putra Utara, 59200 Kuala Lumpur, Malaysia.<br>Bukit Jalil Branch: J-13-2 & J-13-3, Pusat Perdagangan Bandar Bukit Jalil, Persiaran Jalil 1, Bukit Jalil, 57000 Kuala Lumpur, Malaysia. |\n| Tel | 03 9212 0011 |\n| Email | [askme@cit.travel](mailto:askme@cit.travel) |\n| Website | [Corporate Information Travel Homepage](https://cit.travel/) |\n| SNS | [Corporate Information Travel Facebook](https://www.facebook.com/cit.travel/)<br>[Corporate Information Travel Instagram](https://www.instagram.com/cit.travel/)<br>[Corporate Information Travel Twitter](https://twitter.com/corpinfotravel) |\n\n### Eden Tours & Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/eb/41/eb41b9e2-68a7-466c-a170-d766797285ce/eden_old_logo_-_joe_yu_ta5esf)\n\n|     |     |\n| --- | --- |\n| Introduction | Eden Tours & Travel Sdn Bhd (Eden) provide individual and group travel services to both leisure and corporate clients. We offer services from travel consultation, ticketing, hotel/accommodation reservations, all-inclusive packages, visa applications, free & easy holidays (FIT) to corporate meeting, convention & incentive travel programs and customise travel services. |\n| Types | Ticketing, FIT, Private Group, Group Package, Customised Group, MICE |\n| Address | No 290, 1st Floor, Jalan Pudu, 55100 Kuala Lumpur, Malaysia |\n| Tel | 603-21483880/ 30008882 |\n| Email | [mice@edenvacation.com](mailto:mice@edenvacation.com) |\n| Website | [Eden Tours & Travel Homepage](http://edenvacation.com/) |\n| SNS | [Eden Tours & Travel Facebook](https://www.facebook.com/EdenToursKL) |\n\n### Esplanad Holiday Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Group Tour Travel |\n| Address | 79-2, Jalan Dwitasik 1, Dataran Dwitasik, 56000 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-91736300 |\n| Email | [info@esplanad.com.my](mailto:info@esplanad.com.my) |\n| SNS | [Esplanad Holiday Facebook](https://www.facebook.com/EsplanadHoliday/?locale=ms_MY) |\n\n### Feel Japan with K (M) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_133,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/a9/11a9b78d-92d1-4cc3-860c-69666a470660/5e07366e-f358-4ff2-833b-d3edd4c87c25_-_feel_japan_k_jp1rxo)\n\n|     |     |\n| --- | --- |\n| Introduction | Providing Muslim Tour packages for Muslim tourist, travelers to Japan.<br>Developing Japan as the destination of choice for Malaysian Muslim tourist.<br>Sales, marketing and development of Muslim Travel Packages to Japan in Malaysia since 2011.<br>Wholesaler for Muslim Tour Packages to Japan for Travel Agencies in Malaysia, Indonesia and Singapore, |\n| Types | FIT, Package, Muslim, Education |\n| Address | L 12-03A, Wangsa Maju 118 No.8, Jalan Wangsa Delima Wangsa Maju 53300 Kuala Lumpur |\n| Tel | +6013-702-3981 |\n| Email | [feeljapankmalaysia@gmail.com](mailto:feeljapankmalaysia@gmail.com) |\n| Website | [Feel Japan with K (M) Homepage](http://www.feeljapank.com/index.html) |\n\n### Golden Tourworld Travel (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_145,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b4/5e/b45e54cf-120e-441d-87a9-b416b0d2f336/gtt_logo_-_ricky_wai_xgrwkf)\n\n|     |     |\n| --- | --- |\n| Introduction | Malaysia Outbound Travel & Tour Agency |\n| Types | FIT, Package, MICE, Muslim |\n| Address | No. 72, Wisma GTT, Cangkat Bukit Bintang, 50200 Kuala Lumpur. Malaysia |\n| Tel | +60321187228 |\n| Email | [enquiry@gtt.com.my](mailto:enquiry@gtt.com.my) |\n| Website | [Golden Tourworld Travel Homepage](https://online.flipbuilder.com/yrkz/igln/) |\n| SNS | [Golden Tourworld Travel Facebook](https://www.facebook.com/GoldenTourworldTravelMY) |\n\n### Golden Tropics Travel And Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/eb/e3/ebe30d11-24b5-40f0-9f13-39f63c3ad085/copy_of_logo_-_kenny_gtt_ivvsun)\n\n|     |     |\n| --- | --- |\n| Introduction | Our company is more specialist on FIT and Incentive Travel to Japan and Korea. Every year we are sending about 500-800 customer to Japan. |\n| Types | FIT, MICE, Muslim |\n| Address | G-5, Wisma Zelan, Jalan Tasik Permaisuri 2, Bandar Tun Razak, Cheras 56000 Kuala Lumpur, Malaysia |\n| Tel | +603-91746888 / +6010-8186688 |\n| Email | [info@goldentropics.com.my](mailto:info@goldentropics.com.my) |\n| Website | [Golden Tropics Travel And Tours Homepage](http://www.goldentropics.com.my/) |\n| SNS | [Golden Tropics Travel And Tours Facebook](https://www.facebook.com/GoldenTropicsTravel/) |\n\n### Hello Holidays Sdn Bhd\n\n![](https://res.cloudinary.com/jnto/image/upload/w_409,h_85,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/91/90/91908c9c-b441-4620-9785-0911e3f1b6c4/htt-main-800x180px_cxeylj)\n\n|     |     |\n| --- | --- |\n| Introduction | Hello Holidays is a premier travel service provider specializing in individual, family, and corporate trips, including pre- and post-conference tours, incentive trips, cruise packages, special interest excursions, and technical visits. With offerings ranging from Domestic Tours across Malaysia to Outbound Tours to destinations like Japan, Korea, Europe, and beyond, we tailor itineraries to match diverse lifestyles and preferences. Our competitive edge lies in our modern fleet of coaches, vans, and MPVs, backed by a nationwide network ensuring seamless services such as coach rentals, transfers, hotel reservations, air ticketing, tour guides, travel insurance, and visa applications. Committed to integrity, reliability, professionalism, and value for money, we aim to deliver worry-free, memorable travel experiences, serving every customer with passion and dedication. |\n| Types | Package, FIT, MICE, Luxury |\n| Address | E-09, 07 Plaza, 2, Jalan Kiara, Mont Kiara, 50480 Kuala Lumpur, Federal Territory of Kuala Lumpur |\n| Tel | 03-6201 6888 |\n| WhatsApp | +601128083859 |\n| Email | [enquiry@helloholidays.com.my](mailto:enquiry@helloholidays.com.my) |\n| Website | [Hello Holidays Homepage](https://www.helloholidays.com.my/) |\n| SNS | [Hello Holidays Facebook](https://www.facebook.com/helloholidays) |\n\n### H.I.S. Travel (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_165,h_60,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/3d/3e/3d3e645c-4456-410d-b8cd-9cfd47cf1a59/1200px-his_logo_bluesvg_-_mohd_safwan_o21tsd)\n\n|     |     |\n| --- | --- |\n| Introduction | H.I.S. Travel Malaysia is a leading travel agency and a subsidiary of H.I.S. Co., Ltd., headquartered in Tokyo, Japan. With a strong specialization in ground arrangements in Japan, H.I.S. Travel Malaysia offers diverse services, including private tours, educational tours, MICE, corporate arrangements, special tours, and more. Backed by a global network and deep expertise in the Japanese market, H.I.S. Travel Malaysia is dedicated to delivering exceptional travel experiences with a focus on quality, innovation, and customer satisfaction. |\n| Types | Muslim, Educational/School/University, MICE, Customized Trip, Private Guided Trip, Disable Friendly Trip |\n| Address | Unit 22-16, Q Sentral,  <br> 2A, Jalan Stesen Sentral 2,  <br> Kuala Lumpur Sentral, 50470 Kuala Lumpur,  <br> Federal Territory of Kuala Lumpur |\n| Tel | 03-2276 3300 |\n| Email | [enquiry@his-world.com](mailto:enquiry@his-world.com) |\n| Website | [H.I.S. Travel Homepage](https://www.his.com.my/) |\n| SNS | [H.I.S. Travel Facebook](https://www.facebook.com/HISWorld.Malaysia/)<br>[H.I.S. Travel Instagram](https://www.instagram.com/his.malaysia/) |\n\n### ICE HOLIDAYS SDN BHD\n\n|     |     |\n| --- | --- |\n| Introduction | 🏆Golden Destinations (GD) - Brand of the Year 2024 (Travel & Tourism) Malaysia most leading Business-to-Business (B2B) Travel Wholesaler Tour Company in Malaysia. |\n| Types | Package, FIT (Flexible Independent Travel), Muslim-friendly/Halal, MICE, Luxury, Cruise |\n| Address | Wisma New Asia, Jalan Raja Chulan, Bukit Bintang, 50200 Kuala Lumpur |\n| Email | [marketing@ice-holidays.com](mailto:marketing@ice-holidays.com) |\n| Website | [Ice Holidays Homepage](https://www.goldendestinations.com/) |\n| SNS | [Ice Holidays Facebook](https://www.facebook.com/gdgoldendestinations) |\n\n### J&C Travel Sdn. Bhd. ( KL Branch )\n\n![](https://res.cloudinary.com/jnto/image/upload/w_144,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/0e/21/0e21ec88-fb3b-44e3-a935-74ab5af56034/j_c_logo_chinese_2_-_kim_pheng_hor_rgidgc)\n\n|     |     |\n| --- | --- |\n| Introduction | Japanese Inbound , Outbound , Transport ( Education , Golf , Incentive , Leisure ) |\n| Types | FIT, Package, Education |\n| Address | 222 Jalan Ampang KL |\n| Tel | +6012-372-8122 |\n| Email | [benhor@jctravel.com.my](mailto:benhor@jctravel.com.my) |\n| Website | [J&C Travel Homepage](http://www.jctravel.com.my/usr/page.aspx?pgid=2) |\n| SNS | [J&C Travel Facebook](https://www.facebook.com/jctraveltransportbooking) |\n\n### J-Horizons Travel (M) Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Ticketing, Outbound Tours, Inbound Tours |\n| Address | Lot 25-05, Wisma Goldhill, Jalan Raja Chulan, Bukit Ceylon, 50200 Kuala Lumpur, Federal Territory of Kuala Lumpur |\n| Tel | 03-2161 0922 |\n| Email | [enquiry\\_japanrail@j-horizons.com.my](mailto:enquiry_japanrail@j-horizons.com.my) |\n\n### Japan Travel Bureau (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_97,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b2/39/b2393821-8b53-4095-8579-607dd8b33b90/jtbmark_slogan_v_en_rgb_red_ylkimg)\n\n|     |     |\n| --- | --- |\n| Introduction | Japan Travel Bureau (M) Sdn Bhd or well-known as JTB Malaysia is established in 1990 with our head office located in the heart of Kuala Lumpur, and a supporting branch office in Kota Kinabalu. Licensed to perform inbound, outbound and ticketing business by the Ministry of Culture, Arts & Tourism Ministry of Tourism, Arts & Culture, our strength is being a specialist in travel to Japan as well as further develop our products and services for other travel destinations.<br>JTB offices are no mere land operators, but vital hubs that both send off and welcome international travelers. Wherever in the world our customers are coming from or heading to, JTB is proud to handle all aspects of the travel business. With a proprietary network that spans the globe, the JTB global network is that rare group of companies can provide all the travel services customers desire, all around the world. |\n| Types | Muslim, FIT, Private group, Customized group, MICE, Education |\n| Address | Unit 16.05-16.07, Level 16, Amoda, 22, Jalan Imbi, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur, Malaysia |\n| Tel | 03-2330 3388 |\n| Email | [info\\_kul.my@jtbap.com](mailto:info_kul.my@jtbap.com) |\n| Website | [Japan Travel Bureau Homepage](https://my.jtbtrip.com/) |\n| SNS | [Japan Travel Bureau Facebook](https://www.facebook.com/JTB.Malaysia/)<br>[Japan Travel Bureau Instagram](https://www.instagram.com/jtbmalaysia/?hl=en)<br>[Japan Travel Bureau X](https://twitter.com/jtb_mly?lang=en) |\n\n### Joy Paradise Holidays Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | Joy Paradise is a one stop travel agency for all your travel needs to Japan.We dedicatedly provide personalized and customized travel services to clients who are looking to explore the best of what Japan has to offer. With10 years of experience and 0% accident under our belt,we have the skills and resources to meet your needs. With our top-notch vehicles and seasoned drivers,you can rest assured that you will enjoy your journey safely and comfortably. |\n| Types | Private Group, Group Package, Customized group |\n| Address | A-1-26 PLAZA BUKIT JALIL (AURORA PLACE), NO. 1 PERSIARAN JALIL 1, BANDAR BUKIT JALIL, 57000 KUALA LUMPUR |\n| Tel | 03-5033 3170 |\n| Email | [joyparadiseholidays@gmail.com](mailto:joyparadiseholidays@gmail.com) |\n| Website | [Joy Paradise Holidays Homepage](https://joyparadiseholidays.com/) |\n| SNS | [Joy Paradise Holidays Instagram](https://www.instagram.com/joyparadiseholidays/) |\n\n### Kopetro Travel & Tours Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | KOPETRO Travel & Tours Sdn Bhd was incorporated in 1986 and is wholly owned subsidiary of KOPETRO Berhad. We are an accredited travel agency with the International Air Transport Association (IATA) and a member of the Malaysian Association of Tour and Travel Agents (MATTA). |\n| Types | Outbound, Group Tour |\n| Address | B-1-5, Megan Avenue II, No. 12, Jalan Yap Kwan Seng, 50450 Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2164 1577 |\n| Email | [kopetrotravel@kopetro.com.my](mailto:kopetrotravel@kopetro.com.my) |\n| Website | [Kopetro Travel & Tours Sdn Bhd Homepage](https://www.kopetrotravel.com.my/) |\n\n### LTS Explorer Tours\n\n|     |     |\n| --- | --- |\n| Introduction | Selling Japan tour packages to corporate incentive companies. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 7A, Jalan Perisa 2, Happy Garden, 58200 Kuala Lumpur, Malaysia |\n| Tel | +603-79836236 |\n| Email | [sales@lts-explorer.com](mailto:sales@lts-explorer.com) |\n| Website | [LTS Explorer Tours Homepage](http://www.lts-explorer.com/) |\n\n### Malaysian Harmony Tour & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Malaysian Harmony Tour & Travel Sdn Bhd with the experience of more 30 years, is an associate company to Asia Cathay Travel . Our aim is to offer high quality, personalized services and packages out of the beaten track. Our expertise gurantees the success of every project we undertake. We are the top produces for the Major airlines under IATA - International Air Transport Association. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 21JALAN TONG SHIN ,50200 KUALA LUMPUR |\n| Tel | +603-21454226 |\n| Email | [leister\\_op@mysharmony.com](mailto:leister_op@mysharmony.com) |\n| Website | [Malaysian Harmony Tour & Travel Homepage](https://www.malaysianharmony.com.my/) |\n| SNS | [Malaysian Harmony Tour & Travel Facebook](https://www.facebook.com/malaysianharmony) |\n\n### Mayflower Holidays Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Mayflower Holidays (MH) is a recognized brand in the local market for over 60 years, MH has innovated its own 'One-Stop' online travelling solution to directly serve the affluent generation of this technology age, while still customizing incentive group travel for the corporate and private customers. It is also a well sought after Air Tickets Consolidator both locally and internationally. |\n| Types | Package |\n| Address | 1, Jalan Metro Pudu 1, Fraser Business Park, 55100 Kuala Lumpur, Malaysia |\n| Tel | 03-92321888 |\n| Email | [cs@mayflower-group.com](mailto:cs@mayflower-group.com) |\n| SNS | [Mayflower Holidays Facebook](https://www.facebook.com/mayflowerholidaysMH) |\n\n### MITRA KEMBARA SDN.BHD.\n\n|     |     |\n| --- | --- |\n| Introduction | MITRA Kembara is a local Bumiputra company established in 1976, which registered with Ministry of Finance to manage official trip for government agencies and private. Being 42 years in the travel industry we are fully experienced in all facets of travel and tour arrangements and our core businesses are Government Travel Management and Umrah Travel.<br>Mitra Kembara is also registered agent for Saudi Arabia Embassy for the service of Visa and Endorsement for Umrah travel. Apart from that Mitra Kembara also offers a wide variety of Halal holiday packages to various destinations worldwide. Currently we service over 70 Government Agencies, GLC (Government Related Company) and Private Company. |\n| Types | Tour Packages |\n| Address | Wisma Central, Jln Ampang, Kuala Lumpur, 50450 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2779 1349 |\n| Email | [informk@mitrakembara.travel](mailto:informk@mitrakembara.travel) |\n| Website | [MITRA KEMBARA Homepage](https://www.mitrakembara.travel/?gad_source=1&gclid=Cj0KCQiAkoe9BhDYARIsAH85cDO-1qZKRqxj-BbFW6CjKhw68GulEv1ngPzp-1v-67L50tovcdxNTdUaAokUEALw_wcB) |\n\n### Orex Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_150,h_150,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/90/29/90299476-3433-4519-bf12-b936b96c02c4/orex_logo_new-01_-_edmond_james_rzydws)\n\n|     |     |\n| --- | --- |\n| Introduction | Our success is owed to the dedication and commitment of our employees. We now stand as one of the reputable travel management company (TMC) in Malaysia, providing a full range of travel services for big corporations and companies. |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | Suite 08-01, 08-02 & 08-10, Level 8, Heritage House, No. 33 Jalan Yap Ah Shak, 50300, Kuala Lumpur, Malaysia. |\n| Tel | 03 - 8966 3922 |\n| Email | [orex.leisure@orextravel.com](mailto:orex.leisure@orextravel.com) |\n| Website | [Orex Travel & Tours Homepage](https://www.orextravel.com/) |\n| SNS | [Orex Travel & Tours Facebook](https://www.facebook.com/OrexTravelMalaysia) |\n\n### Parlo Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_150,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/c0/1a/c01aa8cb-0f07-4904-ba08-c14dd4040d42/parlo_logo_jpeg-01_-_parlo_tours_wgflph)\n\n|     |     |\n| --- | --- |\n| Introduction | Parlo Tours has been in the outbound and inbound travel industry for more than 4 decades. Now well-established, the Parlo Group is a travel management and services company principally engaged in the provision of leisure and corporate travel products and services. The company also provides ancillary travel products and services for leisure and corporate travel. |\n| Types | FIT, Package, MICE |\n| Address | 72, Jalan Kampung Attap, Kampung Attap, 50460 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2726 6088 |\n| Email | [outbound@parlotours.com.my](mailto:outbound@parlotours.com.my) |\n| Website | [Parlo Tours Homepage](https://www.parlotours.com.my/) |\n| SNS | [Parlo Tours Facebook](https://www.facebook.com/parlotours) |\n\n### Roystar Travel & Tours Sdn. Bhd.\n\n![](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n|     |     |\n| --- | --- |\n| Introduction | A brand named for greatest deals and a One-stop for your affordable leisure travel. |\n| Types | FIT, Package, MICE, Muslim, Flight Ticket |\n| Address | No 16A & 16B, Lorong Brunei 3, Off Jalan Pudu, 55100 Kuala Lumpur |\n| Tel | 03-21430288 |\n| Email | [tour@roystartravel.com.my](mailto:tour@roystartravel.com.my) |\n| SNS | [Roystar Travel & Tours Facebook](https://www.facebook.com/smartholidays.com.my) |\n\n### Sedunia Travel Services Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_133,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/0c/110c8aea-c449-4fed-8bc3-52cf5965d993/sedunialogo-vertical2014_-_annie_woo_hzxe9r)\n\n|     |     |\n| --- | --- |\n| Introduction | Founded in 1976, Sedunia Travel has grown to be one of the largest travel agencies in Malaysia, offering a range of corporate, MICE and leisure travel. As the leading Free Independent Traveller (FIT) specialist in Malaysia, Sedunia Travel takes great pride in offering the best and largest selection of tours and holidays around the world. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | Level 01-1B, 12 & 13 <br> Menara Genesis <br> 33 Jalan Sultan Ismail <br> 50250 Kuala Lumpur, Malaysia |\n| Tel | 03-27795480 |\n| Email | [contact@sedunia.com.my](mailto:contact@sedunia.com.my) |\n| Website | [Sedunia Travel Services Homepage](https://seduniatravel.com/destination/japan/) |\n| SNS | [Sedunia Travel Services Facebook](https://www.facebook.com/seduniatravel/) |\n\n### Sri America Travel Corporation Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | SA Travel is a premier online travel and tour agency based in Malaysia, with offices located in Kuala Lumpur and Penang. We specialize in providing comprehensive travel packages both within Malaysia and internationally. Whether you're planning a serene getaway or an adventurous expedition, we offer detailed itineraries and competitive tour fares tailored to your needs.<br>For more information about our travel packages, itinerary details, and pricing, please don't hesitate to contact us. Let SA Travel be your trusted partner in exploring the world! |\n| Types | Group Tour |\n| Address | Wisma Sa, 12, Jln Bukit Bintang, Bukit Bintang, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2142 9155 |\n| Email | [pychong@satravel.com.my](mailto:pychong@satravel.com.my) |\n| Website | [Sri America Travel Corporation Homepage](https://www.satravel.my/) |\n\n### Sunrise Tours & Travel Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | Sunrise Tours & Travel is the officially authorized dealer and agent of JR Pass appointed by Japan Railways Group (JR Group). As the leading travel agency located in Kuala Lumpur Malaysia, offer JR Pass at the best price with secure delivery. Discover beautiful places in Japan with JR Pass today. |\n| Types | Group Tour |\n| Address | Unit 4.05 Level 4, Amoda Building  No. 22, Jalan Imbi, 55100 Kuala Lumpur, Malaysia. |\n| Tel | 03-2141 8022 |\n| Email | [sunrise@sunrise.com.my](mailto:sunrise@sunrise.com.my) |\n| Website | [Sunrise Tours & Travel Homepage](https://www.sunrise.com.my/tours/) |\n\n### TM Tours & Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/96/e1/96e1a4a0-845a-4754-970b-974d6be7240b/tmtt-logo_-_mohd_ridzwan_abdullah_htmzuj)\n\n|     |     |\n| --- | --- |\n| Introduction | WE ARE A FULL LICENSED MUSLIM BASED COMPANY HIGHLIGHTING MUSLIM NEEDS, PRAYERS REQUIRMENTS, TOURS, HALAL MEALS, PLACES OF INTEREST TO JAPAN TRAVEL DESTINATIONS WHICH CATER FOR MUSLIM AS WELL AS NON MUSLIM TRAVELLERS. OUR MAIN CONCENTRATION COVERS FIT, GIT, SPECIAL TOURS, GOVERNMENT DELEGATION, STUDENT DELEGATION, INTER CULTURE PROGRAMS, MICE, INCENTIVES GROUPS SINCE 2000 TO JAPAN AS TOP SELLER |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | Lot : 3-3A, Level 4, Wisma Q Titiwangsa, |\n| Tel | +60340314171 |\n| Email | [info@tmtours.com.my​](mailto:info@tmtours.com.my) ​​​​​​ |\n| Website | [TM Tours & Travel Homepage](https://tmtours.com.my/) |\n| SNS | [TM Tours & Travel Facebook](https://www.facebook.com/tmtoursntrvl/) |\n\n### Wendy Tour Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b1/76/b176e889-6962-4631-af60-187048831509/wendylogo_en_1340x960_-_outbound_kl_william_n1ij38)\n\n|     |     |\n| --- | --- |\n| Introduction | Japan Inbound and Outbound |\n| Types | FIT, Package, MICE, Muslim, Education, JR Train Pass |\n| Address | CP61, Suite 2504, 25th Flr., Wisma Chuang, No.34, Jalan Sultan Ismail, 50250 Kuala Lumpur, Malaysia |\n| Tel | +603-2145-2312 |\n| Email | [outbound@wendytour.com.my](mailto:outbound@wendytour.com.my) |\n| Website | [Wendy Tour Homepage](https://wendytour.com.my/) |\n| SNS | [Wendy Tour Facebook](https://www.facebook.com/wendytour.to.japan/) |\n\n### WORLDTRAVELLERS DMC SDN BHD\n\n|     |     |\n| --- | --- |\n| Types | Corporate Travel, Ticketing |\n| Address | They are expanding and will open a new branch in the Cheras area on 15 March. The new address will be provided once they have officially moved in |\n| Tel | 03-2282 7201 |\n| Email | [bangsar1@worldtravellers-dmc.com.](mailto:bangsar1@worldtravellers-dmc.com.) |\n| Website | [WORLDTRAVELLERS DMC Homepage](https://www.worldtravellers-dmc.com/) |\n\n### WP Travel Sdn. Bhd. ( Wanderprime )\n\n![](https://res.cloudinary.com/jnto/image/upload/w_300,h_40,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/69/2d/692df124-05a5-448f-a10a-93799a12a4d0/wanderprime_logo_horizontal_pantone_-_noelle_chong_qhqwwm)\n\n|     |     |\n| --- | --- |\n| Introduction | Wanderprime is a Malaysia based Luxury Travel Operator .We plan & organise first-class experiences for hyper luxury travellers , adventure seekers and out-of-ordinary traveler. To offer the authentic and unique experience of our handpicked destination with ultimate comfort;In every chosen destination , we work closely with subject experts and professional to offer the most to our valued guests . |\n| Types | FIT, Muslim |\n| Address | B-29-3A, Tower B, Pavilion Embassy, Kompleks Pavilion Ampang, 50450 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 012-972 2297 |\n| Email | [noelle@wanderprime.com](mailto:noelle@wanderprime.com) |\n\n## Selangor\n\n### Golden Adventure Tours & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | We are an experienced and licensed travel agent in Malaysia. which in charge of inbound, outbound, ticketing services as well as famous for our Japan and Hokkaido Private Tours. we offer variety of tourism products including tour packages, hotel booking, flight booking and other travel services to our clients, also known for its customized tour solutions. |\n| Types | FIT, Package, Education |\n| Address | KL office - E10-3A, 10th floor, Menara Melawangi, Amcorp Trade Centre, 18, Jalan Persiaran Barat, 46050 Petaling Jaya, Selangor, Malaysia |\n| Tel | +603-7954 0196 |\n| Email | [golden-kul@golden-adv.com](mailto:golden-kul@golden-adv.com) |\n| Website | [Golden Adventure Tours & Travel Homepage](http://www.tabigo.asia/) |\n\n### Onederful Vacation Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_214,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/0d/6f/0d6f71f8-5cb7-40b5-90c0-293f6c8cc842/onederful_colour_logo_-_vacation_onederful_raervd)\n\n|     |     |\n| --- | --- |\n| Introduction | Onederful Vacation has been in the tourism and hospitality business since December, 2003. Our wide range of products and services which include travel consultancy, international / domestic airline ticketing, worldwide hotel reservations, well designed tour packages, corporate incentive travel, exclusive transfer services, travel and personal accident insurance and travel visa application service. |\n| Types | FIT, Package, MICE, Ticket Reservation |\n| Address | No.8-1, 1st Floor, Jalan USJ10/1E, Taipan Business Centre, 47620 UEP Subang Jaya, Selangor, Malaysia |\n| Tel | 03-56352595 / 012-5882595 |\n| Email | [enquiry@onederfulvacation.com](mailto:enquiry@onederfulvacation.com) |\n| Website | [Onederful Vacation Homepage](https://www.onederfulvacation.com/) |\n| SNS | [Onederful Vacation Facebook](https://www.facebook.com/onederfulvac/) |\n\n### Pearl Holiday (M) Travel & Tour Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_180,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/93/1193f604-4e84-401f-b15d-24c4b7120bd0/pearl_holiday_with_website_-_outbound_pearlholiday_paxlis)\n\n|     |     |\n| --- | --- |\n| Introduction | Established in 1993, Pearl Holiday(M)Travel & Tour Sdn Bhd is a Travel Operator licensed by Ministry of Culture, Arts and Tourism Malaysia with Inbound, Outbound and Ticketing qualifications. Over 50 full-time staffing. The company's core business covers a variety of Inbound, Outbound, Educational Tours, Coach & Car Rental. |\n| Types | FIT, Package, MICE, Education |\n| Address | No.1, Jalan KP 1/3, Taman Kajang Prima, Off Jalan Semenyih, 43000 Kajang, Selangor. |\n| Tel | +603-8924 9999 |\n| Email | [enquiry.hq@pearlholiday.com](mailto:enquiry.hq@pearlholiday.com) |\n| Website | [Pearl Holiday Homepage](https://www.pearlholiday.com/) |\n| SNS | [Pearl Holiday Facebook](https://www.facebook.com/pearlholiday) |\n\n### Sunway Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_180,h_60,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/9e/30/9e3001f7-4312-4e93-995e-64c810cf1db7/swt_logonew_-_rachel_koong_z8v5jf)\n\n|     |     |\n| --- | --- |\n| Introduction | With over 30 years of industry experience, Sunway Travel is your trusted partner for a comprehensive range of travel services. Our offerings include corporate airline ticketing, global hotel reservations, MICE travel, cruises, and tailored individual or group tours to Japan. |\n| Types | FIT, Package, MICE |\n| Address | Unit 1.7, Level 1, West Lobby, Menara Sunway Annexe, Jalan Lagoon Timur 47500 Bandar Sunway, Selangor |\n| Tel | 03-56399029 |\n| Email | [travelinfo@sunway.com.my](mailto:travelinfo@sunway.com.my) |\n| Website | [Sunway Travel Homepage](https://www.sunway.travel/) |\n| SNS | [Sunway Travel Facebook](https://www.facebook.com/sunway.travel) |\n\n## Johor\n\n### Chia Sin Travel Service Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_200,h_140,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/42/a5/42a533a1-492f-49ec-b5ac-501d6df2a012/chiasin_logo_tn2_fucfvd)\n\n|     |     |\n| --- | --- |\n| Introduction | With over thirty years of experience in the travel and tourism industry, Chia Sin Travel Service Sdn. Bhd was established in 28th April 1981 as a full pledge license Travel Agent for both Inbound and Outbound.<br>Chia Sin Travel Service Sdn. Bhd has the experience om organizing wide variety of holidays and has separate divisions for Outbound which include MICE, Corporate travel, tailor-made holidays, escorted tours, Cruise Holiday and ticketing.<br>Our professionalism and operations have enabled Chia Sin Travel to be one of very few companies in Malaysia that enjoys the support and confidence of the major outbound or inbound tour operators in the marketplace. |\n| Types | FIT, GIT, INCENTIVE, MICE, WORLDWIDE HOTEL RESERVATION |\n| Address | No 12, Jalan Yayasan, Bandar Kluang, 86000, Kluang Johor. |\n| Tel | +6077725115 / 60127286115 |\n| Email | [chiasintravel@gmail.com](mailto:chiasintravel@gmail.com) / [cwkong4@hotmail.com](mailto:cwkong4@hotmail.com) |\n| Website | [Chia Sin Travel Service Homepage](http://www.chiasin.com.my/) |\n| SNS | [Chia Sin Travel Service Facebook](https://www.facebook.com/chiasintravelservice) |\n\n### Chiu Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/82/a2/82a27f95-6a10-4435-95da-cd19ec6aff97/chiu_travel_logo_2_-_ee_ling_rm0a5x)\n\n|     |     |\n| --- | --- |\n| Introduction | Established since 1975, Chiu Travel Sdn Bhd offering tour and travel products which includes corporate ticketing, corporate meetings and incentive packages, inbound and outbound tours, cruises as well as resort and hotel reservations. |\n| Types | FIT, Package, MICE, Muslim, Education, Hotel Reservation, Cruises, Flight Ticketing |\n| Address | 29-6, Jalan Rahmat, 83000 Batu Pahat, Johor, Malaysia |\n| Tel | +6074335588 / 4335599 |\n| Email | [chiutravel@chiutravel.com](mailto:chiutravel@chiutravel.com) |\n| SNS | [Chiu Travel Facebook](https://www.facebook.com/chiutravel) |\n\n### CK Vacation Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_200,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/39/06/39062e24-c59e-431c-9bfb-0ccadb92e292/ck_vacation-image_-_alice_chin_dhyzxf)\n\n|     |     |\n| --- | --- |\n| Introduction | CK VACATION Incorporated in Malaysia in May 1996 and is licensed by the Ministry of Cultural, Art and Tourism to operate as a Tour Operator for Inbound and Outbound tour as well as a ticketing agent. We are known for our professionalism in the handling of individual and group travel within and out of Malaysia , CK is well recognized as a leading tour operator and destination in Southern Johor. |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | 44-A 1 PUSAT PERDANGAN JALAN BANDAR PASIR GUDANG |\n| Tel | 07-2526300, +6016-7108080 |\n| Email | [enquiry@ckvsb.com.my](mailto:enquiry@ckvsb.com.my) |\n| Website | [CK Vacation Homepage](http://www.ckgolftour.com.my/) |\n\n### Enjoy Holiday Tour Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Outbound travel agency in Malaysia, Southern region. Specializes in incentive group, MICE, group packages and FIT packages. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 108, JLN SERAMPANG, TMN. PELANGI, 80400, JOHOR BAHRU |\n| Tel | 607-3332873 |\n| Email | [bett@enjoyholiday.com.my](mailto:bett@enjoyholiday.com.my) |\n| SNS | [Enjoy Holiday Tour Facebook](https://www.facebook.com/enjoyholidayjb) |\n\n### Ez n Fun Holidays Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/e9/d7/e9d75447-724d-4c14-b8a1-c1919c275136/untitled-2-03_-_janette_loh_oiaj7q)\n\n|     |     |\n| --- | --- |\n| Introduction | We plan itinerary, prepare necessary passes and cards for taking public transportation, book accommodation, and make a guidebook for our customer who would like to travel to Japan free and easy. We called our service as \"Semi-Free & Easy Travel\" |\n| Types | FIT |\n| Address | 14, Jalan Selatan 6/5, Kempas Industrial Park, 81200 Johor Bahru, Johor, Malaysia |\n| Tel | 019-751 8397 |\n| Email | [info@eznfun.com.my](mailto:info@eznfun.com.my) |\n| Website | [Semi Free Homepage](https://www.shiokjohor.com/) |\n| SNS | [Ez n Fun Holidays Facebook](https://www.facebook.com/eznfunholidays)<br>[Semi Free Facebook](https://www.facebook.com/Semifree)<br>[Semi Free Instagram](https://instagram.com/semifree.easytravel) |\n\n### Ipoh Overland Tours & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Ipoh Overland Tours & Travel Sdn. Bhd.Est in 1988 is one of Malaysia Leading Inbound, Outbound, Worldwide Cruise, Hotel & Air Ticket Reservation Company.covers the field of FIT travel, group, series tours, MICE & special interest packages for VIPs.We are innovative, market-driven business with a fierce a commitment to our Local/International clients and their customers. |\n| Types | FIT, Package, MICE, Education |\n| Address | 19, Jalan Sultan Abdul Jalil, Kampung Jawa, 30300 Ipoh, Perak |\n| Tel | 05-253 2766 |\n| Email | [manager@ipohoverland.com.my](mailto:manager@ipohoverland.com.my) |\n| Website | [Ipoh Overland Tours & Travel Homepage](http://ipohoverland.com.my/) |\n| SNS | [Ipoh Overland Tours & Travel Facebook](https://www.facebook.com/ioTravel/) |\n\n### Sin Chung Tours Sdn.Bhd.\n\n|     |     |\n| --- | --- |\n| Types | FIT, package, MICE, Muslim, Education<br>\\*Specializing in organizing Inbound and Outbound tours to Overseas service. Cater for Incentive group, familiarization tour and ticketing, Hotel & Cruise booking and visa application. |\n| Address | 27 Jalan Kuning Dua, Taman Pelangi, Johor Bahru, Malaysia |\n| Tel | 6073319888 |\n| Email | [info.hq@sinchung.com.my](mailto:info.hq@sinchung.com.my) |\n| Website | [Sin Chung Tours Homepage Coming Soon](https://www.sinchung.com.my/?fbclid=IwY2xjawIOwDFleHRuA2FlbQIxMAABHW82cQ-_HhwTnIQoRDstVi0E4t8nDrYI_6ZFJNK4Hg8WTX1hYjIUAsw2VA_aem_DaqWbORK58BRlg6r3Hn-bw) |\n| SNS | [Sin Chung Tours Facebook](https://www.facebook.com/SinChungTours/) |\n\n### Sinair Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_150,h_140,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b3/83/b383104b-3675-428f-9f89-966d9d0e6088/sinair_travel__-_devidd_bong_elfbng)\n\n|     |     |\n| --- | --- |\n| Introduction | SINAIR TRAVEL is a full-service travel agency dedicated to providing Corporate, Ticketing, Visa, Leisure and (MICE) services. We offer the widest choice of destinations from the mainstream to the exotic ones. While we explore new destinations and venture into opening the roads less travelled, we consistently review and revisit existing ones with new itineraries and experiences. |\n| Types | FIT, Package, MICE, Group Series |\n| Address | 70, Jalan Molek 2/1, Taman Molek, 81100 Johor Bahru, Johor. |\n| Tel | +6073543399 |\n| Email | [tour@sinairtravel.com](mailto:tour@sinairtravel.com) |\n| SNS | [Sinair Travel Facebook](https://www.facebook.com/SINAIRTRVL/) |\n\n### Top One Travel Services Corporation (M) Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Top-One Travel Services Corporation (M) Sdn Bhd (Reg no. 153982-T), KPL 1000 was established since year 1986 at Johor Bahru, Johor, Malaysia, we offer the widest choice of destination, airline ticket and others travel related services.<br>or over 35 years' experiences, we’ve taken inspiration from our own life-changing adventures to tailor make journeys that are as individual as you and as unique as the places we love. |\n| Types | Package; FIT, Muslim-friendly/Halal, MICE, Luxury, Cruise |\n| Address | No.16-16A-16B Jalan Sutera 2 Taman Sentosa 80150 Johor Bahru. Johor, Malaysia |\n| Tel | 07-3343388 |\n| Email | [info@top-one.com.my](mailto:info@top-one.com.my) |\n| Website | [Top One Travel Services Corporation Homepage](https://www.top-one.com.my/) |\n| SNS | [Top One Travel Services Corporation Facebook](https://www.facebook.com/@toponetravelservices) |\n\n### TLC Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_160,h_90,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/e5/e9/e5e9dde7-46c7-4931-9109-53bf5d201e13/tlc-logo-modern-2020_-_kh_lai_zg4bao)\n\n|     |     |\n| --- | --- |\n| Introduction | Strength in Malaysia Tours |\n| Types | FIT |\n| Address | No.6-01,Jalan Bestari 6/2, Taman Nusa Bestari, Skudai |\n| Tel | +6072362667 |\n| Email | [sales@tlc.my](mailto:sales@tlc.my) |\n| Website | [TLC Travel & Tours Homepage](https://www.tlc.my/) |\n| SNS | [TLC Travel & Tours Facebook](https://www.facebook.com/travel.tlc.my) |\n\n## Penang\n\n### Ace Tours & Travel (PG) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/2e/36/2e364780-e8a2-41fb-81af-093df4c791f6/ace_logo_4png_-_jeffrey_goh_lzeisx)\n\n|     |     |\n| --- | --- |\n| Introduction | Our company has been established for more than 30 years in travel industry with a work force of 6 staffs in the beginning expanding to more than 40 staffs over the years. Our current core business primarily selling tour packages in series for group departure covering the five continents. Japan is one of our key promotion and most saleable destination. |\n| Types | FIT, Package, MICE |\n| Address | 4 JALAN RANGOON, 10400 PENANG |\n| Tel | +604-2288000 |\n| Email | [tours@acetours.com.my](mailto:tours@acetours.com.my) |\n| Website | [Ace Tours & Travel Homepage](https://www.acetours.com.my/) |\n| SNS | [Ace Tours & Travel Facebook](https://www.facebook.com/acetourstravel) |\n\n### Angel Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/d3/74/d374f830-a413-48b1-a80a-673c4d73f42b/angel_tours_logo_-_angel_tours_sdn_bhd_fbjfu7)\n\n|     |     |\n| --- | --- |\n| Introduction | Angel Tours Sdn Bhd was established in 1978, with over 44 years of experiences, we are one of the leading travel companies in Northern Malaysia, well acclaimed for our inbound & outbound tours, escorted leisure tours, independent holiday packages and luxury cruise holidays. Our services also include business travel, as well as meetings, incentive travel, conferences and event management. |\n| Types | FIT, Package, MICE |\n| Address | 174-176, CAMPBELL STREET, 10100 GEORGETOWN PENANG, MALAYSIA |\n| Tel | +604-2613488 |\n| Email | [admin@angeltours.com.my](mailto:admin@angeltours.com.my) |\n| Website | [Angel Tours Homepage](https://angeltours.com.my/) |\n| SNS | [Angel Tours Facebook](https://www.facebook.com/ANGEL.TOURS.SDN.BHD) |\n\n### Big Planet Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_188,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/5d/21/5d2169cf-c143-4a0c-b8d3-7bdb9c7dbae2/bp_logo_-_cs_leong_d1bfny)\n\n|     |     |\n| --- | --- |\n| Introduction | With a total of 40 years of experience from our founders in the tourism industry, BIG PLANET is now becoming one of the fastest growing travel agencies in northern Malaysia.<br>We build differently out of the traditional travel business method to bring a new perception of traveling agency to the market. Based on new trends of traveling ways, we also emphasize on new core tour services i.e. Incentive tour, private tour and new trendy package and Free & Easy for the customers other than traditional group package. With our outsanding and enlivened tour packages, we bring out a new image of travel agency to the market.<br>With the stable expanding of the company, we expanded the business in Bukit Mertajam with a new branch on August 2012. BIG PLANET also got involved in other tourism ventures such as hotel and restaurant in Penang Heritage area.<br>We have great achievements throughout the years with the excellent response and support from our beloved customers. We promise to give best value of the tour service to our beloved customers.<br>We would like to bring the concept of 'think of travel, think of Big Planet Travel!' |\n| Types | FIT, Package |\n| Address | 110-E, Lorong Selamat, Georgetown |\n| Tel | 04-2299771 |\n| Email | [info@bigplanettravel.com.my](mailto:info@bigplanettravel.com.my) |\n| Website | [Big Planet Travel Homepage](https://www.bigplanettravel.com.my/) |\n| SNS | [Big Planet Travel Facebook](https://facebook.com/bigplanettravel)<br>[Big Planet Travel Instagram](https://instagram.com/bigplanettravel) |\n\n### Forever Travel Service Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/8b/6d/8b6d194f-9b8b-49eb-b767-0cede6367c59/forever_travel_logo_color_thicker_-_yami_lim_dq7myk)\n\n|     |     |\n| --- | --- |\n| Introduction | With over 40 years of experience, Forever Travel has built a strong and extensive network of global travel industry partners and a team of highly dedicated personnel, who work with passion and professionalism to deliver excellent travel services to our clients consistently.<br>Our travel services include personal and corporate air ticketing, free & easy and group package tours, worldwide hotel reservations, MICE, sightseeing and coach tours, visa applications and other travel services. |\n| Types | FIT, Package, MICE |\n| Address | 14-B Aboo Sittee Lane |\n| Tel | +6042266633 |\n| Email | [yleen@forevertravel.com.my](mailto:yleen@forevertravel.com.my) |\n| Website | [Forever Travel Service Homepage](https://forevertravel.com.my/) |\n| SNS | [Forever Travel Service Facebook](https://www.facebook.com/forevertravelservice/) |\n\n### Golden First Travel & Tours (M) Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Types | Package Tours |\n| Address | 139, Jalan Stesen, 14000 Bukit Mertajam, Pinang |\n| Tel | 04-538 8888 |\n| Email | [enquiries@goldenfirsttravel.com](mailto:enquiries@goldenfirsttravel.com) |\n| Website | [Golden First Travel & Tours Facebook](https://www.facebook.com/GoldenFirstTravel/?_rdr) |\n| SNS | [Golden First Travel & Tours Instagram](https://www.instagram.com/goldenfirsttravel/?hl=en) |\n\n### Lye Peng Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_250,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/53/d4/53d41902-745f-4aa8-88cd-da4648624078/03jan2022_mcta_lye_peng_logo_a4_003_-_vincent_oo_ut6no7)\n\n|     |     |\n| --- | --- |\n| Introduction | LYE PENG TRAVEL ENTERPRISE started on the year 1978. From 1986, the company expanded and established to LYE PENG TRAVEL & TOURS SDN BND (LPT). Year 2007, LPT located at 68B & 68C Macalister Road 10400 Penang. Year 2008, LPT has won a prestigious award \"Golden Award under the 1st Top 50 Enterprise Awards Malaysia 2007\" and year 2010 won The Dr Sun Yat Sen Growth & Development Enterprise Award. |\n| Types | FIT, package, MICE, Muslim, Education<br>\\*Specializing in organizing Inbound and Outbound tours to Overseas service. Cater for Incentive group, familiarization tour and ticketing, Hotel & Cruise booking and visa application. |\n| Address | 68B & 68C, Jalan Macalister, 10400 Georgetown, Penang |\n| Tel | +60-42381118 |\n| Email | [lyepeng@lyepengtravel.com.my](mailto:lyepeng@lyepengtravel.com.my) |\n| Website | [Lye Peng Travel & Tours Homepage](http://www.lyepengtravel.com.my/) |\n| SNS | [Lye Peng Travel & Tours Facebook](https://www.facebook.com/lyepengtravel/) |\n\n## Sabah\n\n### Popular Express Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/98/cb/98cb06a1-fe13-44d9-b6a7-deb2233224f9/popular_logo_-_life_is_beautiful_cwo2id)\n\n|     |     |\n| --- | --- |\n| Introduction | Popular Express Travel (PET) is one of the most established travel companies in Sabah, Malaysia Borneo and the region for over 40 years. PET offers the widest choice of destinations acclaimed package tours, Free & Easy+ holidays, Worldwide Cruise Centre, customised holidays, private tours, incentive tours, student travel as well as airlines ticketing and travel consultancy in the new norm. |\n| Types | FIT, Package, MICE, Muslim, Education, Airlines Ticketing Agency |\n| Address | 33 Jalan Tugu, Kg. Air, 88000 Kota Kinabalu, Sabah, Malaysia. |\n| Tel | +6088221313 |\n| Email | [candy@popularexpress.com](mailto:candy@popularexpress.com) |\n| Website | [Popular Express Travel Homepage](https://www.popularexpress.com/) |\n| SNS | [Popular Express Travel Facebook](https://www.facebook.com/PopularExpressTravelSdnBhd) |\n\n### Tashin Travel Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Types | Worldwide Holiday Packages, Tailor-made Tour, MICE, Incentive & Exhibition, Flight Ticket |\n| Address | V01-13-08, Level 13, V Office, Sunway Velocity, Lingkaran SV, Sunway Velocity, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 012-230 9320 |\n| Email | [info@tashintravel.com](mailto:info@tashintravel.com) |\n| SNS | [Tashin Travel Facebook](https://www.facebook.com/tashintravelsdnbhd?locale=ms_MY) |\n\n- [Home](https://www.japan.travel/en/)\n- [Home](https://www.japan.travel/en/my/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n- List of Travel Agencies in Malaysia\n\nHelpful Links\n\n[First-Time Visitors](https://www.japan.travel/en/plan/) [Weather in Japan](https://www.japan.travel/en/weather/) [FAQ](https://faq.japan-travel.jnto.go.jp/) [Japan Tours & Activities](https://www.japan.travel/en/japan-tours-and-activities/) [Japan Photo & Video Library Links](https://www.japan.travel/en/japan-photo-and-video-library/)\n\nRelated JNTO Sites\n\n[Japan Convention Bureau](https://www.japanmeetings.org/)\n\nAbout JNTO\n\n[Who We Are](https://www.japan.travel/en/about-jnto/) [Contact us](https://www.japan.travel/en/my/contact-us/)\n\ninline-list\n\n[Privacy Policy](https://www.japan.travel/en/my/privacy-policy/) [Cookie Policy](https://www.japan.travel/en/my/cookie-policy/) [Terms of Use](https://www.japan.travel/en/terms-of-use/) [Links](https://www.japan.travel/en/links/)\n\nlogo\n\n[![JNTO](https://res-3.cloudinary.com/jnto/image/upload/v1515550491/static/svg/common/logo_white.svg)](https://www.japan.travel/en/my/)\n\ninline-list\n\n[Privacy Policy](https://www.japan.travel/en/my/privacy-policy/) [Cookie Policy](https://www.japan.travel/en/my/cookie-policy/) [Terms of Use](https://www.japan.travel/en/terms-of-use/) [Links](https://www.japan.travel/en/links/)\n\nsocial-media\n\n[facebook](https://www.facebook.com/Visit.My.Japan) [instagram](https://www.instagram.com/visitmyjapan/) [youtube](https://www.youtube.com/c/JNTOMALAYSIACHANNEL)\n\nSelect Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)\n\nCopyright © Japan National Tourism Organization. All Rights Reserved.\n\nThank you!\n\nPlease Choose Your Language\n\nBrowse the JNTO site in one of multiple languages\n\nSelect Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)continue\n\nWe and third party companies with your consent use cookies on this website to measure the audience of our website, to provide enhanced functionality and personalization, to serve targeted advertisement, and to utilize social media features. We may share information about your use of this website with third party companies.\nSee our “Cookie Policy” and “Cookie Settings” for more information.\n\nPlease click “Accept All Cookies” if you agree to the use of all of our cookies. Please click “Reject All Cookies” to reject the use of all our cookies. Please move the selector switch to active if you agree to the use of a part of our cookies.\n\nIn addition, you can change or withdraw your consent at any time by clicking “Cookie Settings” under the Article 3.2 of “Cookie Policy”.\n[Cookie Policy](https://www.japan.travel/en/cookie-policy/)\n\n- #### Strictly Necessary Cookies\n\n\nAlways Active\n\n- #### Performance Cookies\n\n\nPerformance Cookies\n\n- #### Functional Cookies\n\n\nFunctional Cookies\n\n- #### Targeting Cookies\n\n\nTargeting Cookies\n\n\nCookie Settings\n\nSave Choices\n\nReject All CookiesAccept All Cookies\n\n[![Powered by Onetrust](https://cdn-apac.onetrust.com/logos/static/powered_by_logo.svg)](https://www.onetrust.com/products/cookie-consent/)\n\n![Company Logo](https://cdn-apac.onetrust.com/logos/1e9940c4-c3a4-4782-b750-715350ca1c1d/8570a741-bb3e-4f32-98e1-3c856e95b06c/80fc97a7-a334-42e3-aecf-35ea91794178/jnto_logo.png)\n\n## Privacy Preference Center\n\n## Privacy Preference Center\n\n- ### Your Privacy\n\n- ### Strictly Necessary Cookies\n\n- ### Performance Cookies\n\n- ### Functional Cookies\n\n- ### Targeting Cookies\n\n\n#### Your Privacy\n\nExcept for strictly necessary cookies, you can accept or refuse our use of cookies. Click on the different category headings to find out more and change our default settings.\n\n\n[More information](https://www.japan.travel/en/cookie-policy/)\n\n#### Strictly Necessary Cookies\n\nAlways Active\n\nThese cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.    You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.\n\nCookies Details‎\n\n#### Performance Cookies\n\nPerformance CookiesInactive\n\nThese cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site.    All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.\n\nCookies Details‎\n\n#### Functional Cookies\n\nFunctional CookiesInactive\n\nThese cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages.    If you do not allow these cookies then some or all of these services may not function properly.\n\nCookies Details‎\n\n#### Targeting Cookies\n\nTargeting CookiesInactive\n\nThese cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites.    They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\n\nCookies Details‎\n\nBack Button\n\n### Cookie List\n\nFilter Button\n\nConsentLeg.Interest\n\ncheckbox labellabel\n\ncheckbox labellabel\n\ncheckbox labellabel\n\nClear\n\ncheckbox labellabel\n\nApplyCancel\n\nConfirm My Choices\n\nReject AllAllow All\n\n[![Powered by Onetrust](https://cdn-apac.onetrust.com/logos/static/powered_by_logo.svg)](https://www.onetrust.com/products/cookie-consent/)","metadata":{"url":"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/","title":"List of Travel Agencies in Malaysia","favicon":"https://www.japan.travel/static/favicon.992861e8417e.ico","og:type":"website","ogImage":"\n  https://res-3.cloudinary.com/jnto/image/upload/w_1000,h_667,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1\n","ogTitle":"List of Travel Agencies in Malaysia","language":"en-my","ob:title":"List of Travel Agencies in Malaysia","og:image":"\n  https://res-3.cloudinary.com/jnto/image/upload/w_1000,h_667,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1\n","og:title":"List of Travel Agencies in Malaysia","scrapeId":"51c9ff41-5e6f-4826-8754-ad190c70f261","viewport":"width=device-width","proxyUsed":"basic","sourceURL":"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/","ogSiteName":"Japan National Tourism Organization (JNTO)","statusCode":200,"contentType":"text/html; charset=utf-8","description":"None","og:site_name":"Japan National Tourism Organization (JNTO)","twitter:card":"summary_large_image","ogDescription":"None","og:description":"None","format-detection":"telephone=no","ahrefs-site-verification":"","google-site-verification":["dQJlrBsMI52FmtL1nbI1yxauaXdvPhU7zoID5BJYrrg",""]}},"success":true}}],"When clicking ‘Test workflow’":[{"json":{}}]},"settings":{"callerPolicy":"workflowsFromSameOwner","executionOrder":"v1"},"versionId":"fa1737d5-7f2f-44b3-a07d-ce85f26adf5e","connections":{"Split Out":{"main":[[{"node":"Google Sheet - Data Store","type":"main","index":0}]]},"HTTP Scrape Website":{"main":[[{"node":"OpenAI Standardise Data","type":"main","index":0}]]},"OpenAI1 Mail Composer":{"main":[[{"node":"Google Sheet Update Records","type":"main","index":0}]]},"Google Sheet Data Store":{"main":[[{"node":"OpenAI1 Mail Composer","type":"main","index":0}]]},"OpenAI Standardise Data":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Google Sheet Update Records":{"main":[[{"node":"Send Email","type":"main","index":0}]]},"When clicking ‘Test workflow’":{"main":[[{"node":"Google Sheet Data Store","type":"main","index":0}]]}}}


name: Send Daily Weather Forecasts from OpenWeatherMap to Telegram with Smart Formatting
author_name: Aurélien P.
author_username: aurelienpp
nodes_used: ["n8n-nodes-base.httpRequest","n8n-nodes-base.telegram","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-02T21:00:37.040Z
updated_at: 2025-06-02T21:00:37.040Z
url: https://n8n.io/workflows/4608
scraped_at: 2025-06-19 22:50:34
description:
  🌤️ Daily Weather Forecast Bot

  A comprehensive n8n workflow that fetches detailed weather forecasts from OpenWeatherMap and sends beautifully formatted daily summaries to Telegram.

  📋 Features

  📊 Daily Overview**: Complete temperature range, rainfall totals, and wind conditions
  ⏰ Hourly Forecast**: Weather predictions at key times (9AM, 12PM, 3PM, 6PM, 9PM)
  🌡️ Smart Emojis**: Context-aware weather icons and temperature indicators
  💡 Smart Recommendations**: Contextual advice (umbrella alerts, clothing suggestions, sun protection)
  🌪️ Enhanced Details**: Feels-like temperature, humidity levels, wind speed, UV warnings
  📱 Rich Formatting**: HTML-formatted messages with emojis for excellent readability
  🕐 Timezone-Aware**: Proper handling of Luxembourg timezone (CET/CEST)

  🛠️ What This Workflow Does

  Triggers daily at 7:50 AM to send morning weather updates
  Fetches 5-day forecast from OpenWeatherMap API with 3-hour intervals
  Processes and analyzes weather data with smart algorithms
  Formats comprehensive report with HTML styling and emojis
  Sends to Telegram with professional formatting and actionable insights

  ⚙️ Setup Instructions

  1. OpenWeatherMap API
  Sign up at OpenWeatherMap
  Get your free API key (1000 calls/day included)
  Replace API_KEY in the HTTP Request node URL

  2. Telegram Bot
  Message @BotFather on Telegram
  Send /newbot command and follow instructions
  Copy the bot token to n8n credentials
  Get your chat ID by messaging the bot, then visiting:
  https://api.telegram.org/bot&lt;YOUR_BOT_TOKEN&gt;/getUpdates
  Update the chatId parameter in the Telegram node

  3. Location Configuration
  Default location: Strassen, Luxembourg
  To change: modify q=Strassen in the HTTP Request URL
  Format: q=CityName,CountryCode (e.g., q=Paris,FR)

  🎯 Technical Details

  API Source**: OpenWeatherMap 5-day forecast
  Schedule**: Daily at 7:50 AM (configurable)
  Format**: HTML with rich emoji formatting
  Error Handling**: 3 retry attempts with 5-second delays
  Rate Limits**: Uses only 1 API call per day
  Timezone**: Europe/Luxembourg (handles CET/CEST automatically)

  📊 Weather Data Analyzed

  Temperature ranges and "feels like" temperatures
  Precipitation forecasts and accumulation
  Wind speed and conditions
  Humidity levels and comfort indicators
  Cloud coverage and visibility
  UV index recommendations
  Time-specific weather patterns

  💡 Smart Features

  Conditional Recommendations**: Only shows relevant advice
  Night/Day Awareness**: Different emojis for time of day
  Temperature Context**: Color-coded temperature indicators
  Weather Severity**: Appropriate icons for weather intensity
  Humidity Comfort**: Comfort level indicators
  Wind Analysis**: Descriptive wind condition text

  🔧 Customization Options

  Schedule**: Modify trigger time in the Schedule node
  Location**: Change city in HTTP Request URL
  Forecast Hours**: Adjust desiredHours array in the code
  Temperature Thresholds**: Modify emoji temperature ranges
  Recommendation Logic**: Customize advice triggers

  📱 Sample Output
  🌤️ Weather Forecast for Strassen, LU
  📅 Monday, 2 June 2025
  📊 Daily Overview
  🌡️ Range: 12°C - 22°C
  💧 Comfortable (65%)
  ⏰ Hourly Forecast
  🕒 09:00 ☀️ 15°C
  🕒 12:00 🌤️ 20°C
  🕒 15:00 ☀️ 22°C (feels 24°C)
  🕒 18:00 ⛅ 19°C
  🕒 21:00 🌙 16°C
  📡 Data from OpenWeatherMap | Updated: 07:50 CET

  🚀 Getting Started

  Import this workflow to your n8n instance
  Add your OpenWeatherMap API key
  Set up Telegram bot credentials
  Test manually first
  Activate for daily automated runs

  📋 Requirements

  n8n instance (cloud or self-hosted)
  Free OpenWeatherMap API account
  Telegram bot token
  Basic understanding of n8n workflows

  Perfect for: Daily weather updates, team notifications, personal weather tracking, smart home automation triggers.

workflow_json:
  {"meta":{"instanceId":"411a4eea57cf88d4a82c27728a11bad4fe2fdcbc1ab5eae589890a37e4b909ca","templateCredsSetupCompleted":true},"nodes":[{"id":"ae4935b5-9d82-45c6-849e-e4b5d99d9f98","name":"Daily Morning Trigger","type":"n8n-nodes-base.scheduleTrigger","notes":"Triggers every day at 7:50 AM to send weather forecast before work hours","position":[-200,-300],"parameters":{"rule":{"interval":[{"triggerAtHour":7,"triggerAtMinute":50}]}},"typeVersion":1.2},{"id":"fd99b9db-969a-4ce2-8823-343c0b847c84","name":"OpenWeather API Request","type":"n8n-nodes-base.httpRequest","notes":"Fetches 5-day forecast data with 3-hour intervals for Strassen, Luxembourg","maxTries":3,"position":[220,-300],"parameters":{"url":"https://api.openweathermap.org/data/2.5/forecast?q=Strassen&appid=API_KEY&units=metric","options":{"timeout":30000}},"notesInFlow":true,"retryOnFail":true,"typeVersion":4.2,"waitBetweenTries":5000},{"id":"0703447c-83b0-4261-a2a6-4063a48e64d0","name":"Weather Data Processor","type":"n8n-nodes-base.code","notes":"Enhanced processor with comprehensive weather analysis, recommendations, and formatting","position":[620,-300],"parameters":{"jsCode":"// Enhanced Weather Forecast Processor\n// Processes OpenWeatherMap API data and formats for Telegram\n\nfunction getWeatherEmoji(weatherMain, cloudiness = 0, isNight = false) {\n const emojiMap = {\n   'Clear': isNight ? '🌙' : '☀️',\n   'Clouds': cloudiness > 75 ? '☁️' : cloudiness > 25 ? '⛅' : '🌤️',\n   'Rain': '🌧️',\n   'Drizzle': '🌦️',\n   'Thunderstorm': '⛈️',\n   'Snow': '❄️',\n   'Mist': '🌫️',\n   'Fog': '🌫️',\n   'Haze': '🌫️',\n   'Smoke': '🌫️'\n };\n return emojiMap[weatherMain] || '🌤️';\n}\n\nfunction getTemperatureEmoji(temp) {\n if (temp >= 30) return '🔥';\n if (temp >= 25) return '😎';\n if (temp >= 20) return '😊';\n if (temp >= 15) return '😐';\n if (temp >= 10) return '🧥';\n if (temp >= 5) return '🥶';\n return '🧊';\n}\n\nfunction getWindInfo(windSpeed, windDir = null) {\n let windEmoji = '💨';\n let windText = '';\n \n if (windSpeed < 2) windText = 'Calm';\n else if (windSpeed < 6) windText = 'Light breeze';\n else if (windSpeed < 12) windText = 'Moderate breeze';\n else if (windSpeed < 20) windText = 'Strong breeze';\n else windText = 'Very windy';\n \n const windKmh = (windSpeed * 3.6).toFixed(1);\n return `${windEmoji} ${windText} (${windKmh} km/h)`;\n}\n\nfunction getHumidityLevel(humidity) {\n if (humidity >= 80) return '💧 Very humid';\n if (humidity >= 60) return '💧 Humid';\n if (humidity >= 40) return '💧 Comfortable';\n return '🏜️ Dry';\n}\n\nfunction getUVAdvice(hour) {\n // Estimate UV based on time (simplified)\n if (hour >= 10 && hour <= 16) return '☀️ Consider sun protection';\n return '';\n}\n\nfunction formatDateTime(dtText) {\n const date = new Date(dtText);\n const timeStr = date.toLocaleTimeString('en-GB', { \n   hour: '2-digit', \n   minute: '2-digit',\n   timeZone: 'Europe/Luxembourg'\n });\n return timeStr;\n}\n\n// Main processing\nconst forecast = items[0].json.list;\nconst cityName = items[0].json.city?.name || 'Strassen';\nconst country = items[0].json.city?.country || 'LU';\nconst timezone = items[0].json.city?.timezone || 0;\n\nconst now = new Date();\nconst today = now.toISOString().split('T')[0];\nconst desiredHours = [\"09:00\", \"12:00\", \"15:00\", \"18:00\", \"21:00\"];\n\nlet summary = '';\nlet headerIcon = '🌤️';\nlet dayHighTemp = -999;\nlet dayLowTemp = 999;\nlet totalRain = 0;\nlet avgHumidity = 0;\nlet avgWindSpeed = 0;\nlet weatherCount = 0;\n\n// Process today's forecast\nlet firstMatch = true;\nforecast.forEach(item => {\n const dt = item.dt_txt;\n const [date, time] = dt.split(' ');\n const hour = time.slice(0, 5);\n const hourNum = parseInt(time.slice(0, 2));\n\n if (date === today && desiredHours.includes(hour)) {\n   const temp = Math.round(item.main.temp);\n   const feelsLike = Math.round(item.main.feels_like);\n   const humidity = item.main.humidity;\n   const windSpeed = item.wind?.speed || 0;\n   const rain = item.rain?.['3h'] || 0;\n   const clouds = item.clouds?.all || 0;\n   const weatherMain = item.weather?.[0]?.main || '';\n   const weatherDesc = item.weather?.[0]?.description || '';\n   const isNight = hourNum < 6 || hourNum > 20;\n\n   // Track daily stats\n   dayHighTemp = Math.max(dayHighTemp, temp);\n   dayLowTemp = Math.min(dayLowTemp, temp);\n   totalRain += rain;\n   avgHumidity += humidity;\n   avgWindSpeed += windSpeed;\n   weatherCount++;\n\n   // Set header icon based on first matching hour\n   if (firstMatch && weatherMain) {\n     headerIcon = getWeatherEmoji(weatherMain, clouds, isNight);\n     firstMatch = false;\n   }\n\n   const tempEmoji = getTemperatureEmoji(temp);\n   const weatherEmoji = getWeatherEmoji(weatherMain, clouds, isNight);\n   const feelsLikeText = Math.abs(temp - feelsLike) > 2 ? ` (feels ${feelsLike}°C)` : '';\n   const rainText = rain > 0 ? `, 🌧️ ${rain}mm` : '';\n   const windText = windSpeed > 3 ? `, ${getWindInfo(windSpeed).split(' ')[0]} ${(windSpeed * 3.6).toFixed(0)} km/h` : '';\n   const humidityText = humidity > 80 || humidity < 30 ? `, 💧 ${humidity}%` : '';\n   const uvText = getUVAdvice(hourNum);\n\n   summary += `🕒 <b>${hour}</b> ${weatherEmoji} ${temp}°C${feelsLikeText}${rainText}${windText}${humidityText}\\n`;\n   if (uvText) summary += `    ${uvText}\\n`;\n }\n});\n\n// Calculate averages\nif (weatherCount > 0) {\n avgHumidity = Math.round(avgHumidity / weatherCount);\n avgWindSpeed = avgWindSpeed / weatherCount;\n}\n\n// Build comprehensive message\nlet message = `${headerIcon} <b>Weather Forecast for ${cityName}, ${country}</b>\\n`;\nmessage += `📅 ${now.toLocaleDateString('en-GB', { \n weekday: 'long', \n year: 'numeric', \n month: 'long', \n day: 'numeric',\n timeZone: 'Europe/Luxembourg'\n})}\\n\\n`;\n\n// Daily overview\nmessage += `<b>📊 Daily Overview</b>\\n`;\nif (dayHighTemp > -999 && dayLowTemp < 999) {\n message += `🌡️ Range: ${dayLowTemp}°C - ${dayHighTemp}°C\\n`;\n}\nif (totalRain > 0) {\n message += `🌧️ Expected rain: ${totalRain.toFixed(1)}mm\\n`;\n}\nif (avgWindSpeed > 2) {\n message += `${getWindInfo(avgWindSpeed)}\\n`;\n}\nmessage += `${getHumidityLevel(avgHumidity)} (${avgHumidity}%)\\n\\n`;\n\n// Hourly forecast\nmessage += `<b>⏰ Hourly Forecast</b>\\n`;\nmessage += summary;\n\n// Smart recommendations - only show section if there are recommendations\nlet recommendations = '';\nif (totalRain > 0) {\n recommendations += `☂️ Bring an umbrella or raincoat\\n`;\n}\nif (dayLowTemp < 10) {\n recommendations += `🧥 Dress warmly (below 10°C expected)\\n`;\n}\nif (dayHighTemp > 25) {\n recommendations += `💧 Stay hydrated and consider sun protection\\n`;\n}\nif (avgWindSpeed > 15) {\n recommendations += `💨 Windy conditions - secure loose items\\n`;\n}\nif (avgHumidity > 80) {\n recommendations += `💦 High humidity - may feel warmer than actual temperature\\n`;\n}\n\n// Only add recommendations section if there are any recommendations\nif (recommendations) {\n message += `\\n<b>💡 Recommendations</b>\\n`;\n message += recommendations;\n}\n\n// Footer with data source and time\nconst updateTime = now.toLocaleTimeString('en-GB', {\n hour: '2-digit',\n minute: '2-digit',\n timeZone: 'Europe/Luxembourg'\n});\nmessage += `\\n<i>📡 Data from OpenWeatherMap | Updated: ${updateTime} CET</i>`;\n\nreturn [{ json: { message: message } }];"},"notesInFlow":true,"typeVersion":2},{"id":"c620d227-2228-4473-a83f-7de21b02ba8c","name":"Send Weather Update","type":"n8n-nodes-base.telegram","notes":"Sends formatted weather forecast to Telegram with HTML formatting","position":[1000,-300],"webhookId":"7f401274-108a-4ead-b6da-b817ad58be30","parameters":{"text":"={{$json[\"message\"]}}","chatId":"-1002521174755","additionalFields":{"parse_mode":"HTML","disable_web_page_preview":true}},"credentials":{"telegramApi":{"id":"d6O4BUmt3I6XZJ1D","name":"Telegram account"}},"typeVersion":1.2},{"id":"fad24450-beef-4da4-9f56-e6659e06d06d","name":"Schedule Setup","type":"n8n-nodes-base.stickyNote","position":[-240,-120],"parameters":{"width":300,"height":520,"content":"### ⏰ Schedule Configuration\n\n**Current Settings:**\n- **Time**: 7:50 AM daily\n- **Timezone**: System timezone (usually UTC in n8n cloud)\n\n**💡 Tips:**\n- For Luxembourg time, consider UTC offset\n- Winter: UTC+1 (CET)\n- Summer: UTC+2 (CEST)\n- Adjust trigger time accordingly\n\n**🔧 To Change:**\n1. Click on Schedule Trigger node\n2. Modify `triggerAtHour` and `triggerAtMinute`\n3. Add multiple schedules if needed"},"typeVersion":1},{"id":"153eed2e-091b-4045-80c9-4c12fe11beaf","name":"API Configuration","type":"n8n-nodes-base.stickyNote","position":[120,-120],"parameters":{"color":3,"width":340,"height":520,"content":"### 🌐 OpenWeatherMap API\n\n**🔑 API Key Setup:**\n1. Sign up at [OpenWeatherMap](https://openweathermap.org/api)\n2. Get your free API key\n3. Replace the key in the URL parameter\n\n**📍 Location Settings:**\n- Current: `q=Strassen` (Luxembourg)\n- Format: `q=CityName,CountryCode`\n- Examples: `q=Paris,FR` or `q=London,GB`\n\n**📊 API Features:**\n- 5-day forecast with 3-hour intervals\n- Metric units (Celsius, km/h)\n- Includes: temp, humidity, wind, rain, clouds\n\n**⚠️ Rate Limits:**\n- Free tier: 60 calls/minute, 1000 calls/day\n- This workflow uses 1 call per day"},"typeVersion":1},{"id":"764cbb6e-db67-4128-8f55-936403f4c07f","name":"Processing Features","type":"n8n-nodes-base.stickyNote","position":[500,-120],"parameters":{"color":5,"width":340,"height":520,"content":"### 💻 Code Node Features\n\n**🔧 Enhanced Processing:**\n- **Smart Emojis**: Weather + temperature-based icons\n- **Comprehensive Data**: Feels-like temp, wind, humidity\n- **Daily Stats**: High/low temps, total rainfall\n- **Time-Aware**: Night/day emoji variations\n- **Recommendations**: Context-aware advice\n\n**📊 Calculated Metrics:**\n- Temperature ranges and averages\n- Total expected rainfall\n- Wind speed in km/h\n- Humidity comfort levels\n- UV protection recommendations\n\n**🎨 Formatting:**\n- HTML bold/italic formatting\n- Structured sections with headers\n- Emoji-based visual indicators\n- Timezone-aware timestamps"},"typeVersion":1},{"id":"56f717ee-2231-4ca7-b596-a32e9defd1f6","name":"Telegram Setup","type":"n8n-nodes-base.stickyNote","position":[900,-120],"parameters":{"width":340,"height":520,"content":"### 📱 Telegram Setup\n\n**🤖 Bot Creation:**\n1. Message [@BotFather](https://t.me/BotFather) on Telegram\n2. Send `/newbot` command\n3. Choose bot name and username\n4. Copy the API token\n\n**🆔 Chat ID Setup:**\n1. Add bot to your group/channel OR\n2. Start private chat with bot\n3. Send a message to the bot\n4. Visit: `https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates`\n5. Find your chat ID in the response\n6. Update the `chatId` parameter\n\n**⚙️ Message Settings:**\n- **HTML parsing** enabled for formatting\n- **Web preview** disabled to keep messages clean\n- Supports emojis and rich text"},"typeVersion":1},{"id":"ae5a111b-8be6-4260-abb4-66093c757e35","name":"Setup Checklist","type":"n8n-nodes-base.stickyNote","position":[1280,-560],"parameters":{"color":7,"width":400,"height":640,"content":"### 🚀 Quick Setup Checklist\n\n**✅ Essential Steps:**\n1. **OpenWeatherMap API Key**\n   - Sign up and get free API key\n   - Replace in HTTP Request URL\n\n2. **Telegram Bot**\n   - Create bot via @BotFather\n   - Add bot token to credentials\n   - Update chatId in Telegram node\n\n3. **Test the Workflow**\n   - Execute manually first\n   - Check Telegram for message\n   - Activate for daily runs\n\n**🔧 Optional Customizations:**\n- Change city in HTTP URL\n- Adjust schedule timing\n- Modify forecast hours in code\n- Add more weather parameters\n\n**📋 Monitoring:**\n- Check execution history\n- Monitor API usage\n- Verify daily messages"},"typeVersion":1},{"id":"28c828bc-5b66-4e59-81f7-d941088cbbc6","name":"Weather Bot Overview","type":"n8n-nodes-base.stickyNote","position":[-260,-900],"parameters":{"color":6,"width":900,"height":500,"content":"## 🌤️ Daily Weather Forecast Bot\n\n### 📋 What It Does\nFetches detailed weather forecast from OpenWeatherMap API for **Strassen, Luxembourg** and sends a comprehensive daily weather summary to Telegram every morning at **7:50 AM**.\n\n---\n### 🔍 Features\n- **📊 Daily Overview**: Temperature range, total rainfall, wind conditions\n- **⏰ Hourly Forecast**: Weather at key times (9AM, 12PM, 3PM, 6PM, 9PM)\n- **🌡️ Smart Emojis**: Weather-based icons and temperature indicators\n- **💡 Recommendations**: Contextual advice (umbrella, warm clothes, sun protection)\n- **🌪️ Enhanced Details**: Feels-like temperature, humidity, wind speed, UV warnings\n- **📱 Rich Formatting**: HTML-formatted messages for better readability\n\n---\n### 🛠️ Technical Details\n- **API**: OpenWeatherMap 5-day forecast (3-hour intervals)\n- **Location**: Strassen, Luxembourg (configurable in HTTP node)\n- **Timezone**: Europe/Luxembourg (CET/CEST)\n- **Format**: HTML with emojis and formatting\n- **Error Handling**: 3 retry attempts with 5-second delays\n\n---\n### ⚙️ Configuration\n1. **API Key**: Replace `dsqdsqdsqdsqsdq` with your OpenWeatherMap API key\n2. **Location**: Change `q=Strassen` in the HTTP request URL for different cities\n3. **Schedule**: Modify trigger time in Schedule node\n4. **Telegram**: Update `chatId` with your chat/group ID\n\n---\n✅ **Ready to use!** Just update the API key and chat ID."},"typeVersion":1}],"pinData":{},"connections":{"Daily Morning Trigger":{"main":[[{"node":"OpenWeather API Request","type":"main","index":0}]]},"Weather Data Processor":{"main":[[{"node":"Send Weather Update","type":"main","index":0}]]},"OpenWeather API Request":{"main":[[{"node":"Weather Data Processor","type":"main","index":0}]]}}}


name: Automatic Workflow & Credentials Backup to GitHub with Change Detection
author_name: Hamed Nickmehr
author_username: hamed-nickmehr
nodes_used: ["n8n-nodes-base.github","n8n-nodes-base.crypto"]
categories: []
created_at: 2025-06-02T22:30:28.990Z
updated_at: 2025-06-02T22:30:28.990Z
url: https://n8n.io/workflows/4609
scraped_at: 2025-06-19 22:50:04
description:
  This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. 

  Title: n8n Credentials and Workflows Backup on Change Detection

  Purpose:
  Never lose track of your n8n changes again! This workflow smartly backs up all your workflows and credentials, automatically detects any changes using hash comparison, and pushes updates to GitHub—but only when something has actually changed. Set your own interval and stop cluttering your repo with redundant commits.

  Walkthrough Video on YouTube



  Trigger:

  Schedule Trigger**: Executes the entire process at a user-defined interval. No need to worry about traceability or managing countless backups, as the workflow only commits changes when a difference is detected.



  Workflow Backup Process:

  Set Workflow Path: Defines the local backup file path for workflows.
  Get Old Workflow Hash: Executes a helper workflow to retrieve the previous hash.
  Execute Workflow Backup: Runs n8n export:workflow to export all workflows to the defined file path.
  Get New Workflow Hash: Executes a helper workflow to generate the new hash from the exported file.
  Compare Hashes (If Workflow Updated): Checks if the new hash differs from the old one.
  If Updated:

     Read Workflow Data → Extract Text → Push to GitHub: Reads, extracts, and commits the updated workflow JSON to GitHub under a timestamped filename.

  Credential Backup Process:

  Set Credential Path: Defines the local backup file path for credentials.
  Get Old Credential Hash: Executes a helper workflow to retrieve the previous hash.
  Execute Credential Backup: Runs n8n export:credentials to export all credentials.
  Get New Credential Hash: Executes a helper workflow to generate the new hash from the exported file.
  Compare Hashes (If Credential Updated): Checks for changes.
  If Updated:

     Read Credential Data → Extract Text → Push to GitHub: Commits the new credentials JSON to GitHub if changes are found.

  Hash Generator (Helper Flow):
  Used in both workflow and credential backup paths:

  Read File* → *Extract Text* → *Hash Data**
  Outputs SHA-256 hash used for comparison

  GitHub Integration:

  Commits are created with ISO timestamp in the filename and message.
  Repository: https://github.com/your-github-name/n8n-onchange-bachup
  File paths: backups/WorkFlow Backup -timestamp-.json and backups/Credential Backup -timestamp-.json

  Change Detection Logic:

  Only commits files when hash changes are detected (i.e., actual content change).
  Avoids unnecessary GitHub commits and storage use.

  Error Handling:

  GitHub nodes are set to continue workflow execution on error, avoiding full process interruption.

workflow_json:
  {"meta":{"instanceId":"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"},"nodes":[{"id":"6f0fcaed-fd41-4ac4-816d-41098539f42a","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-1900,-180],"parameters":{"rule":{"interval":[{"field":"hours"}]}},"typeVersion":1.2},{"id":"1211ee7a-03d1-4a00-9759-bc0402d3686c","name":"Get New Workflow Hash","type":"n8n-nodes-base.executeWorkflow","position":[-1020,-280],"parameters":{"options":{},"workflowId":{"__rl":true,"mode":"list","value":"U7Jh9njKLEjGLVIl","cachedResultName":"n8n Backup Changes"},"workflowInputs":{"value":{"filePath":"={{ $('Set Workflow Path').item.json.filePath }}"},"schema":[{"id":"filePath","type":"string","display":true,"removed":false,"required":false,"displayName":"filePath","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["filePath"],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2,"alwaysOutputData":false},{"id":"d655d400-d743-4dd8-8b05-12701c8c4f9d","name":"Get Old Workflow Hash","type":"n8n-nodes-base.executeWorkflow","onError":"continueRegularOutput","position":[-1460,-280],"parameters":{"options":{},"workflowId":{"__rl":true,"mode":"list","value":"U7Jh9njKLEjGLVIl","cachedResultName":"n8n Backup Changes"},"workflowInputs":{"value":{"filePath":"={{ $('Set Workflow Path').item.json.filePath }}"},"schema":[{"id":"filePath","type":"string","display":true,"removed":false,"required":false,"displayName":"filePath","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["filePath"],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2,"alwaysOutputData":true},{"id":"0d13634a-f74a-4194-8a54-9531205d0883","name":"Read Workflow Data","type":"n8n-nodes-base.readWriteFile","position":[-580,-280],"parameters":{"options":{},"fileSelector":"={{ $('Set Workflow Path').item.json.filePath }}"},"typeVersion":1},{"id":"cfa7d2e0-e63d-4392-899d-13fd2b587a15","name":"Set Workflow Path","type":"n8n-nodes-base.set","position":[-1680,-280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"c60cce2a-609d-417e-a73c-9719a490cc85","name":"filePath","type":"string","value":"/data/shared/WorkFlowBackup.json"}]}},"typeVersion":3.4},{"id":"5b5250ed-c3de-431f-8e4b-c8b6a6352393","name":"Execute Workflow Backup","type":"n8n-nodes-base.executeCommand","position":[-1240,-280],"parameters":{"command":"=n8n export:workflow --all --output={{ $('Set Workflow Path').item.json.filePath }}"},"typeVersion":1,"alwaysOutputData":true},{"id":"510d346d-2eec-4839-aa99-6d61cc00573a","name":"Read File","type":"n8n-nodes-base.readWriteFile","position":[-1680,-540],"parameters":{"options":{},"fileSelector":"={{ $json.filePath }}"},"typeVersion":1},{"id":"9ce2b61a-d4cd-46f5-a20b-02cbb864c259","name":"Extract Data","type":"n8n-nodes-base.extractFromFile","position":[-1460,-540],"parameters":{"options":{},"operation":"text"},"typeVersion":1},{"id":"381e022a-f265-4a07-9a49-27f401cc08d3","name":"Hash Data","type":"n8n-nodes-base.crypto","position":[-1240,-540],"parameters":{"type":"SHA256","value":"={{$json.data}}","dataPropertyName":"hash"},"typeVersion":1},{"id":"73d5f6a5-a4ee-49f9-ba5f-2646887daf9b","name":"Hash Maker","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-1900,-540],"parameters":{"workflowInputs":{"values":[{"name":"filePath"}]}},"typeVersion":1.1},{"id":"78bd1ed8-0c19-4106-ab84-1d25f0f4b806","name":"Extract Workflow Data","type":"n8n-nodes-base.extractFromFile","position":[-360,-280],"parameters":{"options":{},"operation":"text"},"typeVersion":1},{"id":"740fd3e5-f356-436c-ad2b-86da10fb346d","name":"GitHub Workflow Backup","type":"n8n-nodes-base.github","onError":"continueRegularOutput","position":[-140,-280],"webhookId":"ccf2ad35-62aa-4e3e-9811-ea6d7fca0aba","parameters":{"owner":{"__rl":true,"mode":"list","value":"nickmehr-hamed","cachedResultUrl":"https://github.com/nickmehr-hamed","cachedResultName":"nickmehr-hamed"},"filePath":"={{ \"backups/WorkFlow Backup \" + new Date($now).toISOString().replace('T', ' ').slice(0, 16) + \".json\" }}","resource":"file","repository":{"__rl":true,"mode":"url","value":"https://github.com/nickmehr-hamed/n8n"},"fileContent":"={{ $json.data }}","commitMessage":"={{ \"WorkFlow Backup \" + new Date($now).toISOString().replace('T', ' ').slice(0, 16) }}"},"credentials":{"githubApi":{"id":"4ZsFUnBi2lfVYEHW","name":"GitHub account"}},"typeVersion":1.1},{"id":"dc2e73a2-36d8-4d92-947f-b3d01fac934d","name":"Get New Credential Hash","type":"n8n-nodes-base.executeWorkflow","position":[-1020,-80],"parameters":{"options":{},"workflowId":{"__rl":true,"mode":"list","value":"U7Jh9njKLEjGLVIl","cachedResultName":"n8n Backup Changes"},"workflowInputs":{"value":{"filePath":"={{ $('Set Credential Path').item.json.filePath }}"},"schema":[{"id":"filePath","type":"string","display":true,"removed":false,"required":false,"displayName":"filePath","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["filePath"],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2,"alwaysOutputData":false},{"id":"b5512300-5bb4-4781-9d5b-3b61a90d7220","name":"Get Old Credential Hash","type":"n8n-nodes-base.executeWorkflow","onError":"continueRegularOutput","position":[-1460,-80],"parameters":{"options":{},"workflowId":{"__rl":true,"mode":"list","value":"U7Jh9njKLEjGLVIl","cachedResultName":"n8n Backup Changes"},"workflowInputs":{"value":{"filePath":"={{ $('Set Credential Path').item.json.filePath }}"},"schema":[{"id":"filePath","type":"string","display":true,"removed":false,"required":false,"displayName":"filePath","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["filePath"],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2,"alwaysOutputData":true},{"id":"ef1807a5-8d7c-4d05-b819-a433d495ca36","name":"Read Credential Data","type":"n8n-nodes-base.readWriteFile","position":[-580,-80],"parameters":{"options":{},"fileSelector":"={{ $('Set Credential Path').item.json.filePath }}"},"typeVersion":1},{"id":"ceaa31cb-bfff-43b6-9433-7d1e124d6d86","name":"Set Credential Path","type":"n8n-nodes-base.set","position":[-1680,-80],"parameters":{"options":{},"assignments":{"assignments":[{"id":"c60cce2a-609d-417e-a73c-9719a490cc85","name":"filePath","type":"string","value":"/data/shared/CredentialBackup.json"}]}},"typeVersion":3.4},{"id":"babf93ca-cd95-4a38-9ecc-c16ffbd48dc0","name":"Execute Credential Backup","type":"n8n-nodes-base.executeCommand","position":[-1240,-80],"parameters":{"command":"=n8n export:credentials --all --output={{ $('Set Credential Path').item.json.filePath }}"},"typeVersion":1,"alwaysOutputData":true},{"id":"d2c8c228-d276-44f7-831b-611d05610e8f","name":"Extract Credential Data","type":"n8n-nodes-base.extractFromFile","position":[-360,-80],"parameters":{"options":{},"operation":"text"},"typeVersion":1},{"id":"1f94c09d-26aa-444b-b607-1366b7ffc4d0","name":"GitHub Credential Backup","type":"n8n-nodes-base.github","onError":"continueRegularOutput","position":[-140,-80],"webhookId":"ccf2ad35-62aa-4e3e-9811-ea6d7fca0aba","parameters":{"owner":{"__rl":true,"mode":"list","value":"nickmehr-hamed","cachedResultUrl":"https://github.com/nickmehr-hamed","cachedResultName":"nickmehr-hamed"},"filePath":"={{ \"backups/ Credential Backup \" + new Date($now).toISOString().replace('T', ' ').slice(0, 16) + \".json\" }}","resource":"file","repository":{"__rl":true,"mode":"url","value":"https://github.com/nickmehr-hamed/n8n"},"fileContent":"={{ $json.data }}","commitMessage":"={{ \" Credential Backup \" + new Date($today).toISOString().replace('T', ' ').slice(0, 16) }}"},"credentials":{"githubApi":{"id":"4ZsFUnBi2lfVYEHW","name":"GitHub account"}},"typeVersion":1.1},{"id":"a1a606b2-a0d7-4d9c-98b1-4657b902fccd","name":"If Workflow Updated","type":"n8n-nodes-base.if","position":[-800,-280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c028ce1d-3fe9-4dc9-a3e9-296460e12c83","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $('Get New Workflow Hash').item.json.hash }}","rightValue":"={{ $('Get Old Workflow Hash').item.json.hash }}"}]}},"typeVersion":2.2},{"id":"a6809c8d-ccd9-4acf-9854-b6a36e74c439","name":"If Credential Updated","type":"n8n-nodes-base.if","position":[-800,-80],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c028ce1d-3fe9-4dc9-a3e9-296460e12c83","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $('Get New Credential Hash').item.json.hash }}","rightValue":"={{ $('Get Old Credential Hash').item.json.hash }}"}]}},"typeVersion":2.2}],"pinData":{},"connections":{"Hash Data":{"main":[[]]},"Read File":{"main":[[{"node":"Extract Data","type":"main","index":0}]]},"Hash Maker":{"main":[[{"node":"Read File","type":"main","index":0}]]},"Extract Data":{"main":[[{"node":"Hash Data","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Set Workflow Path","type":"main","index":0},{"node":"Set Credential Path","type":"main","index":0}]]},"Set Workflow Path":{"main":[[{"node":"Get Old Workflow Hash","type":"main","index":0}]]},"Read Workflow Data":{"main":[[{"node":"Extract Workflow Data","type":"main","index":0}]]},"If Workflow Updated":{"main":[[{"node":"Read Workflow Data","type":"main","index":0}]]},"Set Credential Path":{"main":[[{"node":"Get Old Credential Hash","type":"main","index":0}]]},"Read Credential Data":{"main":[[{"node":"Extract Credential Data","type":"main","index":0}]]},"Extract Workflow Data":{"main":[[{"node":"GitHub Workflow Backup","type":"main","index":0}]]},"Get New Workflow Hash":{"main":[[{"node":"If Workflow Updated","type":"main","index":0}]]},"Get Old Workflow Hash":{"main":[[{"node":"Execute Workflow Backup","type":"main","index":0}]]},"If Credential Updated":{"main":[[{"node":"Read Credential Data","type":"main","index":0}]]},"Execute Workflow Backup":{"main":[[{"node":"Get New Workflow Hash","type":"main","index":0}]]},"Extract Credential Data":{"main":[[{"node":"GitHub Credential Backup","type":"main","index":0}]]},"Get New Credential Hash":{"main":[[{"node":"If Credential Updated","type":"main","index":0}]]},"Get Old Credential Hash":{"main":[[{"node":"Execute Credential Backup","type":"main","index":0}]]},"Execute Credential Backup":{"main":[[{"node":"Get New Credential Hash","type":"main","index":0}]]}}}


