How to Get YouTube Transcripts in Python

Two ways to pull YouTube transcripts in Python: the open-source youtube-transcript-api library, and a hosted REST API. Working code for both, and where the self-hosted approach breaks in production.

00:07:00 · SEP 26, 2026

Jawaban singkat

Instal youtube-transcript-api untuk skrip lokal cepat, atau panggil REST API yang di-hosting jika Anda tidak ingin repot dengan pemblokiran IP dan masalah PoToken setelah deploy. Keduanya dibahas di bawah dengan kode yang benar-benar berfungsi.
01

Instal pustaka open-source

youtube-transcript-api adalah paket Python yang terawat baik yang mengambil data caption YouTube secara langsung - tanpa API key, tanpa kuota YouTube Data API.

pip install youtube-transcript-api

Ambil transkrip dengan ID video:

from youtube_transcript_api import YouTubeTranscriptApi

api = YouTubeTranscriptApi()
transcript = api.fetch("dQw4w9WgXcQ", languages=["en"])

for snippet in transcript:
    print(snippet.text, snippet.start, snippet.duration)
02

Di mana ini gagal setelah di-deploy

Ini bekerja dengan andal di laptop. Saat di-deploy ke server cloud, bisa mengalami kegagalan nyata yang sudah terdokumentasi dengan baik - pemblokiran IP, PoTokenRequired, dan error 'transkrip dinonaktifkan' yang tidak selalu seperti kelihatannya. Lihat checklist diagnostik lengkap untuk penyebab dan solusi pastinya.

03

Dapatkan API key (jika lebih suka tidak self-host)

Ambil key gratis dari dashboard - 100 kredit gratis, tanpa kartu.

pip install requests
04

Panggil API yang di-hosting dari Python

Tanpa pool proxy, tanpa perawatan pemblokiran IP - cukup satu permintaan HTTP:

import requests

response = requests.get(
    "https://getyoutubetranscript.com/api/v1/transcript",
    params={"v": "dQw4w9WgXcQ"},
    headers={"Authorization": "Bearer sk_live_..."},
)
result = response.json()

print(result["data"]["transcript"])
print(result["data"]["word_count"])

Permintaan yang gagal mengembalikan objek error alih-alih melempar exception khusus pustaka, sehingga penanganan error yang sama berlaku di semua endpoint.

{ "success": false, "code": "...", "message": "..." }
05

Mengambil lebih dari satu video

Melakukan loop pada daftar ID video bekerja dengan cara yang sama - cukup perhatikan batas permintaan per menit pada paket Anda. Lihat panduan rate limit untuk logika backoff dan retry.

Kedua pendekatan mengembalikan informasi yang sama - bedanya adalah siapa yang memelihara infrastruktur agar tetap berjalan. Lihat harga lengkap (100 kredit gratis, tanpa kartu) atau baca dokumentasi API untuk setiap endpoint.

FAQ Transkrip YouTube Python

Q01

Pendekatan mana yang harus saya gunakan?

youtube-transcript-api untuk skrip lokal cepat atau prototipe. API yang di-hosting saat Anda men-deploy ke produksi dan tidak ingin memelihara sendiri workaround proxy/pemblokiran IP.

Q02

Apakah API yang di-hosting memerlukan pustaka youtube-transcript-api?

Tidak - ini API REST biasa. Panggil dengan HTTP client apa pun (requests, httpx, bahkan curl); tidak perlu dependensi khusus Python.

Q03

Bisakah saya mendapatkan timestamp per baris, bukan hanya teks lengkap?

Pustaka open-source mengembalikan waktu mulai/durasi per potongan secara langsung. Endpoint transkrip API kami yang di-hosting saat ini mengembalikan transkrip lengkap sebagai teks datar plus jumlah kata, bukan timestamp per segmen - jika kasus penggunaan Anda memerlukan granularitas itu khusus dari API, pustaka open-source adalah pilihan yang lebih baik saat ini.

Q04

Apa yang terjadi jika video tidak punya transkrip?

Kedua pendekatan mengembalikan error spesifik alih-alih string kosong - lihat checklist diagnostik untuk arti setiap kode error.

Terkait