YouTube Scraper: Videos, Transcripts & Comments | from $1.80/1K avatar

YouTube Scraper: Videos, Transcripts & Comments | from $1.80/1K

Pricing

from $1.75 / 1,000 video-results

Go to Apify Store
YouTube Scraper: Videos, Transcripts & Comments | from $1.80/1K

YouTube Scraper: Videos, Transcripts & Comments | from $1.80/1K

Scrape YouTube video records: details, search, channels, transcripts, and comments. Return metadata, transcript text, and comment fields. Run with URLs, queries, or channels; no API key. Pricing: $0.0018/video-result + $0.00005/actor start on Free.

Pricing

from $1.75 / 1,000 video-results

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

26

Total users

8

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

YouTube Scraper for Videos, Transcripts & Comments

No API key is required to extract YouTube video metadata, search results, channel uploads, transcripts, and comments from YouTube pages and its internal InnerTube API. On the Free plan, you pay $0.0018 per video-result event and $0.00005 per apify-actor-start event.

  • Collect views, dates, durations, descriptions, tags, and thumbnails for video analysis.
  • Search topics and keywords for content research and video discovery.
  • Monitor recent uploads from competitor channels.
  • Extract joined transcript text, including auto-generated captions, for LLM pipelines.
  • Fetch top comments for video analysis.

What you get

Choose one of five modes: video_details, search, channel_videos, transcript, or comments. Metadata comes from watch-page HTML, search and comments use InnerTube, channel uploads use channel-page data, and transcripts use youtube-transcript-api.

A field is null when its source does not provide the value.

Field or field familyModesTypeWhat it contains
video_id, modeAllstringVideo identifier and selected mode; video_id is null when unavailable.
titleVideo modesstringVideo title for video_details, search, and channel_videos; null when unavailable.
channel, channel_id, channel_urlVideo modesstringChannel details when available; each field is null when unavailable.
viewsVideo modesintegerParsed view count; null when unavailable.
publishedVideo modesISO 8601 string or stringISO-style publication data for details, or relative text for search and channel uploads; null when unavailable.
duration_seconds, duration_rawVideo modesinteger or stringNumeric and formatted duration; each is null when unavailable.
description, tagsvideo_detailsstring or array of stringsVideo description and keyword tags; each is null when unavailable or empty.
likes, comment_countVideo modesnullPresent in video records but always null; they are not filled in video_details, search, or channel_videos. Comment likes appear in comments mode.
thumbnail, thumbnailsVideo modesstring or arrayBest thumbnail URL and available sizes; each is null when unavailable.
video_urlVideo modesstringYouTube watch URL; null when the video ID is unavailable.
language, is_generatedtranscriptstring or booleanTranscript language and whether the caption track is generated; both are null when the transcript has no segments.
transcript_text, segment_counttranscriptstring or integerJoined transcript text and number of segments; transcript_text is null when no transcript text is available, and segment_count is 0 when there are no segments.
comment_idcommentsstringComment identifier; null when unavailable.
author, author_channel_idcommentsstringComment author and channel identifier when available; each field is null when unavailable.
text, likes, is_pinnedcommentsstring, integer, or booleanComment text, likes, and pinned status; text and likes are null when unavailable.
published_rawcommentsstringComment publication field; always null.
parse_confidence, warningsAllnumber or array of stringsQuality score from 0.0 to 1.0 and machine-readable warnings; warnings is empty when no warnings are recorded.
scraped_atAllISO 8601 stringUTC timestamp for the record.

Sample output

The sample is shortened by omitting the long description, tags, and thumbnails fields. All shown field names and values are copied from one dataset record.

{
"video_id": "dQw4w9WgXcQ",
"mode": "video_details",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channel": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channel_url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"views": 1825709714,
"likes": null, "comment_count": null,
"published": "2009-10-24T23:57:33-07:00",
"duration_seconds": 213, "duration_raw": "3:33",
"thumbnail": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/maxresdefault.webp",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"parse_confidence": 1, "warnings": [],
"scraped_at": "2026-10-12T00:12:31.497339+00:00"
}

Pricing

This Actor uses pay-per-event pricing. One video-result event contains all fields for one pushed record. The apify-actor-start event is charged once per GB of run memory, with a minimum of one event.

Planvideo-resultapify-actor-start
Free$0.0018 per event$0.00005 per event

On the Free plan, 1,000 video-result events = $1.80 and 10,000 video-result events = $18.00, excluding the separate apify-actor-start charge.

You pay only for the events in the Pricing table above. This Actor does not use the Pay per event + usage option, so the platform usage of your runs (compute, proxy traffic and storage) is not billed to you separately. The Apify Free plan includes $5 of monthly platform usage credit.

On the Free plan, the $5 credit covers 2,777 video-result events when the run has one apify-actor-start event ($0.00005 per event).

How to use

  1. Select a mode: video_details, search, channel_videos, transcript, or comments.
  2. Provide videoUrls for video details, transcripts, or comments using YouTube URLs or bare video IDs.
  3. Provide searchQueries for keyword searches, or channels for recent channel uploads.
  4. Set maxResults, maxComments, or transcriptLanguage as needed.
  5. Start the run and open the Dataset tab to see the records.
  6. Repeat runs through Apify Schedules, using daily as a starting point for monitoring channel uploads.
{
"mode": "video_details",
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]
}

Export the dataset as JSON or CSV, or read it through the Apify dataset API.

Input parameters

ParameterWhat it doesDefault
modeSelects video_details, search, channel_videos, transcript, or comments.video_details
videoUrlsYouTube URLs or bare video IDs for video details, transcripts, and comments. Invalid values are skipped.No default
searchQueriesKeywords used in search mode.No default
channelsHandles, channel IDs, or full channel URLs used in channel_videos mode.No default
maxResultsMaximum videos requested per search query or channel, from 1 to 500. Search stops after about 5 result pages (about 100 videos) per query, and channel listings stop after 10 pages, so a higher value may return fewer rows.20
transcriptLanguagePreferred transcript language code, such as en, es, or de. If it is missing, the Actor falls back to auto-generated captions in any language, then to any available track.en
maxCommentsMaximum top comments requested per video in comments mode, from 1 to 200. Comments stop after 5 pages per video, so a higher value may return fewer rows.20
proxyConfigurationOptional Apify Proxy setting. The Actor uses only the proxyUrl it receives from this field; when the field is empty or has no proxyUrl, requests run without a proxy.Empty
disableUsageStatsSet to true to turn off the run summary described in Usage statistics.false

Limits and edge cases

ConditionWhat you seeWhat to do
A mode has no corresponding input list, such as no videoUrls in video_details modeThe run completes as Succeeded with no records for that mode. A warning is logged, and an OUTPUT record is written to the run's default key-value store with the mode and totalItems.Supply the list required by the selected mode.
A videoUrls value is not a supported YouTube URL or bare video IDThe Actor logs that it could not extract a video ID and skips that value.Use a YouTube watch URL or a bare 11-character video ID.
A search, channel, video-details, transcript or comments fetch raises an exceptionThe affected item produces no record and a warning is logged. Rows already pushed remain in the dataset.Retry later or check the count with a one-result run.
A transcript has no segmentsThe transcript record has segment_count set to 0, a parse_confidence below 1.0, and a warning.Check warnings.
The requested transcript language is unavailableThe Actor falls back to auto-generated captions in any language, then to any available track. The record's language and is_generated fields show which transcript was returned.Check language and is_generated.
YouTube changes the HTML structureparse_confidence can drop below 1.0.Review warnings.
Search or channel resultsFields such as descriptions or tags for search results are null.Use video_details for the full metadata record for a specific video.
A run is aborted, times out or fails during processingEach record reaches the dataset before its video-result charge is attempted. Rows already pushed remain in the dataset, and items not yet processed produce no rows.Start another run for the remaining inputs.

FAQ

How much does it cost to scrape YouTube?

On the Free plan, video-result costs $0.0018 per event and apify-actor-start costs $0.00005 per event. 1,000 video-result events cost $1.80 on the Free plan, excluding the separate start charge.

What happens if the run returns an empty result?

An empty result can occur when the required input list is missing, video IDs cannot be extracted, or a fetch fails. The run completes as Succeeded when these handled conditions finish without records, warnings are logged, and the OUTPUT record in the run's default key-value store contains the mode and totalItems. Add valid mode-specific inputs, review the run log, and retry.

Why is my YouTube scrape not working?

Review the selected mode and its input field, then inspect warnings and parse_confidence. Retry later or check the result with a one-result run.

Why use this instead of the official YouTube Data API?

This Actor uses YouTube’s internal InnerTube API and HTML parsing and does not require an API key.

This Actor extracts data from YouTube pages and YouTube’s internal InnerTube requests. Whether a particular use is legal or allowed depends on the source terms and applicable law for your use case, so review those requirements before running it.

Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.

To opt out, set disableUsageStats to true in the input. Nothing is sent then.

Full list of collected fields

⌂ 换网址