🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

YouTube to Google Sheets, competitor videos logged

Lisa Granqvist Partner Workflow Automation Expert

You start competitor research with good intentions. Then it turns into a messy mix of tabs, half-copied video URLs, and a spreadsheet that nobody trusts.

YouTube Sheets logging hits content strategists first. But marketing leads building dashboards and solo consultants doing audits feel the same drag. You want a clean list of videos per channel, not another “we’ll clean it up later” file.

This workflow pulls videos from any YouTube channel and writes them neatly into Google Sheets, with a simple status system so you always know what ran, what failed, and what needs attention.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: YouTube to Google Sheets, competitor videos logged

The Challenge: Competitor video research becomes a spreadsheet nightmare

Tracking competitor channels sounds simple until you do it weekly. You open a channel, scroll, copy a link, paste it somewhere, then realize you forgot the publish date or grabbed the wrong title. Multiply that by a handful of channels and suddenly you’ve burned an afternoon doing admin work instead of learning what’s working. Worse, inconsistent formatting wrecks sorting and filtering, which means your “research spreadsheet” turns into a pile of notes that can’t power a dashboard, a report, or a strategy call.

It adds up fast. Here’s where it usually breaks down.

  • You waste about 10 minutes per channel just collecting the basics, and that’s before you clean anything.
  • Video titles and URLs end up inconsistent, so duplicates creep in and your counts become unreliable.
  • Someone forgets to record thumbnails or publish dates, which makes quick scanning and recency analysis annoying.
  • There’s no clear “done/error” indicator, so you re-check channels you already processed.

The Fix: Automatically pull channel videos into a clean Google Sheet

This n8n workflow turns your YouTube competitor list into structured data you can actually use. You keep a simple “Channel URLs” tab in Google Sheets with channel links (full URLs, custom URLs, or raw channel IDs) and a status column. When you run the workflow, it reads only the rows marked “Ready,” figures out what kind of input each row is, and converts URLs into the correct channel ID when needed. Then it calls the YouTube API, fetches the latest public videos (10 by default), and writes each video as its own clean row in a “Videos” tab with title, link, description, thumbnail URL, publish date, and more. If something fails, the channel row is marked “Error” so you don’t lose track.

The workflow starts from a manual run inside n8n, so you stay in control. In the middle, it normalizes channel inputs, pauses briefly between batches, and validates the API response so bad calls don’t poison your sheet. Finally, it upserts video records into Google Sheets and marks each channel as Finished or Error.

What Changes: Before vs. After

Real-World Impact

Say you track 12 competitor channels and you log the latest 10 videos for each. Doing it manually, you might spend about 10 minutes per channel collecting titles, links, dates, and thumbnails, which is roughly 2 hours. With this workflow, you paste the channel list once, set them to “Ready,” and run it; the hands-on time is closer to 10 minutes, then you wait for the API calls and sheet updates to finish. That’s a solid chunk of time back every week, and your data is cleaner.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store channels and video rows.
  • YouTube Data API to fetch channel videos via HTTP Request.
  • Google Cloud credentials (create in Google Cloud Console for Sheets + YouTube API access)

Skill level: Intermediate. You will connect Google credentials and confirm the sheet tabs/columns match the template.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

Manual run from n8n. You click Execute (or Test), which is handy when you want to refresh research on your own schedule.

Channel list is pulled from Google Sheets. The workflow reads the “Channel URLs” tab and only processes rows marked “Ready,” so you can queue work without touching the automation.

Inputs are normalized before any YouTube calls. A routing step checks if you provided a raw channel ID or a URL. If it’s a custom or full URL, it extracts the handle and calls the YouTube API to resolve the correct channel ID.

Videos are fetched, validated, then written cleanly. The YouTube API response is checked for success, split into individual video items, and upserted into the “Videos” tab. The original channel row is updated to Finished, or flagged as Error for quick follow-up.

You can easily modify the default “10 videos per channel” limit to pull more (or less) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts manually and then pulls the channel list for processing.

  1. Add the Manual Run Starter node as the trigger.
  2. Connect Manual Run Starter to Fetch Channel List.

Step 2: Connect Google Sheets

These nodes read channel inputs and write results back to your spreadsheet.

  1. Open Fetch Channel List and set Document to [YOUR_ID] and Sheet to Channel Urls.
  2. Set the filter in Fetch Channel List to Status = ready.
  3. Open Upsert Video Records and set Document to [YOUR_ID] and Sheet to Videos.
  4. Confirm Upsert Video Records uses Operation = appendOrUpdate with Matching Columns = video_url.
  5. Open Mark Channel Success and Mark Channel Error and set Document to [YOUR_ID] and Sheet to Channel Urls.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Fetch Channel List, Upsert Video Records, Mark Channel Success, and Mark Channel Error.

Step 3: Set Up Channel Parsing & Routing

This stage standardizes channel inputs and routes them based on ID or handle format.

  1. Connect Fetch Channel List to Batch Iterator, then to Route Channel Input.
  2. In Route Channel Input, keep the five regex rules for {{$json.channel_url}} to route channel URLs, IDs, and handles.
  3. Configure Assign Channel ID A with channel_id = {{ $json.channel_url.match(/UC[\w-]{22}/)?.[0] || '' }}.
  4. Configure Extract Channel Handle with channel_username = {{ $json.channel_url.replace(/^https?:\/\/(www\.)?youtube\.com\/@/, '').replace(/^@/, '') || '' }}.
  5. Ensure Route Channel Input outputs to Assign Channel ID A or Extract Channel Handle depending on the match.

Tip: The regex patterns in Route Channel Input allow raw handles like @channel and full URLs; keep them as-is unless your input format changes.

Step 4: Configure YouTube API Requests

These nodes retrieve channel IDs (when needed) and fetch recent videos.

  1. In API Request Channel ID, set URL to https://www.googleapis.com/youtube/v3/channels and keep forHandle = {{ $json.channel_username }}.
  2. Set Assign Channel ID B with channel_id = {{ $json.body.items[0].id }}.
  3. In API Fetch Channel Videos, set URL to https://www.googleapis.com/youtube/v3/search, channelId = {{ $json.channel_id }}, and maxResults = {{ $('Fetch Channel List').item.json.limit || 10 }}.
  4. Credential Required: Connect your youTubeOAuth2Api credentials in API Request Channel ID and API Fetch Channel Videos.

Step 5: Process API Results and Update Sheets

The workflow validates responses, writes video rows, and marks each channel as finished or errored.

  1. In Validate API Response, keep the condition {{ $json.body.pageInfo.totalResults }} greater than 0.
  2. Connect API Fetch Channel Videos to Validate API Response.
  3. Validate API Response outputs to both Split Video Items and Mark Channel Success in parallel.
  4. Set Split Video Items Field To Split Out to body.items, then connect it to Upsert Video Records.
  5. Confirm Mark Channel Success sets status to finish and last_fetched_time to {{ $now.toISO().toString().slice(0, 19).replace('T', ' ') }}.
  6. On the error output of Validate API Response, connect Mark Channel Error and keep status = error with row_number = {{ $('Batch Iterator').item.json.row_number }}.

⚠️ Common Pitfall: If Mark Channel Error or Mark Channel Success can’t find row_number, ensure your Channel Urls sheet includes that column and the Fetch Channel List node is returning it.

Step 6: Add the Rate-Limiting Loop

This loop throttles requests between batch iterations.

  1. Connect Batch Iterator to Pause Briefly.
  2. Set Pause Briefly Amount to 0.01.
  3. Connect Pause Briefly back to Batch Iterator to continue processing batches.

Step 7: Test and Activate Your Workflow

Run a manual test to confirm videos are fetched and written correctly before enabling the workflow.

  1. Click Execute Workflow and watch data flow from Manual Run Starter through Fetch Channel List.
  2. Verify Upsert Video Records appends/updates rows in the Videos sheet with video_url, title, and published_at.
  3. Confirm channels are marked in Channel Urls as finish or error by Mark Channel Success and Mark Channel Error.
  4. When satisfied, switch the workflow Active toggle on for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Google Sheets credentials can expire or need specific permissions. If things break, check the Google connection in n8n’s Credentials section and confirm the account can edit the target spreadsheet.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • HTTP Request calls to the YouTube Data API can fail due to quota limits or missing API enablement. If channels keep going to “Error,” check your Google Cloud Console project for YouTube API quota and that the API is actually enabled.

Common Questions

How quickly can I implement this YouTube Sheets logging automation?

About 30 minutes once your Google credentials are ready.

Can non-technical teams implement this YouTube Sheets logging?

Yes, but you’ll need someone comfortable with Google Cloud setup. After that, day-to-day use is just updating the sheet status to “Ready” and running the workflow.

Is n8n free to use for this YouTube Sheets logging workflow?

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 YouTube Data API usage (quota-based, typically free for light research).

Where can I host n8n to run this automation?

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.

How do I adapt this YouTube Sheets logging solution to my specific challenges?

You can increase the “videos per channel” limit by using the value from Column C in the Channel URLs tab, so each channel can pull a different number. If you want to run it automatically, swap the Manual Trigger for a Google Sheets trigger that watches for new “Ready” rows. You can also extend the HTTP Request that fetches channel videos to request extra fields, then adjust the “cleaning” (Edit Fields/Set) step before writing to the Videos tab.

Why is my YouTube connection failing in this workflow?

Usually it’s missing or misconfigured YouTube Data API access in Google Cloud Console. Make sure the YouTube Data API is enabled for the same project you used for credentials, and that your API key or OAuth permissions match what the HTTP Request nodes expect. Quota limits can also trigger failures if you process a lot of channels at once, so check the quota page and try a smaller batch. Finally, confirm the workflow can resolve custom channel URLs; if a handle changed, updating the input row often fixes it.

What’s the capacity of this YouTube Sheets logging solution?

It’s built to process channels in batches, and most small teams comfortably run dozens of channels per refresh. The default pull is 10 videos per channel; if you scale that up, quota and sheet write speed become the practical limits.

Is this YouTube Sheets logging automation better than using Zapier or Make?

Often, yes. This workflow depends on conditional routing (URL vs channel ID), batching, response validation, and “mark success/error” updates, which is where n8n stays flexible without turning into an expensive chain of tasks. Zapier or Make can still work if your needs are simple, but they get awkward once you’re looping through many channels and writing many rows. n8n also lets you self-host, which matters if you want unlimited runs. If you’re deciding between tools, map the volume you expect first, then the edge cases. Talk to an automation expert if you want a second opinion.

Once this is in place, competitor research stops feeling like clerical work. Your sheet stays clean, your status stays honest, and you can spend your time on patterns that actually matter.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal