सामग्री पर जाएँ

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।

यह कैसे काम करता है

1. URL के साथ /transcript call करें
कोई भी watch, shorts, embed या youtu.be लिंक — या सिर्फ़ video ID। lang (default en), type (any, manual या auto) और format (json, text, srt या vtt) जोड़ें।
2. captions हम सर्वर-साइड resolve करते हैं
Tunelio अपने extraction fleet से YouTube के caption track लाता है, इसलिए bot check, IP reputation और format बदलाव कभी आपके कोड तक नहीं पहुँचते।
3. response सीधे इस्तेमाल करें
JSON सीधे आपके app या LLM pipeline में; SRT और VTT video player में; text search index और summary में। आम latency लगभग एक सेकंड।

कॉपी-पेस्ट उदाहरण

tnl_… की जगह Dashboard से अपनी API key रखें। वही key /info और /create के लिए भी काम करती है।

cURL
curl -X GET "https://tunelio.dev/transcript?url=dQw4w9WgXcQ&lang=en&format=json" \
  -H "Authorization: Bearer tnl_…"
Node.js
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: "..." }]
Python
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।

डेवलपर इससे क्या बनाते हैं

LLM और RAG pipeline
model को टाइमस्टैम्प वाले segment दें, हर chunk पर start time रखें, और जवाबों को वीडियो के सटीक सेकंड से जोड़ें।
Subtitles और accessibility
अपने player को SRT या VTT दें, captions का अनुवाद करें, या embedded वीडियो के साथ transcript दिखाएँ।
Search और summary
पूरा text index करें ताकि users वीडियो के अंदर खोज सकें; summary, chapter और highlight बनाएँ।
Bot और automation
Telegram या Discord bot जो “12:30 पर क्या कहा?” का जवाब दें, Zapier-जैसे flow, content moderation।

कीमत

एक 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 के लिए नहीं।

API डॉक्स पढ़ें