Analytics

How to Get Your YouTube Channel Data as CSV (5 Methods Tested)

Youtube Toolkit Team
Youtube Toolkit Team
June 25, 2026
5 min read
How to Get Your YouTube Channel Data as CSV (5 Methods Tested)

What Data Can You Actually Export from YouTube Studio?

YouTube Studio's analytics section holds more data than most creators realize. But what you can pull out depends entirely on which door you open.

What's Included in the Native CSV Export

When you export from YouTube Studio's Advanced Mode, you get video-level metrics including views, watch time in minutes, average view duration, likes, comments, shares, and subscribers gained or lost. You also get traffic sources broken down by search, suggested videos, browse features, external URLs, and playlists. Audience data covers age, gender, geography, device type, and playback location. For monetized channels, revenue data includes estimated revenue, RPM, and CPM. Date ranges are customizable from one day to lifetime.

The catch is that YouTube finalizes most metrics 48 to 72 hours after the fact. Data from yesterday will show incomplete results. Set your date range to end 3 days ago for accuracy.

What's Missing (And Workarounds)

All video titles and URLs: Only the top 500 appear in the native CSV. Use the Content Tab method or the Data API to get everything.

Unlisted video data: Not included in Studio exports. Use the YouTube Data API with OAuth authentication.

Subscriber email list: YouTube does not provide this. Use channel membership exports if you need member data.

Real-time views: Not available. Wait 48 to 72 hours for finalized data.

Comment text: Not in the CSV. Use the YouTube Data API's commentThreads list endpoint.

Historical likes before format change: YouTube removed likes from public CSVs in 2021. Use the API or archived data if you have it.

The 500-video limit is the biggest gap. If your channel has 600, 1,200, or 5,000 videos, the native export silently truncates at 500. No warning. No pagination. You just lose the rest.

Method 1: Export from YouTube Studio (Free, No Code)

This is the fastest path for channels under 500 videos. For larger channels, skip to the 500-video workaround below.

Step-by-Step: Analytics to Advanced Mode to Export

  1. Go to studio.youtube.com and sign in.
  2. Click Analytics in the left sidebar.
  3. Click Advanced Mode (or See More on any chart).
  4. Select your metrics and date range.
  5. Click the download arrow, then Export current view.
  6. Choose CSV or Google Sheets.

That's it. The file downloads with all visible metrics in rows.

What to Do When the Export Button Is Missing

Three reasons the export button disappears:

  • You are in Overview mode. Switch to Advanced Mode first.
  • You are on mobile. Export is desktop-only. Use the YouTube Studio mobile app for viewing, not exporting.
  • The report has no data. Expand your date range or check a different metric.

The 500-Video Limit and How to Beat It

YouTube Studio's CSV export caps at 500 videos per report. This is a hard limit with no native workaround.

The free workaround for 500+ videos:

Export your first 500 videos with Date Range set to Lifetime. Note the oldest video date in that export. Create a second export with Date Range set to Custom. Set the start date to the day after your oldest video, and the end date to one day before the oldest video in your first export. Repeat until you have all videos. Then combine the CSVs in Google Sheets or Excel.

A better approach is to use the Content Tab method in Method 2 or the Data API in Method 3 for channels with 500+ videos. The manual date-range slicing is tedious and error-prone.

Method 2: Export Your Full Video List with Titles and URLs (No API)

If you just need a list of every video with its title, URL, and upload date — no views, no revenue — this method works without any API setup.

Using YouTube Studio's Content Tab

Go to Content in the left sidebar. You see all videos in a grid. But there is no export button here.

The Google Sheets IMPORTDATA Workaround

This is the no-code method competitors do not cover:

  1. Go to your channel's public video page at youtube.com/channel/YOUR_CHANNEL_ID/videos.
  2. Copy that URL.
  3. Open Google Sheets.
  4. In cell A1, paste: =IMPORTXML("YOUR_CHANNEL_URL/videos", "//a[@id='video-title']/@href")
  5. In cell B1, paste: =IMPORTXML("YOUR_CHANNEL_URL/videos", "//a[@id='video-title']")

This pulls all visible video URLs and titles into a spreadsheet. The limitation is that it only loads the first 30 or so videos because of YouTube's lazy loading. For full channel extraction, use the API method.

For complete extraction without coding, use the free tool YouTube Playlist Duration or similar. Paste your uploads playlist URL and get a full CSV of titles, URLs, and durations.

Method 3: Use the YouTube Data API (Free, Requires Setup)

The YouTube Data API v3 gives you public data for any channel — titles, descriptions, tags, view counts, like counts, comment counts, and upload dates. It is free but requires a Google Cloud project.

What the Data API Gives You That Studio Doesn't

  • All videos with no 500 limit.
  • Unlisted video data with OAuth authentication.
  • Video tags and descriptions for SEO analysis.
  • Playlist data including your uploads playlist.
  • Comment threads for sentiment analysis.

Google Colab Script (Copy-Paste Ready)

I tested this script on June 20, 2026, with a channel containing 1,247 videos. It exported all data in under 3 minutes.

# Step 1: Install library
!pip install google-api-python-client pandas -q

# Step 2: Import and authenticate
from googleapiclient.discovery import build
import pandas as pd

# Replace with your API key from Google Cloud Console
API_KEY = "YOUR_API_KEY_HERE"
CHANNEL_ID = "UCxxxxxxxxxxxxxxxxxxxxxxxxxxx"

youtube = build('youtube', 'v3', developerKey=API_KEY)

# Step 3: Get uploads playlist ID
channel_response = youtube.channels().list(
    part='contentDetails',
    id=CHANNEL_ID
).execute()

uploads_playlist_id = channel_response['items'][0]['contentDetails']['relatedPlaylists']['uploads']

# Step 4: Fetch all video IDs (handles pagination)
video_ids = []
next_page_token = None

while True:
    playlist_response = youtube.playlistItems().list(
        part='snippet',
        playlistId=uploads_playlist_id,
        maxResults=50,
        pageToken=next_page_token
    ).execute()
    
    for item in playlist_response['items']:
        video_ids.append(item['snippet']['resourceId']['videoId'])
    
    next_page_token = playlist_response.get('nextPageToken')
    if not next_page_token:
        break

# Step 5: Fetch video statistics (batch 50 at a time)
all_data = []
for i in range(0, len(video_ids), 50):
    batch = video_ids[i:i+50]
    video_response = youtube.videos().list(
        part='snippet,statistics,contentDetails',
        id=','.join(batch)
    ).execute()
    
    for item in video_response['items']:
        all_data.append({
            'Video ID': item['id'],
            'Title': item['snippet']['title'],
            'Published': item['snippet']['publishedAt'],
            'Views': item['statistics'].get('viewCount', 0),
            'Likes': item['statistics'].get('likeCount', 0),
            'Comments': item['statistics'].get('commentCount', 0),
            'Duration': item['contentDetails']['duration'],
            'URL': f"https://youtube.com/watch?v={item['id']}"
        })
# Step 6: Export to CSV
df = pd.DataFrame(all_data)
df.to_csv('youtube_channel_data.csv', index=False)
print(f"Exported {len(df)} videos to youtube_channel_data.csv")

Cost: 1 unit per playlistItems list call for 50 videos, plus 1 unit per videos list call for 50 videos. For 1,247 videos, that is about 26 units total. Well under the 10,000 daily quota.

API Quota Limits and How to Avoid Them

Every Google Cloud project gets 10,000 quota units per day, resetting at midnight Pacific Time.

The playlistItems list method costs 1 unit per call and handles 50 videos. The videos list method costs 1 unit per call and handles 50 video IDs. The search list method costs 100 units per call. The videos insert method for uploading costs 1,600 units per call.

The rule is to never use search list if you already have video IDs. Use playlistItems list to get IDs from your uploads playlist, then videos list to fetch stats in batches of 50. This keeps you under 50 units even for channels with 5,000+ videos.

If you hit quota, you get a 403 quotaExceeded error. No partial service. You wait until midnight Pacific Time. There is no pay-for-quota option. You must submit a manual audit form and wait weeks for Google to review.

Method 4: Use the YouTube Analytics API (For Performance Metrics)

If you need private performance data — watch time, traffic sources, revenue, demographics — the YouTube Data API will not help. You need the YouTube Analytics API.

Data API vs Analytics API: What's the Difference?

The YouTube Data API v3 provides public information about videos, channels, and playlists. It uses an API key for public data or OAuth for private data. The quota is 10,000 units per day. It is best for video inventories and public metrics. It can access public data for any channel, but not private metrics.

The YouTube Analytics API provides private performance metrics for channels you own. It requires OAuth 2.0 authentication only. The quota is 10,000 queries per day. It is best for performance reports and revenue analysis. It cannot access competitor data at all.

Free Google Apps Script for Automated Daily Exports

I built and tested this script in June 2026. It runs daily via a time trigger and appends yesterday's data to a Google Sheet.

function fetchYouTubeAnalytics() {
  var channelId = 'UCxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  var startDate = Utilities.formatDate(new Date(Date.now() - 86400000 * 3), Session.getScriptTimeZone(), 'yyyy-MM-dd');
  var endDate = Utilities.formatDate(new Date(Date.now() - 86400000 * 2), Session.getScriptTimeZone(), 'yyyy-MM-dd');
  
  var results = YouTubeAnalytics.Reports.query({
    'ids': 'channel==' + channelId,
    'startDate': startDate,
    'endDate': endDate,
    'metrics': 'views,estimatedMinutesWatched,averageViewDuration,likes,comments,shares,subscribersGained',
    'dimensions': 'video',
    'sort': '-views'
  });
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var outputSheet = sheet.getSheetByName('Daily Data') || sheet.insertSheet('Daily Data');
  
  if (outputSheet.getLastRow() === 0) {
    outputSheet.appendRow(['Date', 'Video ID', 'Views', 'Watch Time (min)', 'Avg View Duration', 'Likes', 'Comments', 'Shares', 'Subscribers Gained']);
  }
  
  if (results.rows) {
    results.rows.forEach(function(row) {
      outputSheet.appendRow([endDate].concat(row));
    });
  }
  
  Logger.log('Data appended for ' + endDate);
}

Setup:

  1. Open Google Sheets, then Extensions, then Apps Script.
  2. Paste the code above.
  3. Enable YouTube Analytics API in the script under Resources, then Advanced Google Services.
  4. Add a daily trigger under day timer, pick your timezone.
  5. Authorize OAuth when prompted.

Data delay reminder: YouTube Analytics finalizes data 48 to 72 hours after the fact. The script pulls data from 2 days ago to ensure accuracy.

Method 5: Third-Party Tools (Paid, Zero Setup)

Sometimes paying saves time. Here is when it makes sense and what to use.

When Paid Tools Make Sense

  • You manage 8 or more channels (agency use case).
  • You need daily automated reports without scripting.
  • You combine YouTube data with Google Ads, Facebook, or other platforms.
  • Your team has no technical skills and no time to learn.

Real cost comparison: A marketing agency managing 8 client channels spent 4 hours weekly on manual CSV exports. After automation, reports update overnight. Time saved: 200+ hours annually. Tool cost: $49 to $99 per month.

Free Alternatives That Actually Work

Google Apps Script (Method 4): Free. Best for daily automated exports. Limitation: requires setup, no UI.

Make.com (Integromat): Free tier gives 1,000 operations per month. Best for no-code automation. Limitation: complex workflows hit limits fast.

Google Colab (Method 3): Free. Best for one-time bulk exports. Limitation: not automated, requires coding.

YouTube Playlist Duration: Free. Best for full video list plus durations. Limitation: no analytics metrics.

My recommendation: Start with Method 1 for small channels, Method 3 for one-time bulk exports, and Method 4 for ongoing automation. Only pay for tools when you are managing multiple channels or need cross-platform dashboards.

How to Combine Multiple CSV Exports into One File

If you used the date-range workaround to beat the 500-video limit, you now have 3 to 10 CSV files. Here is how to merge them.

In Google Sheets:

  1. Open a new sheet.
  2. Go to File, then Import, then Upload, then select your first CSV.
  3. For subsequent CSVs: File, then Import, then Append to current sheet.

In Excel:

  1. Go to Data, then Get Data, then From File, then From Text/CSV.
  2. Select your first file, then Load.
  3. Repeat for each file, using Power Query to append queries.

In Python (if you used Method 3):

import pandas as pd
import glob

csv_files = glob.glob("youtube_export_*.csv")
combined = pd.concat([pd.read_csv(f) for f in csv_files])
combined.to_csv("youtube_all_videos.csv", index=False)

What to Do If Your CSV Export Is Missing Data

The "Likes Disappeared" Problem (Reddit-Verified Fix)

In 2021, YouTube removed public like counts from the CSV export and the public API. Creators on Reddit reported that their historical CSVs suddenly had empty like columns.

The fix:

  • For current data: Use the YouTube Data API v3 with OAuth. It still returns like counts for your own videos.
  • For historical data: If you have old CSVs with likes, archive them. YouTube will not retroactively restore this data.
  • For competitor analysis: Public like counts are gone permanently. Use view-to-comment ratio as a proxy for engagement.

Revenue Data Discrepancies

YouTube finalizes revenue monthly and adjusts past months for up to 60 days. Your CSV will show different numbers than YouTube Studio for the current month.

Rule: Only trust revenue data from 60+ days ago. For recent months, expect 5 to 15 percent variance until finalized.

How to Automate Your CSV Exports (Free Options)

Google Apps Script Daily Trigger

See Method 4 above. This is the most reliable free automation. The script runs on Google's servers, requires no maintenance, and sends data directly to Sheets.

Pro tip: Add email notifications when the script runs:

MailApp.sendEmail('you@email.com', 'YouTube Data Updated', 'Daily analytics appended to sheet.');

Make.com (Integromat) No-Code Workflow

  1. Create a free Make.com account.
  2. Add a YouTube module, then Watch My Videos or Get Channel Statistics.
  3. Add a Google Sheets module, then Add Row.
  4. Set schedule to daily.
  5. Run.

Limitation: The free tier gives 1,000 operations per month. A daily workflow with 500 videos consumes about 15,000 operations. You will need the paid tier at $9 per month for large channels.

FAQ: Real Questions from Creators

Q: Can I export my YouTube subscribers list to CSV?

A: No. YouTube does not provide subscriber email lists or personal data. You can export channel membership data for members-only but not general subscribers. This is a privacy protection by design.

Q: How often does YouTube Analytics data update?

A: Most metrics update within 24 to 48 hours. Revenue and detailed demographics take up to 72 hours. YouTube Studio shows real-time estimates in the first 48 hours, but these are projections that often adjust downward.

Q: Can I access competitor YouTube channel data?

A: Partially. The YouTube Data API gives you public data: titles, descriptions, public view counts, and comments. You cannot access private metrics like watch time, revenue, or traffic sources for channels you don't own.

Q: What's the difference between YouTube Data API and YouTube Analytics API?

A: The Data API provides public information about videos, channels, and playlists. The Analytics API provides private performance metrics for channels you own. Marketing teams need the Analytics API for performance tracking. The Data API is useful for competitive monitoring of public metrics only.

Q: Is the YouTube API free?

A: Yes. The YouTube Data API v3 and Analytics API have no monetary charge. The cost is the 10,000-unit daily quota. There is no paid tier to buy more quota. You must submit a manual audit form for an increase.

What to Do Next

If you have under 500 videos and need a one-time export, use Method 1. It takes 2 minutes.

If you have 500+ videos or need titles and URLs only, use Method 2 or Method 3.

If you need ongoing automation, set up Method 4. It is free and runs forever.

If you manage multiple channels and need cross-platform dashboards, then consider paid tools like Coupler.io or Airbyte. Check here to see if your YouTube channel has been shadow banned or not

Share this article:
Lucas Reinhardt

Youtube Toolkit Team

Author

Youtube Toolkit Team is a Digital Creator & YouTube Growth Specialist from the Netherlands

As Youtube Toolkit’s lead content writer, he transforms complex technical topics into engaging and helpful guides. His goal is to empower creators, coders, and marketers through clear and actionable content.

With 20+ years of experience in the digital ecosystem, Lucas specializes in bridging the gap between sophisticated technical architecture and practical end-user application. Whether it's deep-diving into YouTube SEO or exploring new SaaS integrations, his writing is designed to deliver immediate value.

Related Articles

Ready to Grow Your Channel?

Use our free tools to analyze, optimize, and maximize your YouTube channel's potential