Skip to content

How to Scrape YouTube Comments Without an API Key or Quota

Scrape YouTube comments from any public video, Short or live link: text, likes, reply counts, creator hearts and publish time, with no API key or daily quota. A real run on a NASA JPL video, its cost, and code for curl, Python and Node.js.

Published
Reading time
8 min read
Pixel-art robot with an orange >_ on its terminal head pulls a comment bubble out of a monitor showing the YouTube logo above a list of comments and drops it into a crate
In this article
  1. What data you can get from YouTube comments
  2. How to scrape YouTube comments without code
  3. How to scrape YouTube comments with the API
  4. A real run: top comments on a NASA JPL video
  5. What it costs
  6. Scraping vs the YouTube Data API
  7. What to watch out for
  8. Is it legal to scrape YouTube comments?
  9. Why Scrape.ly for YouTube comments
  10. FAQ
  11. Can you scrape YouTube comments without an API key?
  12. How many comments can you scrape from one video?
  13. Does it scrape replies?
  14. How do I get only new comments every day?
  15. Can I scrape comments from YouTube Shorts and live streams?
  16. Can I export YouTube comments to Excel?

To scrape YouTube comments, paste a video link into a comment scraper and save each public comment as a row: the text, the author, likes, reply count, creator heart and publish time, plus the video it belongs to. The fastest way is the YouTube Comments Scraper on Scrape.ly: no Google Cloud project, no API key and no daily quota, at $1.20 per 1,000 comments.

This guide covers the no-code route and the API (curl, Python, Node.js and AI agents over MCP), compares it with the official YouTube Data API, and shows a real run we made on 22 October 2026 on a video from the verified NASA Jet Propulsion Laboratory channel: the input, the output, the log and the cost.

What data you can get from YouTube comments

The YouTube Comments Scraper writes one row per comment, and every row carries the video, so a CSV of comments from ten videos still sorts cleanly.

Field What it holds
comment The comment text
author The author's handle or name
authorIsChannelOwner Whether the video's channel wrote it
voteCount Likes on the comment (YouTube's "104K" becomes 104000)
replyCount How many replies it has
hasCreatorHeart Whether the creator hearted it
publishedTimeText YouTube's relative time, such as "2 weeks ago" or "2 weeks ago (edited)"
type, replyToCid Row type and parent comment ID
cid The comment's ID
videoId, pageUrl, title The video the comment belongs to
commentsCount The video's total comment count

Rows are top-level comments; each one tells you how many replies it has through replyCount. If a video can't be read (private, deleted, age-restricted or with comments off), no row is saved and nothing is charged: the run's OUTPUT record lists it under failedInputs with a code such as NO_COMMENTS and a reason.

How to scrape YouTube comments without code

  1. Open the Actor's page in the Scrape.ly Store.
  2. Pick a ready-made input, for example the preset Top comments on Gangnam Style, 10 comments. "Try this input" opens it in the console.
  3. Paste your own video links. Our run used the same settings with a NASA JPL video and 5 comments:
json
{
  "startUrls": [{ "url": "https://www.youtube.com/watch?v=DOhJpThqrxs" }],
  "maxComments": 5,
  "sortCommentsBy": "TOP_COMMENTS"
}
  1. Click Start. A few comments take seconds.
  2. Download the results as JSON, CSV or Excel from the Output tab.

The fields that matter most:

  • startUrls: links to public videos. Watch, youtu.be, Shorts, embed and live links all work, and you can mix them; the preset Comments from a video and a Short shows both.
  • maxComments: how many comments per video (default 10). Set it high and the Actor pages through every top-level comment.
  • sortCommentsBy: NEWEST_FIRST or TOP_COMMENTS.
  • oldestCommentDate: only comments after a date, such as 2026-10-01, or a relative value such as 1 day or 2 weeks. A date filter always reads newest first.

How to scrape YouTube comments with the API

Create an API token under Settings → API & Integrations in the dashboard and export it as SCRAPELY_TOKEN.

Our run finished in 5 seconds, so the synchronous endpoint works: it starts the run, waits up to 45 seconds and returns the comments as a JSON array (?format=csv for CSV).

shell
curl -X POST "https://api.scrape.ly/v2/actors/echofield~youtube-comments-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $SCRAPELY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://www.youtube.com/watch?v=DOhJpThqrxs"}], "maxComments": 5, "sortCommentsBy": "TOP_COMMENTS"}'

For all comments of a busy video the run can take longer than 45 seconds; the call then answers 408 while the run keeps going. Don't call it again (that starts a second run); use a client, which waits as long as needed.

Python (pip install scrapely-client-python), here saving every comment of the last week to a CSV for a sentiment model:

python
import csv
import os
from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

run = client.actor("echofield/youtube-comments-scraper").call(
    run_input={"startUrls": [{"url": "https://www.youtube.com/watch?v=DOhJpThqrxs"}], "maxComments": 1000, "oldestCommentDate": "7 days"}
)
print(run.status)  # SUCCEEDED, FAILED, ABORTED or TIMED-OUT
with open("comments.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["comment", "likes", "replies", "published"])
    for c in client.dataset(run.default_dataset_id).iterate_items():
        writer.writerow([c["comment"], c["voteCount"], c["replyCount"], c["publishedTimeText"]])

Node.js (npm install scrapely-client):

javascript
import { ScrapelyClient } from 'scrapely-client';

const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });

const run = await client.actor('echofield/youtube-comments-scraper').call({
  startUrls: [{ url: 'https://www.youtube.com/watch?v=DOhJpThqrxs' }],
  maxComments: 5,
  sortCommentsBy: 'TOP_COMMENTS',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((c) => [c.voteCount, c.replyCount, c.comment.slice(0, 60)]));

For AI agents, add the Scrape.ly MCP server. In Cursor, ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "scrapely": {
      "url": "https://api.scrape.ly/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

In Claude Code, run claude mcp add --transport http scrapely https://api.scrape.ly/mcp and sign in with /mcp. Then ask: "Use scrapely to run echofield/youtube-comments-scraper on https://www.youtube.com/watch?v=DOhJpThqrxs, 200 top comments, and group them by topic." The agent reads the input schema, runs the Actor and works with the rows. The MCP docs and the Python client docs have the details, and the YouTube API page lists this Actor next to the other YouTube Actors.

A real run: top comments on a NASA JPL video

We ran the input above on 22 October 2026 on "NASA's SkyFall Mars Helicopters" from the verified NASA Jet Propulsion Laboratory channel. It returned 5 comments in 5 seconds and was charged $0.0068.

Author Comment Likes Replies Published
[commenter 1] Nice JPL! Ingenuity lives on in blueprint! 252 0 2 weeks ago
[commenter 2] We announcing Space Missions like movie trailers now. Can't say I'm complaining. 238 7 2 weeks ago
[commenter 3] Ingenuity brothers and sisters are here!! 155 1 2 weeks ago
[commenter 4] Woah, this is the Space Week as well. Edit: Thanks for the likes! 58 0 2 weeks ago (edited)
[commenter 5] Now we need the government to give NASA a bigger budget and we will be set 40 3 2 weeks ago

Commenters are private people, so we show them as [commenter 1] to [commenter 5]; NASA JPL is named because its channel is the one we chose on purpose. Every row also carried the video ID, the URL, the title and the video's total of 446 comments. None of the five was hearted by the creator or written by the channel. "Top comments" means YouTube's own ranking: the likes fall from 252 to 40, and the second comment started the biggest thread with 7 replies. For the video's views and likes, our YouTube scraping guide ran the same channel the same day.

The log, without the platform's start-up lines:

Text
2026-10-22T18:27:04.555Z [Scrapely] Container started (setup 0.8 s)
2026-10-22T18:27:05.767Z [scrapely.actor] INFO  videos=1 max_comments=5 sort=TOP_COMMENTS
2026-10-22T18:27:08.516Z [scrapely.actor] INFO  [Status message]: Saved 5 comments from 1 video link(s).
2026-10-22T18:27:08.980Z [Scrapely] Container state: status=exited exitCode=0 oomKilled=false

Under three seconds from start to saved comments, on the default datacenter proxy.

What it costs

The Actor charges one event, $0.0012 per comment, which is $1.20 per 1,000 comments. Videos that can't be read cost nothing. Platform usage (compute and datacenter proxy) is added on top and is small.

For our run: 5 comments × $0.0012 = $0.006 in comment fees. The run was charged $0.0068 in total, because it also used $0.0007 of compute, $0.00007 of datacenter proxy traffic and under $0.0001 of storage writes. All 446 comments on this video would come to about $0.54 in comment fees, and 10,000 comments across a channel's videos to $12.00. The Free plan's $5 of monthly credit covers over 4,000 comments.

Scraping vs the YouTube Data API

Google's official route is the YouTube Data API's commentThreads.list method. These are its terms as documented on developers.google.com, next to the Actor:

YouTube Data API YouTube Comments Scraper
Setup A Google Cloud project with the YouTube Data API enabled A Scrape.ly token, or the console with no code
Daily limit Default 10,000 quota units per day for all endpoints except search.list and videos.insert, reset at midnight Pacific Time No quota; you pay per comment
Per request commentThreads.list costs 1 unit and returns up to 100 threads (default 20) One run takes any number of videos and comments
Output JSON resources you page through with pageToken Flat rows with the video's title and total comment count, exported as JSON, CSV or Excel
Errors commentsDisabled, videoNotFound and other API errors failedInputs with a reason, never charged

Sources: Google's commentThreads.list reference and quota calculator, checked on 22 October 2026. The 10,000 units are shared by every other call your project makes, such as videos.list and channels.list, so a dashboard that also reads video stats spends the same budget.

What to watch out for

  • Relative dates. publishedTimeText is YouTube's "2 weeks ago", not a timestamp. Store the run's date next to it, or use oldestCommentDate to collect only a known window.
  • Rounded likes. Like counts YouTube shows in short form, such as 104K, are rounded by YouTube; the Actor converts them to numbers as shown.
  • Unreadable videos. Private, deleted, age-restricted videos and videos with comments turned off return no rows. Check OUTPUT.failedInputs after a big batch; those inputs are free.
  • Date filters read newest first. With oldestCommentDate, the sort is always newest first, whatever you choose.
  • Short runs include start-up. A few seconds of container start-up are part of every run; batch many videos into one run rather than starting one run per video.
  • Handles are personal data. Comment authors are private people. If you only need the text and the numbers, drop author before you store or share the data.

The Actor reads public comments that anyone can see without logging in. YouTube's Terms of Service (effective December 15, 2023) still set limits: they say you may not "access the Service using any automated means (such as robots, botnets or scrapers)" except for public search engines following YouTube's robots.txt or "with YouTube's prior written permission", and may not "collect or harvest any information that might identify a person (for example, usernames or faces)" unless that person permits it or one of those exceptions applies. Whether those terms bind you, and how, depends on your jurisdiction and your use.

Privacy law is the bigger practical point. A commenter's handle and words can identify a private person under the GDPR and the CCPA. Collect only what you need, aggregate or pseudonymise before you publish, and have a lawful basis for processing. This is not legal advice: if comments feed a product, a model or a public report, ask a lawyer.

Why Scrape.ly for YouTube comments

  • No Google Cloud project, no quota math. Paste links and run. You never budget units across endpoints or wait for a midnight Pacific reset.
  • Rows ready for analysis. Every comment carries the video's title, ID and total comment count, in CSV or Excel straight from the run.
  • Honest billing. $1.20 per 1,000 comments, nothing for videos that fail, and a maximum charge per run if you want a hard cap.
  • One platform for the whole channel. Pair it with the YouTube Scraper for views and likes, schedule both, and let an AI agent summarize the comments over MCP.

FAQ

Can you scrape YouTube comments without an API key?

Yes. The Actor needs no Google API key, no Cloud project and no login. You need a Scrape.ly account; the Free plan includes $5 of monthly credit.

How many comments can you scrape from one video?

As many as the video has. Set maxComments high and the Actor pages through all top-level comments. Our test video had 446.

Does it scrape replies?

It returns top-level comments, and each row includes replyCount, so you can see which comments started a thread. In our run the most-replied comment had 7 replies.

How do I get only new comments every day?

Set oldestCommentDate to 1 day and schedule the run daily. "1 day" keeps today's comments; "2 days" keeps yesterday's and today's.

Can I scrape comments from YouTube Shorts and live streams?

Yes. Shorts, live, embed, watch and youtu.be links all work and can be mixed in one run.

Can I export YouTube comments to Excel?

Yes. Download the dataset as Excel or CSV from the run's Output tab, or add ?format=csv to the API call.

  • youtube
  • comments
  • sentiment analysis
  • python
  • api

About the author

Actor publisher on the Scrape.ly Store

Posts, reels, comments and creator stats, from TikTok and YouTube to Weibo and Bluesky. For social listening, creator research and catching a trend while it is still small. A Scrapely studio.

//Keep reading\\

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.