{
  "id": "xyq7qemab2OGGItB",
  "meta": {
    "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
      ],
      "parameters": {
        "sendTo": "={{ $json.address }}",
        "message": "=Hi,\n\nI just checked out your YouTube channel \u2013 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 \u2013 with no up-front cost.  Would you be open to a quick chat next week? I\u2019d love to show you a couple of ways we could help.\n\nBest Alex",
        "options": {},
        "subject": "=Love your channel, {{ $('Email Exists?').item.json.channelTitle }} \u2013 Quick idea!"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "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": "## \ud83d\udd01 SECTION 1: **Start & Scrape YouTube Data**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \u26a1 `Manual Trigger`\n* \ud83c\udf10 `Trigger Apify Scraper`\n* \ud83c\udf10 `Get Apify Results`\n\n---\n\n### \u2728 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### \ud83d\udce6 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": "## \ud83d\udd0e SECTION 2: **Filter & Prepare Leads**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83e\uddee `Extract Email & Channel`\n* \ud83d\udea6 `Email Exists?`\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step                        | \ud83e\uddfe 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### \ud83e\udde0 Why This Matters:\n\nFiltering out empty emails ensures you don\u2019t 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": "## \u2705 SECTION 3: **Verify Emails via ZeroBounce**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83c\udf10 `Verify Email (ZeroBounce)`\n* \ud83d\udea5 `Email is Valid?`\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step                          | \ud83e\uddfe Description                                                                                             |\n| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |\n| \ud83c\udf10 **Verify Email (ZeroBounce)** | Sends an API request to ZeroBounce to check if the email is `valid`, `catch-all`, `invalid`, `abuse`, etc. |\n| \ud83d\udea5 **Email is Valid?**           | An `IF` node filters out only those emails where the verification result is `\"valid\"` (or safe to send).   |\n\n### \u2705 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": "## \u2709\ufe0f SECTION 4: **Send Cold Email**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83d\udce7 `Send Cold Email` (Gmail)\n\n---\n\n### \u2728 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": "# \ud83e\udde0 YouTube Lead Scraper Automation \u2013 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## \ud83d\udd01 SECTION 1: **Start & Scrape YouTube Data**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \u26a1 `Manual Trigger`\n* \ud83c\udf10 `Trigger Apify Scraper`\n* \ud83c\udf10 `Get Apify Results`\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step                      | \ud83e\uddfe 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### \ud83d\udce6 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## \ud83d\udd0e SECTION 2: **Filter & Prepare Leads**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83e\uddee `Extract Email & Channel`\n* \ud83d\udea6 `Email Exists?`\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step                        | \ud83e\uddfe 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### \ud83e\udde0 Why This Matters:\n\nFiltering out empty emails ensures you don\u2019t waste verification API calls or try to email blanks.\n\n---\n\n## \u2705 SECTION 3: **Verify Emails via ZeroBounce**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83c\udf10 `Verify Email (ZeroBounce)`\n* \ud83d\udea5 `Email is Valid?`\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step                          | \ud83e\uddfe Description                                                                                             |\n| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |\n| \ud83c\udf10 **Verify Email (ZeroBounce)** | Sends an API request to ZeroBounce to check if the email is `valid`, `catch-all`, `invalid`, `abuse`, etc. |\n| \ud83d\udea5 **Email is Valid?**           | An `IF` node filters out only those emails where the verification result is `\"valid\"` (or safe to send).   |\n\n### \u2705 Output Example:\n\n```json\n{\n  \"status\": \"valid\",\n  \"email\": \"contact@fitlifehacks.com\"\n}\n```\n\n---\n\n## \u2709\ufe0f SECTION 4: **Send Cold Email**\n\n### \ud83d\udfe2 **Nodes Involved**\n\n* \ud83d\udce7 `Send Cold Email` (Gmail)\n\n---\n\n### \u2728 What This Section Does\n\n| \ud83d\udd27 Step           | \ud83e\uddfe 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### \ud83d\udc8c 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 \u2014 open to a quick call next week?\n\nBest,  \n[Your Name]  \n[Your Website]\n```\n\n---\n\n## \ud83c\udfaf 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## \ud83d\ude80 Suggestions for Next Level\n\n* \u23f1\ufe0f Add `Wait` or `Delay` nodes to avoid hitting Gmail rate limits\n* \ud83d\udcca Log results to Airtable or Google Sheets\n* \ud83d\udd01 Loop with batch processing for large lead lists\n* \ud83e\udde0 Add AI-generated personalized messages with OpenAI API\n\n---\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "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
          }
        ]
      ]
    }
  }
}