API-Dokumentation
Eine REST-API für YouTube-Transkripte, Suche und Metadaten. Holen Sie sich einen API-Schlüssel über Ihr Dashboard — 100 kostenlose Credits, keine Karte erforderlich.
Authentifizierung
Übergeben Sie Ihren API-Schlüssel als Bearer-Token oder über x-api-key:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...Basis-URL
https://getyoutubetranscript.com/api/v1Credits & Pläne
| Plan | Preis | Credits/Monat | Aufladepreis | Rate-Limit |
|---|---|---|---|---|
| Kostenlos | 0 $/Monat | 100 (einmalig) | — | 60 Anfragen/Min. |
| Monatlich | 5 $/Monat | 1.000 | 2,50 $ / 1.000 | 200 Anfragen/Min. |
| Jährlich | 4,50 $/Monat (54 $/Jahr) | 1.000 | 1,50 $ / 1.000 | 300 Anfragen/Min. |
| Starter | 19 $/Monat | 7.500 | 1,50 $ / 1.000 | 300 Anfragen/Min. |
| Pro | 49 $/Monat | 25.000 | 1,50 $ / 1.000 | 400 Anfragen/Min. |
| Scale | 99 $/Monat | 60.000 | 1,50 $ / 1.000 | 600 Anfragen/Min. |
1 Credit = 1 erfolgreiche Anfrage. Fehlgeschlagene Anfragen werden nie berechnet. Beispiel: 10 Transkript-Anfragen, bei denen 2 Videos keine Untertitel haben, kosten 8 Credits; ein erneuter Versuch bei einem fehlgeschlagenen Video kostet nichts, bis er gelingt. Aufgeladene Zusatz-Credits verfallen 30 Tage nach dem Kauf oder am Ende des aktuellen Abrechnungszeitraums, je nachdem, was später eintritt, und erfordern ein aktives Abonnement, um genutzt werden zu können.
Endpunkte
/transcript1 CreditRuft das Transkript für ein YouTube-Video ab, inklusive Metadaten (Titel, Kanal, Thumbnail). Liefert außerdem language_code vs. requested_language, caption_type (manual oder auto, null falls unbekannt) sowie cached / fetched_at.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
v | Ja | Video-ID oder vollständige YouTube-URL |
language | Nein | Sprachcode (Standard: en) |
timestamps | Nein | Auf true setzen, um Zeitstempel pro Zeile zu erhalten (segments: start, duration, text in Sekunden). Standardmäßig aus. |
translate | Nein | Sprachcode für eine maschinelle Übersetzung, z. B. es oder zh-CN. Die Zeitstempel bleiben erhalten; die Antwort enthält translated_to. Weiterhin 1 Credit. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"video_id": "jNQXAC9IVRw",
"language_code": "en",
"requested_language": "en",
"caption_type": "manual",
"title": "Me at the zoo",
"author_name": "jawed",
"author_url": "https://www.youtube.com/channel/UC4Qob...",
"thumbnail_url": "https://...",
"transcript": "All right, so here we are...",
"word_count": 39,
"cached": true,
"fetched_at": "2026-09-20T03:10:58.938Z"
}
}/transcript/languages1 CreditListet die Untertitelsprachen eines Videos (manuell und automatisch erzeugt), bevor du eine abrufst. default_language_code ist das, was /transcript ohne Sprachangabe liefert; ein Video ohne Untertitel gibt eine leere Liste zurück.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
v | Ja | Video-ID oder vollständige YouTube-URL |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"video_id": "kJQP7kiw5Fk",
"default_language_code": "en",
"languages": [
{ "language_code": "en", "name": "English - en", "caption_type": "manual" },
{ "language_code": "es", "name": "Spanish", "caption_type": "manual" }
]
}
}/batch1 Credit / erfolgreiches VideoBis zu 100 Videos in einem Aufruf einreihen. Gibt sofort eine batch_id zurück und lädt die Transkripte im Hintergrund. Frage GET /batch ab oder übergib webhook_url, um nach Abschluss einen signierten POST (Header X-GYT-Signature) zu erhalten. Fehlgeschlagene Videos werden nie berechnet.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
videos | Ja | Array aus Video-IDs oder URLs (1-100). Duplikate werden nur einmal abgerufen. |
language | Nein | Sprachcode für alle Videos (Standard: en) |
timestamps | Nein | true, um zeilenweise Segmente in die Ergebnisse aufzunehmen |
webhook_url | Nein | Öffentliche https-URL, die nach Abschluss benachrichtigt wird |
Idempotency-Key | Nein | Header. Wiederhole die Anfrage gefahrlos: derselbe Schlüssel liefert den ursprünglichen Batch. |
Anfrage
curl -X POST "https://getyoutubetranscript.com/api/v1/batch" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"videos": ["jNQXAC9IVRw", "https://youtu.be/dQw4w9WgXcQ"],
"webhook_url": "https://example.com/hooks/transcripts"
}'Antwort
{
"success": true,
"data": {
"batch_id": "324eb615-e4d5-4b3c-b8e7-04235671066b",
"status": "queued",
"total": 2,
"succeeded": 0,
"failed": 0,
"pending": 2,
"results_url": "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-...",
"webhook_secret": "whsec_..."
}
}/batchKostenlosStatus, Zähler und eine Seite mit Ergebnissen in Einreichungsreihenfolge. Erfolgreiche Einträge haben dieselben Felder wie /transcript; fehlgeschlagene enthalten einen error_code.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
id | Ja | Die batch_id aus POST /batch |
offset | Nein | Zu überspringende Einträge (Standard: 0) |
limit | Nein | Einträge pro Seite, 1-50 (Standard: 20) |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"batch_id": "324eb615-...",
"status": "completed",
"total": 2,
"succeeded": 1,
"failed": 1,
"credits_charged": 1,
"items": [
{ "position": 0, "status": "succeeded", "charged": true, "video_id": "jNQXAC9IVRw", "caption_type": "manual", "transcript": "All right, so here we are...", ... },
{ "position": 1, "status": "failed", "charged": false, "video_id": "dQw4w9WgXcQ", "error_code": "TRANSCRIPT_DISABLED" }
],
"next_offset": null
}
}/search1 Credit / SeiteDurchsucht YouTube-Videos mit Filtern und Paginierung.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
q | Ja | Suchbegriff (mind. 2 Zeichen) |
country | Nein | 2-Buchstaben-Ländercode (Standard: us) |
language | Nein | Sprachcode (Standard: en) |
page_token | Nein | continuation_token der vorherigen Antwort, um die nächste Seite abzurufen |
limit | Nein | Max. Ergebnisse (Standard 20, max. 50) |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
}
}/resolve1 CreditLöst ein Kanal-Handle, eine URL oder einen Benutzernamen zur zugehörigen echten Kanal-ID auf. Eine syntaktische Eingabe (bereits eine Kanal-ID oder eine URL, die eine enthält) wird sofort ohne Netzwerkaufruf aufgelöst; ein reines Handle löst eine echte Abfrage aus.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
handle | Ja | Kanal-ID, URL oder @Handle |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "lookup"
}
}/channel/latest1 CreditKanaldetails (Titel, Abonnenten, Beschreibung, Avatar) plus die neuesten Videos vom Startseiten-Tab des Kanals. Für alle Uploads /channel/videos verwenden.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
"about": { "description": "...", "links": [] },
"videos_sections": [ ... ]
}
}/channel/videos1 Credit / SeiteAlle hochgeladenen Videos eines Kanals, neueste zuerst, mit Seitenumbruch.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
tab | Nein | videos (Standard), shorts oder streams (der Live-Tab). Nur erste Seite. |
sort | Nein | latest (Standard), popular oder oldest. Nur erste Seite. |
continuation | Nein | continuation_token aus der vorherigen Antwort, um die nächste Seite abzurufen (statt der anderen Parameter). Läuft nach 24 Stunden ab. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd&tab=shorts&sort=popular" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "views": "6.2M", "published_time": "1d ago", "length": "10:47" } ],
"has_more": true,
"continuation_token": "c_pqHR9v13sqaqxlcKhA4MnA"
}
}/channel/playlists1 Credit / SeiteDie Playlists eines Kanals (Tab „Playlists“), seitenweise. Mit einer Playlist-ID lassen sich über /playlist ihre Videos auflisten.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
continuation | Nein | continuation_token aus der vorherigen Antwort, um die nächste Seite abzurufen (statt der anderen Parameter). Läuft nach 24 Stunden ab. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/playlists?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"playlists": [ { "position": 1, "id": "PL...", "title": "...", "link": "https://www.youtube.com/playlist?list=PL...", "video_count": 5 } ],
"has_more": false,
"continuation_token": null
}
}/channel/posts1 Credit / SeiteDie Community-Beiträge eines Kanals (Tab „Beiträge“), seitenweise: Text, Links, Likes, Kommentare und ein angehängtes Bild.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
continuation | Nein | continuation_token aus der vorherigen Antwort, um die nächste Seite abzurufen (statt der anderen Parameter). Läuft nach 24 Stunden ab. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/posts?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"posts": [ { "position": 1, "id": "Ugkx...", "url": "https://www.youtube.com/post/Ugkx...", "text": "...", "published_time": "2 years ago", "likes": "12K", "comments": "1K" } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/channel/search1 Credit / SeiteSuche in den Videos eines Kanals, mit Seitenumbruch.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
q | Ja | Suchbegriff (mind. 2 Zeichen) |
continuation | Nein | continuation_token aus der vorherigen Antwort, um die nächste Seite abzurufen (statt der anderen Parameter). Läuft nach 24 Stunden ab. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "published_time": "3w ago", "length": "17:14", "channel": { "name": "Marques Brownlee" } } ],
"has_more": true,
"continuation_token": "c_pnm10M6orzLgOTVWJk2oww"
}
}/playlist1 Credit / SeiteAlle Videos einer Playlist, mit Seitenumbruch. Auf der letzten Seite ist continuation_token null.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
list | Ja | Playlist-ID oder URL |
continuation | Nein | continuation_token aus der vorherigen Antwort, um die nächste Seite abzurufen (statt der anderen Parameter). Läuft nach 24 Stunden ab. |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/video/related1 CreditDie Videos, die YouTube neben einem Video vorschlägt, mit Titel, ID, Kanal, Aufrufen, Alter und Länge.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
v | Ja | Video-ID oder vollständige YouTube-URL |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/video/related?v=dQw4w9WgXcQ" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"video_id": "dQw4w9WgXcQ",
"related": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." }, "views": "410K", "published_time": "11y ago", "length": "1:01:35" } ]
}
}/video/dislikes1 CreditGeschätzte Likes und Dislikes eines Videos. YouTube veröffentlicht keine Dislikes mehr, daher sind die Werte Schätzungen (estimated ist immer true).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
v | Ja | Video-ID oder vollständige YouTube-URL |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/video/dislikes?v=dQw4w9WgXcQ" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"video_id": "dQw4w9WgXcQ",
"likes": 19497714,
"dislikes": 521713,
"rating": 4.9,
"view_count": 1830715799,
"estimated": true
}
}/channel/banner1 CreditDas ungeschnittene Banner eines Kanals, alle von YouTube ausgelieferten Zuschnittgrößen und sein Profilbild. has_banner ist false, wenn der Kanal keins hat.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
channel | Ja | Kanal-@handle, URL oder Kanal-ID |
Anfrage
curl "https://getyoutubetranscript.com/api/v1/channel/banner?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"avatar": "https://yt3.googleusercontent.com/...",
"has_banner": true,
"banner": { "original": "https://...=s0", "largest": "https://...=w2560", "sizes": [ { "url": "https://...", "width": 1060, "height": 175 } ] }
}
}/creditsKostenlosPrüfe das verbleibende Credit-Guthaben für diesen Schlüssel, bevor du es ausgibst - dieselben Daten wie das MCP-Tool get_credits liefert.
| Parameter | Erforderlich | Beschreibung |
|---|
Anfrage
curl "https://getyoutubetranscript.com/api/v1/credits" \
-H "Authorization: Bearer sk_live_..."Antwort
{
"success": true,
"data": {
"plan_credits_left": 87,
"topup_credits_left": 0,
"plan": "monthly",
"rate_limit_per_minute": 200
}
}Fehler
Fehler liefern zusätzlich zum HTTP-Status einen JSON-Body mit einem stabilen code-Feld zur Fallunterscheidung:
| Status | Code | Bedeutung |
|---|---|---|
| 400 | BAD_REQUEST | Fehlender oder ungültiger Parameter |
| 400 | CURSOR_EXPIRED | Seiten-Cursor abgelaufen (nach 24 Stunden) – auf der ersten Seite neu beginnen |
| 401 | MISSING_API_KEY / INVALID_API_KEY | Kein Schlüssel angegeben, oder Schlüssel ist ungültig/widerrufen |
| 402 | PAYMENT_REQUIRED | Keine Credits mehr – Aufladung kaufen oder upgraden |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | Video oder Ressource nicht gefunden |
| 429 | RATE_LIMITED | Zu viele Anfragen für Ihre Plan-Stufe |
| 503 | UPSTREAM_UNAVAILABLE | Vorübergehendes Upstream-Problem – erneuter Versuch möglich |
| 504 | UPSTREAM_TIMEOUT | Upstream hat länger als 25 Sekunden gebraucht – nicht berechnet, erneuter Versuch möglich |
Diese API mit einem KI-Tool nutzen
Möchten Sie lieber Claude (oder ein anderes KI-Coding-Tool) diese API für Sie aufrufen lassen, statt Anfragen von Hand zu schreiben? Laden Sie den YouTube Transcript Skill herunter – einen fertigen Claude Skill, der ihm beibringt, Transkripte abzurufen, zu suchen und mehr.
In Zapier nutzen
Ganz ohne Code: Unsere Zapier-App holt ein Transkript, durchsucht YouTube oder listet die Videos eines Kanals in jedem Zap. Verbinde sie mit demselben API-Schlüssel; jede Aktion kostet dieselben Credits wie der API-Aufruf.























































