Youtube Transcript API avatar

Youtube Transcript API

Under maintenance

Pricing

from $10.00 / 1,000 transcripts

Go to Apify Store
Youtube Transcript API

Youtube Transcript API

Under maintenance

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

5

Total users

3

Monthly active users

7 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 monthly rental pricing. Subscribe once for unlimited API access within your plan limits. Check the Apify Store for current pricing.

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."

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.