YouTube Transcript Scraper & API: $1 per 1,000 Transcripts avatar

YouTube Transcript Scraper & API: $1 per 1,000 Transcripts

Pricing

$1.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper & API: $1 per 1,000 Transcripts

YouTube Transcript Scraper & API: $1 per 1,000 Transcripts

Get YouTube transcripts, subtitles and captions with video info (title, channel, date, views, likes) from videos, channels, playlists or searches. Full text plus timestamped segments in the original language, ready for AI. $1 per 1,000 transcripts; no captions = free.

Pricing

$1.00 / 1,000 transcripts

Rating

5.0

(1)

Developer

Melon Data

Melon Data

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

What is this YouTube Transcript Scraper?

YouTube Transcript Scraper that turns YouTube videos into clean text: the full transcript (subtitles / captions) of each video, with timestamped segments and the video's public information (title, channel, publish date, views, likes, description). Paste video links, or a channel, a playlist or a search, and get one result per video, ready for AI, search or analysis. $1 per 1,000 transcripts, all included (proxies and platform usage). Videos without captions are free. No start fee.

It works like a YouTube transcript API, with no YouTube account and no API key. It uses plain HTTP requests (no browser, no video or audio download): a channel of 500 videos took 3 to 5 minutes in our benchmark, and a single video takes 2 to 15 seconds (measured, October 2026). The transcript comes in the video's original language by default; ask for another language when the video has it.

Use it for RAG and chatbots, video summaries, content repurposing (blog posts, newsletters), SEO and keyword research, media monitoring, or to build datasets. Run it from Apify Console, through the API, on a schedule, or from Make, n8n and Zapier. Apify's free plan ($5 of monthly credit) covers up to 5,000 transcripts a month.

🇫🇷 Transcription YouTube : sous-titres et transcriptions de vidéos, chaînes, playlists ou recherches, avec horodatage. 1 $ les 1 000. 🇪🇸 Transcripción de YouTube: subtítulos y transcripciones de videos, canales, listas o búsquedas, con marcas de tiempo. 1 $ por 1.000. 🇩🇪 YouTube-Transkript: Untertitel und Transkripte von Videos, Kanälen, Playlists oder Suchen, mit Zeitstempeln. 1 $ pro 1.000. 🇧🇷 Transcrição do YouTube: legendas e transcrições de vídeos, canais, playlists ou buscas, com marcações de tempo. US$ 1 por 1.000.

How to get YouTube transcripts (step by step)

  1. Paste one or more YouTube links in Video links (watch links, youtu.be, Shorts, /live/ or bare video IDs). Or fill in Channels, Playlists or Search terms.
  2. Optional: choose a preferred language (e.g. en), the max videos per channel, playlist or search, and extra formats (SRT, WebVTT, paragraphs).
  3. Click Start. Results appear in the dataset as they arrive: download them as JSON, CSV, Excel or HTML, or read them through the API.

What data do you get?

DataFields
Full transcript as one clean string (no HTML, no tags)transcriptText
Timestamped segments, in secondssegments: [{start, duration, text}] (optional)
Transcript language and typetranscriptLanguage, isAutoGenerated, originalLanguage, availableLanguages, languageFallback
VideovideoId, url, title, description, durationSeconds, viewCount, likeCount (when public), publishedAt
ChannelchannelName, channelId, channelUrl
Subtitle files (optional)srt, vtt, readable paragraphs
Statusstatus: found, or no_transcript with a reason (no captions, live stream, private, age-restricted…), scrapedAt

In our October 2026 benchmark, every video that had captions was delivered: 498 of the 500 latest videos of a large channel (the other 2 had no captions), 192 of 200 search results, 40 of 40 long podcast episodes (up to several hours).

Why this YouTube Transcript Scraper?

This actor
Price per 1,000 transcripts$1, all included. Videos without captions are free. No start fee
Typical price of other YouTube transcript actors on the Store$2 to $10 per 1,000, video details sometimes extra
Video information (title, channel, date, views, likes, description)✅ Included
InputsVideo links, channels (@handle too), playlists, searches
LanguageOriginal language by default (AI-dubbed audio tracks are ignored), or your preferred language
AI-ready outputFull text + timestamped segments, SRT, WebVTT, paragraphs
Speed (measured)100 to 150 videos per minute on a channel, 2 to 15 s for one video
ReliabilityAutomatic retries on other IPs, resume after a restart without double charge

Input

FieldTypeDescription
videoUrlsarrayVideo links or IDs. Channel and playlist links pasted here also work
channelUrlsarrayChannel links (/@handle, /channel/UC…, /c/…, /user/…) or @handles. Newest videos first
channelContentstringWhich uploads of each channel: all (default), videos (long videos only, no Shorts) or shorts
publishedAfterstringChannels and playlists only: keep the videos published on or after a day, e.g. 2026-11-01, 7 days, 2 weeks, 3 months. Older videos are left out and never charged
playlistUrlsarrayPlaylist links or IDs
searchQueriesarraySearch terms: the first videos of each YouTube search (live streams are skipped)
searchUploadDatestringSearches only: any (default), hour, today, week, month or year (videos uploaded in that period)
searchSortBystringSearches only: relevance (default) or views (most viewed first)
maxVideosintegerMax videos per channel, playlist or search (default 50, 0 = all). Video links are always all processed
languagestringPreferred transcript language, e.g. en, fr, pt-BR. Empty = the video's original language
translateTostringYouTube's automatic translation, when YouTube allows it (see FAQ)
transcriptTypestringany (manual subtitles first, else auto-generated), manual, or auto
includeTimestampsbooleanAdd the timestamped segments (default on)
outputFormatsarrayExtra formats: paragraphs, srt, vtt
includeMetadatabooleanAdd the publish date and like count (default on)
searchCountrystringCountry for search results, e.g. US, FR, BR

Example inputs

Transcripts of a few videos:

{
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ", "https://youtu.be/jNQXAC9IVRw"]
}

The 100 latest videos of a channel, in English when available, with SRT subtitles:

{
"channelUrls": ["https://www.youtube.com/@TED"],
"maxVideos": 100,
"language": "en",
"outputFormats": ["srt"]
}

The 50 latest long videos of a channel, without its Shorts:

{
"channelUrls": ["https://www.youtube.com/@kurzgesagt"],
"channelContent": "videos",
"maxVideos": 50
}

Only the new videos of a channel (schedule it every week with 7 days: the channel listing stops at the first older video; measured on @TED with 10 days: one listing page, 7 transcripts in 21 s):

{
"channelUrls": ["https://www.youtube.com/@TED"],
"channelContent": "videos",
"publishedAfter": "7 days",
"maxVideos": 0
}

The first 40 videos of two searches, without timestamps:

{
"searchQueries": ["how to cook rice", "machine learning tutorial"],
"maxVideos": 40,
"includeTimestamps": false
}

The new videos of the week about a topic (schedule it to monitor a subject every day with today):

{
"searchQueries": ["electric cars"],
"searchUploadDate": "week",
"maxVideos": 30
}

Switching from another actor? The input names of other popular YouTube transcript actors are also accepted (youtube_url, videoUrl, urls, startUrls, channel, channel_url, max_videos, maxResults, languages, translate_to, transcript_type, dateFilter, sortingOrder, oldestPostDate…). In Make, n8n or Zapier you can usually change only the actor ID.

Output example

{
"status": "found",
"videoId": "tu6tF-lVDJI",
"url": "https://www.youtube.com/watch?v=tu6tF-lVDJI",
"title": "Why You Should Share a Recipe with a Stranger | Anuj Gupta | TED",
"channelName": "TED",
"channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
"channelUrl": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug",
"publishedAt": "2026-10-27",
"durationSeconds": 233,
"viewCount": 33450,
"likeCount": 161,
"description": "Can we eat our way to a stronger democracy? Civic leader Anuj Gupta be…",
"transcriptLanguage": "en",
"isAutoGenerated": false,
"isTranslated": false,
"originalLanguage": "en",
"availableLanguages": [
{ "languageCode": "ar", "name": "Arabic", "isAutoGenerated": false },
{ "languageCode": "en", "name": "English", "isAutoGenerated": false },
{ "languageCode": "es", "name": "Spanish", "isAutoGenerated": false }
],
"transcriptText": "Can we eat our way to a stronger democracy? (Laughter) Normally, when we talk about strengthening democracy, we talk voting, town halls…",
"segments": [
{ "start": 3.875, "duration": 3.379, "text": "Can we eat our way to a stronger democracy?" },
{ "start": 7.671, "duration": 1.626, "text": "(Laughter)" }
],
"input": "https://www.youtube.com/watch?v=tu6tF-lVDJI",
"scrapedAt": "2026-10-28T08:21:29.118Z"
}

A video without captions comes back with "status": "no_transcript", a reason (no_captions, live, unavailable, private, age_restricted, content_warning, members_only) and its video information. It is not charged.

Use it from the API, Make, n8n or Zapier

Get the transcripts of a video in one call (replace <YOUR_API_TOKEN>):

curl -X POST "https://api.apify.com/v2/acts/fit_melon~youtube-transcript-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'

In Make, n8n or Zapier, use the Apify "Run an Actor" module with the actor fit_melon/youtube-transcript-scraper and the same input.

FAQ

How much does it cost? $1 per 1,000 transcripts delivered, everything included: proxies and platform usage are on us. Videos without a transcript (no captions, live, private, age-restricted…) are free. Set a maximum cost per run in the run options and the actor stops cleanly before reaching it.

Which language do I get? By default the video's original language: manual subtitles when they exist, else YouTube's auto-generated captions. Videos with AI-dubbed audio tracks keep their original language (the dubbed captions are ignored). Set language to prefer another language: you get it when the video has subtitles in that language, otherwise the original language with languageFallback: true. availableLanguages lists every track of the video.

Can it translate transcripts? translateTo asks YouTube for its automatic translation. In October 2026 YouTube refuses most of these requests: you then get the original transcript with translationUnavailable: true, at the normal price. If the video has subtitles written in the requested language, those are used instead.

Does it work for Shorts, live streams and long videos? Shorts: yes, and channelContent takes only the Shorts or only the long videos of a channel. Live streams and upcoming premieres have no transcript until they end (they are skipped in searches, free otherwise). Long videos: yes, we tested episodes of several hours. Very long transcripts keep the full text; if a single result would exceed Apify's 9 MB limit, the timed segments are left out first.

Why do some videos have no transcript? The uploader turned captions off, YouTube did not generate them (music, no speech, some languages), or the video is private, members-only, age-restricted or behind a YouTube content warning. This actor never signs in and never clicks through these checks: such videos come back as no_transcript, free of charge.

Is it legal? It only collects public data (transcripts and public video information) without logging in, and never downloads video or audio. You are responsible for how you use the data, including copyright on the transcripts and YouTube's terms.

Something does not work? Open an issue in the Issues tab with your run link: we answer quickly.

Also by this developer

Google Maps Scraper: local business leads with phones, emails, websites and social profiles. $0.50 per 1,000 places, all included.