Youtube Transcript Scraper
Pricing
from $0.01 / 1,000 results
Youtube Transcript Scraper
π₯ $0.01/ 1K results π₯ - Extract clean, timestamped YouTube transcripts in multiple languages along with video and channel metadata. Export results as JSON, CSV, or Excel, or automate extraction with the YouTube Transcript Scraper API.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Poidata
Maintained by CommunityActor stats
2
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
π¬ YouTube Transcript Scraper
Extract clean, timestamped transcripts from public YouTube videos β in the language the video already has, or translated into another language on the fly.
Paste one or more YouTube URLs or video IDs and receive structured caption data with timings, ready for research, content analysis, translation work, AI workflows, or automation. No YouTube account, YouTube API key, or coding required.
What is YouTube Transcript Scraper?
YouTube Transcript Scraper extracts existing captions and subtitles from public YouTube videos.
For every successfully processed video, you receive:
- Full transcript text and timestamped snippets
- Ready-to-use SRT, WebVTT, and plain-text subtitles
- The video's available caption/translation languages
- Video and channel metadata
- The language choices that already exist for the video
- Structured output in JSON, CSV, or Excel
Key features
- π― Extract accurate, timestamped transcript segments
- π See the available caption and translation languages per video
- π£οΈ Pick an existing transcript in a specific language, or generate a brand-new translation
- β‘ Process multiple YouTube videos in one run
- πΊ Include video and channel metadata
- π Accept YouTube URLs or video IDs
- π€ Export results as JSON, CSV, or Excel
- π» Use through the Apify Console or API
Two ways to get a non-default language
There are two distinct language options:
| Option | What it does | Speed |
|---|---|---|
| Transcript language | Returns a transcript that already exists for the video β auto-generated captions or a human-added track. | Fast (no generation) |
| Translate to language | Generates a new translation into a language that isn't already available. | Slower (translated on the fly) |
Use Transcript language to grab a pre-existing transcript in the exact language a video publisher already provided. Use Translate to language to get a language that wasn't produced automatically.
How does it work?
- Add one or more YouTube video URLs or IDs.
- Optionally pick a Transcript language (an existing track) or Translate to language (a new translation).
- Run the Actor.
- Download the results or access them through the Apify API.
Each successfully processed video is stored as one record (one row per video), containing the full transcript, timings, subtitles, and video/channel metadata.
Input options
| Field | Description | Required |
|---|---|---|
videoIds | One or more YouTube video IDs or URLs | Yes |
lang | Pick an already-existing transcript language (default/native, auto-generated, or a human-added track) | No |
tlang | Generate a new translation into this language on the fly | No |
videoIds
Add a YouTube video ID:
{"videoIds": ["dQw4w9WgXcQ"]}
You can also use a complete YouTube URL:
{"videoIds": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}
lang β an already-existing transcript
Pick one of the transcripts that already exist for the video (auto-generated or human captions). The Actor returns that track β it is never generated on the fly, so it's fast.
{"videoIds": ["dQw4w9WgXcQ"],"lang": "es"}
Leave lang as default to return the video's native/default transcript.
tlang β a brand-new translation
Generate a translation into a language that isn't already available:
{"videoIds": ["dQw4w9WgXcQ"],"tlang": "hi"}
The Actor fetches the transcript, translates it, and returns the translated transcript with timings.
- Translation can take up to 60 seconds per video.
- The result is clearly marked with the target and source language.
- Only ISO language codes are accepted; an unsupported code is reported and the run is aborted.
langandtlangare independent β you normally use one or the other.
Every result also includes the video/channel metadata and the list of available caption/translation languages (available_translations), so you can see what already exists for a video.
Input examples
Extract the default transcript
{"videoIds": ["dQw4w9WgXcQ"]}
Pick an existing Spanish transcript
{"videoIds": ["dQw4w9WgXcQ"],"lang": "es"}
Generate a Hindi translation on the fly
{"videoIds": ["dQw4w9WgXcQ"],"tlang": "hi"}
Process several videos
{"videoIds": ["dQw4w9WgXcQ","https://www.youtube.com/watch?v=9bZkp7q19f0"]}
How to find what languages a video already has
To know whether a language already exists as a track (before deciding whether to translate), run the Actor and read available_translations in each record β it lists the caption/translation languages the video already has. If the language you want is in that list, use Transcript language; otherwise use Translate to language so the Actor generates it.
Output example
Each successfully processed video is stored as one record (one row per video). It contains the full transcript and video/channel details:
{"video_id": "UMIMKzstuik","url": "https://www.youtube.com/watch?v=UMIMKzstuik","title": "Example YouTube Video","description": "Example video description.","thumbnail_url": "https://i.ytimg.com/vi/.../maxresdefault.jpg","channel_id": "UCr6JcgG9eskEzL-k6TtL9EQ","channel_name": "Example Channel","channel_url": "https://www.youtube.com/channel/UCr6JcgG9eskEzL-k6TtL9EQ","channel_handle": "@examplechannel","channel_avatar_url": "https://yt3.ggpht.com/.../avatar.jpg","channel_subscribers": "1.2M subscribers","channel_videos": "345 videos","channel_verified": true,"upload_date": "2026-08-30","view_count": 49981,"duration_human": "9m 0s","video_length_seconds": 547,"transcript_seconds": 540.68,"category": "Science & Technology","visibility": "public","is_live": false,"keywords": ["mac", "apple"],"language_name": "English","language_code": "es","requested_language": "es","source_type": "Manual","auto_generated": false,"translatable": true,"translated": false,"translated_to": "","available_translations": ["de-DE", "ja", "pt-BR", "es-419"],"snippet_count": 239,"full_text": "Apple's most powerful chip, the M5 Ultra, is finally here...","srt": "1\n00:00:00,320 --> 00:00:04,400\nWelcome to today's video.\n\n...","webvtt": "WEBVTT\n\n00:00:00.320 --> 00:00:04.400\nWelcome to today's video.\n\n...","segments": [{ "segment_index": 0, "start": 0.32, "duration": 4.08, "end": 4.4, "text": "Apple's most powerful chip, the M5 Ultra" }],"success": true,"fetched_at": "2026-08-31T20:18:02Z"}
visibility,keywordsandis_liveare derived from the data available. A few fields (e.g.view_count,upload_date) may be empty when the source doesn't provide them.
Subtitle formats included
Fields in each record can be used directly as subtitles:
srtβ the transcript formatted as SRT subtitles.webvttβ the transcript formatted as WebVTT subtitles.full_textβ the transcript as plain text.
Output views
The Output tab shows views of the same data:
| View | Rows | Columns |
|---|---|---|
| Overview | one per video | Thumbnail Β· Title Β· Channel Β· Views Β· Language Β· Source Β· Duration Β· Snippets Β· YouTube URL Β· OK Β· Available translations |
| Video details | one per video | Every video-level field, including the requested language, plain text, SRT/WebVTT and the full segments array |
| Channel details | one per video's channel | Video Β· Avatar Β· Channel Β· Handle Β· Subscribers Β· Videos Β· Verified Β· Channel URL Β· Channel ID |
Use the view selector at the top of the table to switch. Every view can be downloaded (Export) or fetched through the API with its ?view= parameter.
The full timestamped snippet list lives in each record's
segmentsarray (see the Video details view or the JSON export) β one element per transcript line.
YouTube Transcript Scraper API
Use the YouTube Transcript Scraper API to automate transcript extraction from your applications, scripts, AI agents, or data pipelines.
Send the same JSON input through the Apify API and retrieve the resulting dataset programmatically. An Apify API token is required for API access, but a YouTube account or YouTube Data API key is not required.
The API is suitable for:
- AI and LLM data pipelines
- Video summarization workflows
- RAG knowledge bases
- Content and keyword research
- Academic or market research
- Subtitle analysis
- Workflow automation
Common use cases
AI and LLM applications
Collect structured YouTube transcripts for summarization, topic extraction, question answering, and other language-processing workflows.
Content research
Study videos without manually copying captions from YouTube.
SEO research
Analyze topics, phrases, questions, and terminology used in video content.
Video monitoring
Process transcripts from selected videos and integrate the results into automated monitoring systems.
Translation research
Discover which manual, auto-generated, and translated caption tracks are already available.
Frequently asked questions
Do I need a YouTube account?
No. You do not need to sign in to YouTube.
Do I need a YouTube API key?
No. The Actor does not require a YouTube Data API key.
Can I use it as a YouTube Transcript Scraper API?
Yes. You can run the Actor programmatically through the Apify API and retrieve the results from its dataset.
Can it extract auto-generated captions?
Yes. The Actor can return auto-generated captions when they are available for the video.
Can it extract transcripts in different languages?
Yes, two ways:
- Transcript language β return a transcript that already exists for the video (e.g. a human-added track or an auto-generated one). Fast, no generation.
- Translate to language β generate a new translation on the fly into a language that isn't already available. Slower.
Every result also lists the available caption/translation languages in available_translations, so you can see what exists before deciding whether to translate.
Does it translate transcripts automatically?
Not automatically. If you want a translation, pass a target language in Translate to language β the Actor translates it on the fly. If the language already exists as a track, use Transcript language instead for a faster result.
What happens if a video has no captions?
The video is skipped because no transcript can be extracted. It is not added to the dataset.
Can I process multiple videos in one run?
Yes. Add several URLs or video IDs to videoIds. The Actor stores one record per successful video (each record contains the full transcript, timings, and metadata).
What formats can I download?
Results can be exported as JSON, CSV, or Excel.
What happens when one video fails?
The failed video is skipped while the remaining videos continue processing.
License
Free to use. See the Apify Store terms for monetized Actors.