Youtube Transcript API avatar

Youtube Transcript API

Pricing

from $10.00 / 1,000 transcripts

Go to Apify Store
Youtube Transcript API

Youtube Transcript API

YouTubeTranscript.dev turns YouTube videos into text. It uses captions in 100+ languages and AI transcription when captions are missing. Supports single videos and batches, TXT/SRT/VTT/JSON export, translation, and a REST API.

Pricing

from $10.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Youtube Transcript Dev

Youtube Transcript Dev

Maintained by Community

Actor stats

1

Bookmarked

13

Total users

3

Monthly active users

13 days ago

Last modified

Share

YouTubeTranscript.dev - YouTube Transcript API

Real-time API for extracting YouTube transcripts and captions. Supports 100+ languages, batch processing, timestamped segments, and word-level timing. Proxies to the YouTubeTranscript.dev backend.

Standby Mode Endpoints

This Actor runs in Standby mode — use it like a real-time API. No need to click Start; just send HTTP requests to the Actor hostname.

EndpointMethodDescription
/GETHealth check. Returns service status.
/transcribePOSTTranscribe a single YouTube video
/batchPOSTTranscribe multiple videos (batch)
/batch/{batch_id}GETPoll batch status (when POST /batch returns processing)

Authentication

Include your Apify API token in one of two ways:

  1. Query parameter: ?token=YOUR_APIFY_TOKEN
  2. Authorization header (recommended): Authorization: Bearer YOUR_APIFY_TOKEN

Request Examples

Single video (cURL)

curl -X POST "https://YOUR_ACTOR.apify.actor/transcribe?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"video":"dQw4w9WgXcQ","language":"en"}'

Single video (JavaScript)

const response = await fetch('https://YOUR_ACTOR.apify.actor/transcribe', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.APIFY_TOKEN}`,
},
body: JSON.stringify({
video: 'dQw4w9WgXcQ',
language: 'en',
format: { timestamp: true },
}),
});
const data = await response.json();
console.log(data.data.transcript.text);

Single video (Python)

import requests
response = requests.post(
'https://YOUR_ACTOR.apify.actor/transcribe',
headers={
'Content-Type': 'application/json',
'Authorization': f'Bearer {os.environ["APIFY_TOKEN"]}',
},
json={'video': 'dQw4w9WgXcQ', 'language': 'en'},
)
data = response.json()
print(data['data']['transcript']['text'])

Batch (cURL)

curl -X POST "https://YOUR_ACTOR.apify.actor/batch?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"video_ids":["dQw4w9WgXcQ","jNQXAC9IVRw"],"language":"en"}'

When POST /batch returns status: "processing", poll until completed:

$curl -X GET "https://YOUR_ACTOR.apify.actor/batch/BATCH_ID?token=YOUR_APIFY_TOKEN"

Request Body

POST /transcribe

FieldTypeRequiredDescription
videostringYesYouTube URL or 11-character video ID
languagestringNoPreferred language code (e.g. en, es). Default: en
sourcestringNoauto (auto-generated) or manual (creator-provided). Default: auto
formatobjectNo{ timestamp: true, paragraphs: true, words: true }

POST /batch

FieldTypeRequiredDescription
video_idsarrayYesArray of video URLs or IDs (max 100)
languagestringNoPreferred language code
sourcestringNoauto or manual
formatobjectNoOutput format options

Response

Successful responses return JSON with:

  • request_id / batch_id — Request identifier
  • statuscompleted, partial, processing, or failed (for batch: poll GET /batch/{batch_id} when processing)
  • data — Transcript with text, language, source, optional segments, paragraphs, words
  • credits_used — Credits consumed

Pricing

This Actor uses pay-per-event pricing on Apify. You are charged per successfully processed transcript. Check the Apify Store for the current event price.

FAQ

Which videos are supported?
Public YouTube videos with captions (manual or auto-generated). Private, unlisted, or age-restricted videos are not supported.

What if a video has no captions?
The API returns 404 with "No captions available for this video." If you run the actor from the Apify UI with input, the run completes and stores that error in the dataset instead of crashing.

Which languages are supported?
All languages available on YouTube (100+). Set the language parameter to any ISO 639-1 code (e.g. en, es, de, ja, ko).

Is ASR (audio transcription) available?
No. This Actor supports captions only. Videos without captions cannot be transcribed.