YouTube Transcript API
YouTube URL भेजें और उसी request में transcript पाएँ: टाइमस्टैम्प वाले segment JSON में, या तैयार SRT, VTT और plain text। manual captions हों तो वही, न हों तो auto-generated — साथ में पूरी भाषा सूची, ताकि आप हमेशा जानें कि क्या मिला।
transcript API क्या करता है
YouTube transcript API वीडियो URL को उसके captions के structured data में बदलता है। Tunelio का GET /transcript endpoint वीडियो resolve करता है, आपकी माँगी भाषा के लिए सबसे अच्छा caption track चुनता है (auto-generated की जगह इंसानी subtitles को प्राथमिकता), और हर segment उसके start time और duration के साथ लौटाता है — साथ में जुड़ा हुआ पूरा text और वीडियो की बाकी सभी भाषाओं की सूची। न browser automation, न cookies, न अपडेट रखने वाला yt-dlp; आपके API key के साथ एक HTTPS request।
यह कैसे काम करता है
कॉपी-पेस्ट उदाहरण
tnl_… की जगह Dashboard से अपनी API key रखें। वही key /info और /create के लिए भी काम करती है।
curl -X GET "https://tunelio.dev/transcript?url=dQw4w9WgXcQ&lang=en&format=json" \
-H "Authorization: Bearer tnl_…"const res = await fetch(
"https://tunelio.dev/transcript?" + new URLSearchParams({
url: "dQw4w9WgXcQ",
lang: "en",
format: "json",
}),
{ headers: { Authorization: "Bearer " + process.env.TUNELIO_KEY } }
);
const data = await res.json();
console.log(data.full_text);
console.log(data.segments); // [{ start: 1.36, duration: 1.68, text: "..." }]import os, requests
res = requests.get(
"https://tunelio.dev/transcript",
params={"url": "dQw4w9WgXcQ", "lang": "en", "format": "json"},
headers={"Authorization": f"Bearer {os.environ['TUNELIO_KEY']}"}
)
data = res.json()
print("Title:", data["title"])
print("Full text:", data["full_text"])
for seg in data["segments"]:
print(f"[{seg['start']}s -> +{seg['duration']}s] {seg['text']}"){
"video_id": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"language": "en",
"language_name": "English",
"is_generated": false,
"type": "manual",
"available_languages": [
{ "code": "en", "name": "English", "is_generated": false, "type": "manual" },
{ "code": "es", "name": "Spanish", "is_generated": true, "type": "auto" }
],
"segments_count": 61,
"segments": [
{ "start": 18.64, "duration": 3.24, "text": "We're no strangers to love" },
{ "start": 21.88, "duration": 2.60, "text": "You know the rules and so do I" }
],
"full_text": "We're no strangers to love You know the rules and so do I …",
"status": "ok"
}JSON response में video ID और title, असल में दी गई भाषा (language, language_name), auto-generated है या नहीं (is_generated, type), available_languages की सूची, segments_count, segments array और full_text होता है। बिना captions वाला वीडियो 404 देता है और request charge नहीं होती — fail हुई requests के credits अपने-आप refund होते हैं।
आउटपुट format
- json (default)
- start, duration और text वाले structured segment, साथ में full_text और भाषा सूची — apps, RAG pipeline और विश्लेषण के लिए।
- text
- पूरा transcript plain text (text/plain) — summary, search indexing और LLM prompt के लिए।
- srt
- SubRip subtitles (text/srt) — video player, editor और burn-in tools के लिए।
- vtt
- WebVTT (text/vtt) — HTML5 <track> और web player के लिए।
Parameters
- url
- YouTube watch, shorts, embed या youtu.be URL, या 11 अक्षरों का video ID। ज़रूरी।
- lang
- भाषा कोड जैसे en, es, de, hi, zh। default en। type=any पर Tunelio पहले English, फिर पहले उपलब्ध track पर fallback करता है और बताता है कि कौन-सा इस्तेमाल हुआ।
- type
- any (manual को प्राथमिकता, auto पर fallback), manual (सिर्फ़ इंसानी subtitles) या auto (सिर्फ़ auto-generated)। default any।
- format
- json, text, srt या vtt। default json।
डेवलपर इससे क्या बनाते हैं
कीमत
एक transcript request की कीमत 6 credits है, /info जितनी। नए account को 100 free credits मिलते हैं — सोलह transcript के लिए काफ़ी — बिना card के। paid plan $9 प्रति माह से शुरू, 100,000 credits के साथ।
खुद youtube-transcript-api या yt-dlp चलाने की तुलना में
youtube-transcript-api और yt-dlp जैसी open-source library laptop से captions अच्छी तरह लाती हैं। सर्वर पर उन्हें YouTube की bot check विरासत में मिलती है: data-center IP को challenge या block किया जाता है, age-restricted वीडियो को cookies चाहिए, और YouTube का हर बदलाव library update और redeploy माँगता है। जब transcript एक बार की script नहीं बल्कि product का feature हो, ये असली लागत हैं।
Tunelio यह काम सर्वर-साइड ले जाता है। आपके पास एक HTTPS call और ऐसा JSON contract रहता है जो YouTube के बदलने पर नहीं बदलता। कभी-कभार अपनी मशीन से transcript चाहिए तो free library सही औज़ार हैं; transcript आपके product में है तो API रखरखाव से सस्ता है।
सामान्य सवाल
क्या यह बिना manual subtitles वाले वीडियो पर चलता है?
हाँ। type=any (default) पर इंसानी track न होने पर Tunelio YouTube के auto-generated captions लौटाता है और response को is_generated: true से चिह्नित करता है।
कौन-सी भाषाएँ समर्थित हैं?
वीडियो में मौजूद हर भाषा — manual और auto-generated track। lang से कोड माँगें; response सभी available_languages सूचीबद्ध करता है ताकि आप picker दे सकें।
timestamp कितने सटीक हैं?
ये YouTube की अपनी caption timing हैं: हर segment में start time और duration सेकंड में, सौवें हिस्से तक — ठीक वैसे जैसे player दिखाता है।
वीडियो में captions न हों तो?
API साफ़ संदेश के साथ 404 देता है और उस request के credits अपने-आप refund हो जाते हैं। private और unavailable वीडियो भी 404 देते हैं।
क्या rate limit है?
Trial और Pro account पर प्रति मिनट request की सीमा है जो pricing page पर लिखी है; Ultra और Mega plan पर request rate असीमित है। आप credits के लिए भुगतान करते हैं, requests के लिए नहीं।