YouTube Transcript API - Subtitles for Any Video
Pricing
from $3.00 / 1,000 transcript fetcheds
YouTube Transcript API - Subtitles for Any Video
Gets the transcript of any YouTube video in one call: plain text plus timed segments, in the language you prefer. No API key, no browser: one second per video and $0.003 per transcript.
Pricing
from $3.00 / 1,000 transcript fetcheds
Rating
0.0
(0)
Developer
Antonio del Olmo Tena
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Share
Get the transcript of any YouTube video in one call: plain text plus timed segments, in the language you prefer. No API key, no browser, no proxies, so it is fast (about one second per video) and one of the cheapest transcript Actors in the Store.
Typical uses: feeding videos to an LLM or a RAG pipeline, summarizing talks and podcasts, subtitles research, content repurposing, keyword analysis of competitors' videos, and monitoring whether a video's captions changed.
What you get
One Dataset item per video with:
transcript: the full text, cleaned and in reading order.segments: a list of{ start, duration, text }entries with the caption timings (optional).title,author,channelId,durationSeconds,viewCount,description.language,languageCode,isAutoGenerated(manual captions are preferred when both exist).availableLanguages: every caption track the video offers, so you can request another one.
Videos that cannot be processed (no captions, private, removed, age-restricted) are returned with an error field instead of failing the run, and they are not charged.
How to use it
- Open the Input tab.
- Paste one or more video URLs or ids in Video URLs or ids. Watch, youtu.be, shorts, embed and live links all work.
- Optionally set Preferred languages (for example
es, en). The first available one is used. - Click Start and read the results in the Output tab, or download them as JSON, CSV or Excel.
- To use it from your code or an AI agent, see the API section below.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/jNQXAC9IVRw"],"languages": ["en"],"includeSegments": true}
| Field | Description |
|---|---|
videoUrls | Video URLs or 11-character ids. Up to 50 per run. |
languages | Language codes in order of preference. Default ["en"]. If none is available, the first track is used. |
includeSegments | Default true. Set to false for smaller items when you only need the text. |
Output example
{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw","videoId": "jNQXAC9IVRw","title": "Me at the zoo","author": "jawed","durationSeconds": 19,"viewCount": 439209561,"language": "English","languageCode": "en","isAutoGenerated": false,"availableLanguages": [{ "code": "en", "name": "English", "autoGenerated": false },{ "code": "de", "name": "German", "autoGenerated": false }],"transcript": "All right, so here we are, in front of the elephants, the cool thing about these guys is that they have really, really, really long trunks...","wordCount": 39,"segments": [{ "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" }],"timestamp": "2026-10-02T18:00:00.000Z"}
Pricing
You pay per transcript, nothing else:
- Transcript fetched ($0.003): one video processed successfully.
- Actor start ($0.00005): Apify's standard start fee.
Videos without captions or unavailable videos are never charged. 1,000 transcripts cost $3. Comparable Actors charge $0.005 to $0.01 per video.
Use it as an API
curl -X POST "https://api.apify.com/v2/acts/USERNAME~youtube-transcript/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"languages":["en"]}'
Replace USERNAME~youtube-transcript with the Actor id shown on this page. The call returns the Dataset items directly. The Actor is also available to AI agents through Apify's MCP integration.
FAQ
The item says "No captions available". The video has no subtitles at all, not even auto-generated ones. YouTube does not generate them for every video, and some channels disable them.
I asked for Spanish and got English. The video has no Spanish track; availableLanguages in the output lists what exists. The transcript is returned in an available language and you can translate it with any LLM.
Are auto-generated captions supported? Yes. When a video has both manual and auto-generated captions in your language, the manual ones are used; isAutoGenerated tells you which one you got.
Does it work with Shorts and live streams? Shorts yes. Live streams only once the stream has ended and YouTube has produced captions.
Is anything bypassed? No. The Actor calls YouTube's public player API and public caption endpoint, nothing else.