Apify + Google Sheets, clean YouTube creator emails
Building a YouTube outreach list sounds simple until you actually do it. You open 30 channels, scan descriptions, copy an email (maybe), paste it somewhere, then realize you grabbed three “business inquiries” links and one typo.
Growth marketers feel it when partnership targets slip through the cracks. A small agency owner feels it when a team member “finishes the list” but half the rows are unusable. And if you run creator campaigns in-house, Apify Sheets emails automation turns that messy scavenger hunt into a clean, repeatable pipeline.
This workflow uses Apify to find channels, pulls channel details, then uses OpenAI to extract valid email addresses into structured data you can confidently log to Google Sheets (and route into your CRM if you want). Here’s what it does, why it matters, and how to think about setting it up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Apify + Google Sheets, clean YouTube creator emails
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser4", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search Youtube"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Search Term and # of sea..", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Scrape Channels"]
n7@{ icon: "mdi:robot", form: "rounded", label: "Extract Email Address", pos: "b", h: 48 }
n3 --> n4
n4 --> n6
n6 --> n7
n2 -.-> n7
n7 --> n4
n1 -.-> n7
n5 --> n3
n0 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n7 ai
class n2 aiModel
class n3,n6 api
classDef customIcon fill:none,stroke:none
class n3,n6 customIcon
The Problem: YouTube outreach lists get messy fast
YouTube is full of creators who are perfect for partnerships, UGC, affiliate pushes, or brand collabs. Finding them is not the hard part. The hard part is turning “a bunch of channels I like” into a reliable contact list with emails you can actually use. Channel pages change. Descriptions are inconsistent. Some creators hide contact info in weird formatting, and some include multiple addresses that mean different things. If you’re doing this by hand, you spend hours just collecting crumbs, then more time cleaning them.
It adds up fast. And the worst part is how easy it is to think you’re done when the list still isn’t campaign-ready.
- You end up re-checking channels because the first pass missed an email buried in a wall of links.
- Copy-paste errors creep in, so you bounce messages or hit the wrong creator entirely.
- The “cleaning” work becomes a second project, usually right when you want to start outreach.
- There’s no consistent format, so you can’t filter, dedupe, or hand off the list without more edits.
The Solution: Apify + OpenAI extraction into a structured list
This n8n workflow automates the “find channels → read descriptions → pull emails → format results” loop. You start by defining a topic or keyword (like “fitness coach,” “Notion tutorials,” or “podcast clips”). Apify searches YouTube for relevant channels, then the workflow iterates through those results in batches so it can fetch each channel’s description and metadata. Once the raw channel text is collected, OpenAI is used for the part humans are oddly bad at doing consistently: extracting valid email addresses and returning them in a clean, structured JSON format. From there, you can log those cleaned results to Google Sheets, and optionally push qualified contacts into Pipedrive for tracking and follow-up.
The workflow begins with a manual trigger, so you can run it whenever you need fresh leads. It queries YouTube via Apify, loops through channel results, and uses an AI agent backed by an OpenAI chat model to pull emails that match real email patterns. The end result is a standardized output you can actually build campaigns on.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you’re building a list of 50 creators for a new UGC offer. Manually, you might spend about 5 minutes per channel opening pages, hunting through descriptions, and copying details, which is roughly 4 hours (and that’s on a “good” day). With this workflow, you submit your keyword once, let Apify return channels, and let OpenAI extract emails while n8n loops through the batch. You still review the final sheet, but now it’s a quick scan, not a full research session.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Apify for YouTube search and channel scraping
- Google Sheets to store and share clean outreach lists
- OpenAI API key (get it from the OpenAI Platform billing page)
Skill level: Intermediate. You will connect accounts, add API keys, and adjust a few input fields.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You kick it off with a manual run. In n8n, you launch the workflow and provide the search inputs (your keyword/topic and any parameters you want to standardize for your team).
Apify searches YouTube and returns a list of channels. That response is structured enough to work with, but it’s not outreach-ready yet, so the workflow prepares the items for the next stage.
The workflow loops through channels in batches and pulls channel details. This is where it fetches descriptions and metadata one group at a time, which keeps things stable and prevents a big “all at once” failure.
OpenAI extracts emails and formats the output. The AI agent reads each channel description, identifies valid email addresses, and returns structured JSON so downstream tools (Google Sheets and Pipedrive) don’t need guesswork.
You can easily modify the search topic and the output fields to match your campaign needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts on demand, so you can manually run it during setup and testing.
- Add the Manual Launch Trigger node as the workflow trigger.
- Keep default settings since it requires no configuration.
- Optionally leave Flowpast Branding as a reference note for the workflow source.
Step 2: Connect YouTube Search Inputs and API Query
Set the search terms and result size, then run the Apify YouTube scraper via HTTP.
- In Assign Search Inputs, set Search to
n8n workflows. - Set channels to
2to limit the number of results. - Open Query YouTube API and set URL to
=https://api.apify.com/v2/acts/streamers~youtube-scraper/run-sync-get-dataset-items. - Set Method to POST and Body to JSON.
- Paste the JSON body exactly, ensuring expressions remain:
{{ $json.channels }}and{{ $json.Search }}. - Credential Required: Connect your httpQueryAuth credentials in Query YouTube API.
⚠️ Common Pitfall: If you remove the expressions in the JSON body, the API will ignore your dynamic search inputs.
Step 3: Process Results in Batches and Fetch Channel Details
Each channel result is handled one at a time to avoid rate limits and to enrich with channel detail data.
- Keep Iterate Batch Items connected after Query YouTube API to loop through results.
- In Collect Channel Details, set URL to
=https://api.apify.com/v2/acts/apidojo~youtube-scraper/run-sync-get-dataset-items. - Ensure the JSON body includes
"startUrls": ["{{ $json.channelUrl }}"]so each channel’s URL is used. - Credential Required: Connect your httpQueryAuth credentials in Collect Channel Details.
Step 4: Set Up AI Extraction for Email Discovery
The workflow uses an AI agent to extract emails from the channel description and structure the output.
- In Derive Email Contacts, set Text to
={{ $json.description }}. - Keep Prompt Type set to define and ensure the system message matches the email extraction instructions.
- Open Structured Result Parser and confirm the schema example is
{"emails":["email1","email2"]}. - In OpenAI Chat Engine, select model
gpt-4o-mini. - Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
⚠️ Common Pitfall: The Structured Result Parser is an AI sub-node—credentials must be set on OpenAI Chat Engine, not the parser itself.
Step 5: Test and Activate Your Workflow
Run the workflow end-to-end to confirm you receive structured emails for each channel.
- Click Execute Workflow to run from Manual Launch Trigger.
- Verify Query YouTube API returns a list of channels and Collect Channel Details returns descriptions.
- Check Derive Email Contacts output for a structured
emailsarray. - If results look correct, toggle the workflow to Active for ongoing use.
Common Gotchas
- Apify credentials can expire or need specific permissions. If things break, check your Apify API token in the Apify Console first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About an hour if your Apify and OpenAI accounts are ready.
No. You’ll mostly connect credentials and tweak a couple of fields like your YouTube search keyword.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per run for small batches.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s the main thing you’ll customize. Update the “Assign Search Inputs” values to change the YouTube topic, then adjust the OpenAI extraction prompt in the “Derive Email Contacts” agent so it returns exactly the fields you want (email, channel name, channel URL, niche tags). Many teams also add a simple “If” rule to skip channels that don’t include an email at all, so the sheet stays clean.
Most of the time it’s an invalid or expired Apify token in your HTTP Query Auth credential, so regenerate the token in Apify and update it in n8n. It can also be the wrong scraper endpoint (the workflow expects your Apify actors to exist and be accessible). If you’re running big lists, rate limits or actor runtime limits can show up as timeouts, which looks like “random” failures even though it’s just volume.
Dozens to hundreds per run, depending on your Apify plan and how aggressive your batch size is.
Often, yes, because this workflow relies on batching, looping, and structured AI parsing, which gets awkward (and expensive) in many no-code tools. n8n makes it easier to control how many channels you process at a time, retry failures, and keep the data format stable. Self-hosting is also a big deal if you plan to run this a lot. Zapier or Make can still be fine for lightweight lead capture, like “new row in Sheets → send one email.” For scraping plus AI extraction, n8n is usually the calmer option. Talk to an automation expert if you want help choosing.
Once this is running, you stop rebuilding outreach lists from scratch. The workflow handles the repetitive digging, and you get to spend your time on the messages that actually land partnerships.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.