mcpField
S
scraping-youtube-comments

scraping-youtube-comments

github.com/apidojo-ioData & databases1809 installsUpdated 24w ago
Repository

About scraping-youtube-comments

This skill uses Apify to collect YouTube comments for researchers and analysts. It accepts video, channel, and search inputs, returning comment text, authors, and engagement data for further analysis.

Key features

  1. 01Collect comments and replies
  2. 02Search URLs, channels, or keywords
  3. 03Set region, language, and filters
  4. 04Limit videos and transform output
  5. 05Retrieve author and engagement data

Use cases

  1. 01Analyze feedback on videos
  2. 02Compare engagement across videos
  3. 03Find video comments by keyword

MCP support

Optionally runs apidojo~youtube-comments-scraper through Apify MCP’s apify:run-actor tool; it can also run through a script or REST API.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill scraping-youtube-comments

After installing, type/scraping-youtube-commentsin Claude Code to confirm it loaded.

Details

From the project README

Scraping YouTube Comments

Exports the full comment dataset from any YouTube video. Returns comment text, author, and engagement for downstream analysis.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]YouTube URLs — channels, playlists, Shorts, search results
youtubeHandlesarrayOptional[]YouTube channel handles (e.g. @kurzgesagt)
getTrendingbooleanOptionalfalseRetrieve trending videos
keywordsarrayOptional[]Search keywords
glstringOptionalusCountry code for results (e.g. US, GB)
hlstringOptionalenLanguage code (e.g. en, de)
uploadDatestringOptionalallUpload date filter: any, hour, today, week, month, year
durationstringOptionalallDuration filter: any, short, long
featuresstringOptionalallFeature filter: 4k, hd, live, cc, 3d, hdr, etc.
sortstringOptionalrSort order for search results
maxItemsnumberOptionalUnlimitedMaximum videos to return
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Validate video URLs
- [ ] Step 2: Run youtube-scraper (comment mode)
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver comment dataset
Step 2: Run the Actor

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~youtube-comments-scraper"
Input:
{
  "videoUrls": ["https://www.youtube.com/watch?v=<VIDEO_ID>"],
  "maxComments": 200,
  "includeReplies": false
}

REST API fallback:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~youtube-comments-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"videoUrls": ["<url>"], "maxComments": 200}'

Save id as RUN_ID. Poll until status = SUCCEEDED:

curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'

Fetch results:

curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
Step 3: Handle Edge Cases
  • Comments disabled: Returns 0 — inform user.
  • Live streams: Comment data may be incomplete for live/premiere videos.
  • Deleted comments: May appear as empty text strings — filter out rows with text: "".

Output Format

# YouTube Comment Dataset
Video: <url> | Comments collected: N | Includes replies: YES/NO

| Comment ID | Author | Text | Likes | Replies | Timestamp |
|------------|--------|------|-------|---------|-----------|
| ...        | ...    | ...  | ...   | ...     | ...       |

Available fields: id, authorDisplayName, textDisplay, likeCount, totalReplyCount,
publishedAt, isReply, parentId

Troubleshooting

Comments disabled: Creator has turned off comments — cannot be retrieved. Truncated text: YouTube API may truncate very long comments; full text requires reply fetching.

Comments

Markdown supported