Zurück zum BlogIntegrationen

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

Installiere youtube-transcript-api für ein schnelles lokales Skript, oder rufe eine gehostete REST-API auf, wenn du dich nach dem Deployment nicht mit IP-Blockaden und PoToken-Problemen herumschlagen willst. Beides wird unten mit funktionierendem Code behandelt.
01

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-api

Ein 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)
02

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.

03

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 requests
04

Die 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": "..." }
05

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

Q01

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.

Q02

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.

Q03

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.

Q04

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