InsightSocial

How to Export YouTube Comments to CSV or Excel (2026)

Last Updated on November 7, 2026
by InsightSocial Team
12 min read
Share:

YouTube Studio has no button to download comments, so to export YouTube comments to CSV or Excel you either call the free YouTube Data API v3 (1 quota unit per page of up to 100 comments, 10,000 units a day, API key and code needed), paste the video link into a free web exporter such as CommentShark (up to 1,000 newest comments without an account), or use a Chrome extension on the video you have open. InsightSocial's extension exports 100, 250 or 500 comments per run with reply threads opened and linked to their parent comment, to CSV, Excel, JSON or Google Sheets, free up to 500 rows a month.

Updated November 2026. We make InsightSocial, so we are not neutral. This guide starts with YouTube's own API, and the third-party prices in it are what each tool's own page said when we checked in November 2026.

TL;DR: ways to export YouTube comments

MethodCostLimitRepliesSkill
YouTube Data API v3Free, API key10,000 units a day; 1 unit per page of up to 100Some per thread, the rest with extra callsCode
Free web exporters (CommentShark, ZocialComment)Free tier, then passes1,000 to 5,000 (CommentShark); 100 free (ZocialComment)Yes, with capsNone
Cloud tools (Apify)$0.90 per 1,000 commentsYou set itYesLow
Open source (yt-dlp, youtube-comment-downloader)FreeNone by defaultYesCommand line
Chrome extension (InsightSocial)Free 500 rows/mo, Pro $9.99 for 10,000100, 250 or 500 per runYes, linked to parentNone
Copy and pasteFreeYour patienceMessyNone

Can you export comments from YouTube Studio?

No. YouTube Studio's Comments page lets you filter, reply, heart and moderate, but it shows comments one screen at a time and has no download. Studio's Analytics can export a report as a CSV or to Google Sheets, but those reports are numbers, such as how many comments a video got, not the comments' text. Google Takeout's YouTube data covers comments your own account wrote, not the comments other people left on your videos.

So every route below goes through YouTube's public data: the official API, or a tool that reads the comments the way your browser does. That also means you can export the comments on anyone's public video, not only your own.

What a YouTube comment export includes

A good export gives you one row per comment or reply with:

  • Comment text, with emoji and any language
  • Author name and channel ID
  • Likes on the comment
  • Reply count on top-level comments
  • Parent comment ID on replies, so you can rebuild each thread
  • Date. The API gives an exact timestamp. Tools that read the page start from YouTube's "3 weeks ago" text, so older dates are approximate
  • A link to the comment
  • The video's title, link and channel, so rows from several videos can share one sheet

Two things people often ask for are harder. Pinned and hearted status is not in the official API at all. In InsightSocial, each row has a flag for comments written by the video's own channel and a verified flag, but not pinned or hearted. If you need those, yt-dlp's comment output includes is_pinned and is_favorited. Commenters' emails are never public.

What the rows look like

Illustrative rows: the shape of an export, with made-up names and text, not real commenters.

Comment IDParent IDAuthorTextLikesRepliesDate
c1@viewer_aWhich mic is this? The audio is so clean.21422026-10-12
c1.r1c1@channel_ownerIt's in the description!882026-10-12
c1.r2c1@viewer_bSame question, thanks32026-10-13
c2@viewer_cPart 2 please4102026-10-14

Replies point to their parent, so a pivot table can count replies per comment or filter out the creator's own answers.

Method 1: The YouTube Data API

The API is free and returns every comment, but you need a Google Cloud project with the YouTube Data API v3 turned on and an API key from its Credentials page. The key reads public data; no sign-in is needed for comments on public videos.

The request. One call returns a page of comment threads:

curl "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet,replies&videoId=VIDEO_ID&maxResults=100&order=time&textFormat=plainText&key=YOUR_API_KEY"

maxResults goes up to 100 (the default is 20). order is time or relevance. Each response has a nextPageToken until the last page; pass it back as pageToken. Each call costs 1 quota unit, and a new project gets 10,000 units a day.

Replies. The replies part carries only some of a thread's replies. Google's reference says the list is a subset unless its length equals the thread's totalReplyCount. For the rest, call comments.list with parentId set to the top-level comment's ID, also 1 unit per page.

A script that writes a CSV. This Python script pages through a video's threads, fetches missing replies and saves a file Excel opens cleanly:

import csv, requests

API_KEY = "YOUR_API_KEY"
VIDEO_ID = "VIDEO_ID"  # the v= part of the URL, or the ID after /shorts/
BASE = "https://www.googleapis.com/youtube/v3/"

def pages(endpoint, **params):
    params.update(key=API_KEY, maxResults=100, textFormat="plainText")
    while True:
        data = requests.get(BASE + endpoint, params=params, timeout=30).json()
        if "error" in data:
            raise SystemExit(data["error"]["message"])
        yield from data.get("items", [])
        if "nextPageToken" not in data:
            return
        params["pageToken"] = data["nextPageToken"]

def row(c, parent_id, replies):
    s = c["snippet"]
    return [c["id"], parent_id, s.get("authorDisplayName"),
            s.get("authorChannelId", {}).get("value"), s["textDisplay"],
            s.get("likeCount", 0), replies, s["publishedAt"]]

with open("comments.csv", "w", newline="", encoding="utf-8-sig") as f:
    out = csv.writer(f)
    out.writerow(["id", "parent_id", "author", "author_channel_id",
                  "text", "likes", "replies", "published_at"])
    for thread in pages("commentThreads", part="snippet,replies",
                        videoId=VIDEO_ID, order="time"):
        top = thread["snippet"]["topLevelComment"]
        total = thread["snippet"]["totalReplyCount"]
        out.writerow(row(top, "", total))
        replies = thread.get("replies", {}).get("comments", [])
        if total > len(replies):  # the thread only carried some replies
            replies = pages("comments", part="snippet", parentId=top["id"])
        for reply in replies:
            out.writerow(row(reply, top["id"], ""))

Notes:

  • Install the one dependency with pip install requests.
  • encoding="utf-8-sig" makes Excel read emoji and non-English text correctly.
  • Cost: a video with 5,000 top-level comments takes 50 thread pages, plus one call for each thread whose replies did not all arrive. That is well inside 10,000 units a day.
  • A video with comments turned off returns an error instead of rows.

Best for: developers, many videos, and jobs that repeat. If writing code is the obstacle, keep reading.

Method 2: Free web exporters and cloud tools

Paste a video link, download a file. No key, no install.

  • CommentShark's YouTube Comment Exporter is free: up to 1,000 of a video's most recent comments without an account, 5,000 with a free login, with up to 5 replies per thread, as Excel or CSV. It works on Shorts.
  • ZocialComment exports the first 100 comments of a video free, 3 times a day, to CSV, Excel or JSON with replies. A $9 three-day pass covers videos up to 10,000 comments, and the $39 Pro pass up to 100,000.
  • Comment Picker exports up to 50 comments a day free to CSV or Excel, with an option to add replies; Premium is $9.99 a month.
  • YouTube Comments Downloader works on videos, Shorts, live streams, playlists and whole channels, at 1 credit per comment plus 100 per download, from $29 for 100,000 prepaid credits.
  • Apify's YouTube Comments Scraper runs in the cloud at $0.90 per 1,000 comments, takes a list of video links, and exports CSV, Excel or JSON. Apify's free plan includes $5 of usage a month.

If you are comfortable with a command line, yt-dlp (yt-dlp --skip-download --write-info-json --write-comments URL) saves the comments into the video's info JSON file, and youtube-comment-downloader writes CSV directly (youtube-comment-downloader --url URL --output comments.csv --format csv). Both are free and open source.

Our best YouTube comment scrapers post compares all of these.

Method 3: A Chrome extension on the video you have open

With InsightSocial's YouTube Comments Scraper:

  1. Add InsightSocial to Chrome from the Chrome Web Store. It is free and asks for no card.
  2. Pin the icon. Click the puzzle piece in Chrome's toolbar and pin InsightSocial. On YouTube, that icon opens the side panel.
  3. Open the video and press Scrape. The side panel recognises the video. Pick 100, 250 or 500 comments; replies count toward that number. Reply threads, including "Show more replies", open on their own.
  4. Keep working. The run keeps going in a background tab. Keep the video's tab open until it finishes.
  5. Export to Excel, CSV or JSON, or send the rows to Google Sheets. Every run stays in your account to re-open later.

How many comments you get: in our October 2026 test, a 500-comment run on a video with about 1,800 comments returned 500 rows with the tab in the background. A run ends sooner if the video has no more comments to load.

What it costs: scraping and reading results in the dashboard are free on every plan; exporting uses one credit per row. Free includes 500 a month, Pro $9.99 a month (or $7.99 billed yearly) includes 10,000, Studio $49 includes 150,000, and one-time packs start at 1,000 rows for $5. Re-exporting a comment you already exported is free.

What it does not do: one video per run, at most 500 comments. It does not take a list of links, and it does not export pinned or hearted flags. For a 50,000-comment video in full, use the API or a cloud tool.

Replies, Shorts and very big videos

Replies. Decide whether you need them before you pick a tool. The API needs a second call for threads with many replies. CommentShark keeps 5 per thread. InsightSocial makes each reply its own row with the parent's ID.

Shorts. A Short has a normal video ID, the part after /shorts/, so the API and most web exporters accept it. In the browser, Shorts hide comments in a slide-in panel; InsightSocial's YouTube Shorts Comments Scraper opens that panel and pauses the Short while it runs. Our demo run on a National Geographic Short took 453 comments and 47 replies in about a minute.

Very big videos. Popular videos have tens or hundreds of thousands of comments. Free tiers stop at 50 to 5,000, and InsightSocial at 500 per run. For everything, use the API (a 100,000-comment video is about 1,000 thread pages, a tenth of a day's quota, plus reply calls), a paid ZocialComment pass, or Apify. Sort by newest if you want a complete recent period; sort by top if you want the comments most people saw.

Opening the file in Excel, CSV or Google Sheets

  • Excel: an .xlsx keeps emoji and non-English text intact. For a CSV, open it through Data > From Text/CSV and pick UTF-8.
  • Google Sheets: File > Import handles UTF-8 CSV. InsightSocial can send a run straight to a sheet in your Google Drive.
  • JSON: for Python, R or a sentiment tool.
  • Conversations in a spreadsheet: sort by parent ID, then date, to read each conversation in order.

Troubleshooting

The API returns an error about quota. You used the day's 10,000 units. Wait for the reset or request more quota in Google Cloud.

The API returns fewer replies than the reply count. That is expected: call comments.list with the thread's ID as parentId.

The video says comments are turned off. No tool can export them; there is nothing public to read.

The counts don't match the number under the video. An export can only include comments that are public, so comments held for review or removed are missing, and the totals often differ.

Dates look rounded. Page-reading tools start from "2 years ago". Use the API if you need exact timestamps.

FAQ

How do I export YouTube comments to Excel? Use the YouTube Data API with a script that writes a CSV, a free web exporter such as CommentShark, or a Chrome extension such as InsightSocial, which exports straight to Excel, CSV, JSON or Google Sheets. YouTube Studio itself has no comment download.

Can I export YouTube comments for free? Yes. The Data API is free up to 10,000 quota units a day. CommentShark exports up to 1,000 newest comments free, ZocialComment the first 100, and InsightSocial's free plan 500 rows a month.

Can I export comments from a video that is not mine? Yes. Comments on public videos are public, so the API and scrapers can read any of them. Follow YouTube's terms and privacy laws when you store commenters' names.

Does a YouTube comment export include replies? It can. The API returns some replies in each thread and the rest through comments.list. InsightSocial opens reply threads and links each reply to the comment it answers.

Can I export YouTube Shorts comments? Yes. Use the Short's ID with the API or a web exporter, or InsightSocial's Shorts Comments Scraper in the browser.

How do I get the pinned or hearted comments? The official API has no field for either. yt-dlp's comment output marks pinned and hearted comments. InsightSocial and most exporters do not include them.

Do I need a YouTube API key? Only for the official API. Web exporters, Apify, yt-dlp and Chrome extensions such as InsightSocial work without one.

Related guides: best YouTube comment scrapers, ExportComments alternatives, YouTube Comments Scraper, YouTube scrapers, free YouTube transcript tool.

#youtube#youtube comments#export#csv#tutorial