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
Kurzantwort
Die Open-Source-Bibliothek installieren
youtube-transcript-api ist ein gut gepflegtes Python-Paket, das die eigenen Untertiteldaten von YouTube direkt abruft - kein API-Schlüssel, kein YouTube-Data-API-Kontingent.
pip install youtube-transcript-apiEin Transkript mit einer Video-ID abrufen:
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)Wo das nach dem Deployment bricht
Auf einem Laptop funktioniert das zuverlässig. Auf einem Cloud-Server deployt, kann es auf echte, gut dokumentierte Fehler stoßen - IP-Blockierung, PoTokenRequired, und ein 'Untertitel deaktiviert'-Fehler, der nicht immer das ist, was er zu sein scheint. Die vollständige Diagnose-Checkliste nennt die genauen Ursachen und Lösungen.
Einen API-Schlüssel holen (wenn du nicht selbst hosten willst)
Hol dir einen kostenlosen Schlüssel im Dashboard - 100 kostenlose Credits, keine Kreditkarte nötig.
pip install requestsDie gehostete API aus Python aufrufen
Kein Proxy-Pool, keine Wartung von IP-Blockaden - nur eine HTTP-Anfrage:
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"])Eine fehlgeschlagene Anfrage liefert ein Fehlerobjekt zurück, statt eine bibliotheksspezifische Exception zu werfen - dieselbe Fehlerbehandlung funktioniert also bei jedem Endpoint.
{ "success": false, "code": "...", "message": "..." }Mehr als ein Video abrufen
Über eine Liste von Video-IDs zu iterieren funktioniert genauso - achte nur auf das Requests-pro-Minute-Limit deines Plans. Der Rate-Limit-Guide erklärt Backoff- und Retry-Logik.
Beide Ansätze liefern dieselbe Information - der Unterschied ist, wer die Infrastruktur am Laufen hält. Vollständige Preise ansehen (100 kostenlose Credits, keine Kreditkarte) oder die API-Dokumentation für jeden Endpoint lesen.
Python-YouTube-Transkript-FAQ
Welchen Ansatz sollte ich verwenden?
youtube-transcript-api für ein schnelles lokales Skript oder einen Prototyp. Eine gehostete API, sobald du in Produktion deployst und Proxy-/IP-Blockade-Workarounds nicht selbst pflegen willst.
Braucht die gehostete API die youtube-transcript-api-Bibliothek?
Nein - es ist eine ganz normale REST-API. Rufe sie mit jedem HTTP-Client auf (requests, httpx, sogar curl); keine Python-spezifische Abhängigkeit nötig.
Kann ich Zeitstempel pro Zeile bekommen, nicht nur den vollständigen Text?
Die Open-Source-Bibliothek liefert Start/Dauer pro Snippet direkt zurück. Der Transkript-Endpoint unserer gehosteten API liefert derzeit das vollständige Transkript als reinen Text plus Wortanzahl, keine Zeitstempel pro Segment - falls dein Anwendungsfall genau das über die API braucht, ist die Open-Source-Bibliothek heute die bessere Wahl.
Was passiert, wenn ein Video kein Transkript hat?
Beide Ansätze liefern einen spezifischen Fehler statt eines leeren Strings - die Diagnose-Checkliste erklärt, was jeder Fehlercode bedeutet.
Verwandte Themen
- YouTube API Quota Exceeded: Causes and Fixes
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- YouTube Transcripts in n8n: HTTP Request Workflow Guide
- Migrating from Supadata: A Field Guide
- Migrating from TranscriptAPI.com: A Field Guide
- Build an AI YouTube Video Summarizer with LangChain and Next.js
- GetYouTubeTranscript vs. TranscriptAPI
- GetYouTubeTranscript vs. youtubetotranscript.com
- GetYouTubeTranscript vs. youtube-transcript.io
- GetYouTubeTranscript vs NoteGPT