Documentation API

Une API REST pour les transcriptions YouTube, la recherche et les métadonnées. Obtenez une clé API depuis votre tableau de bord — 100 crédits gratuits, sans carte requise.

Authentification

Transmettez votre clé API comme jeton porteur (bearer token), ou via x-api-key :

Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...

URL de base

https://getyoutubetranscript.com/api/v1

Crédits et offres

OffrePrixCrédits/moisPrix du complémentLimite de débit
Gratuit0 $/mois100 (unique)—60 req/min
Mensuel5 $/mois1 0002,50 $ / 1 000200 req/min
Annuel4,50 $/mois (54 $/an)1 0001,50 $ / 1 000300 req/min
Starter19 $/mois7 5001,50 $ / 1 000300 req/min
Pro49 $/mois25 0001,50 $ / 1 000400 req/min
Scale99 $/mois60 0001,50 $ / 1 000600 req/min

1 crédit = 1 requête réussie. Les requêtes échouées ne sont jamais facturées. Exemple : 10 requêtes de transcription dont 2 vidéos sans sous-titres coûtent 8 crédits, et relancer une vidéo en échec ne coûte rien tant qu'elle n'aboutit pas. Les crédits complémentaires expirent 30 jours après l'achat ou à la fin de votre période de facturation en cours, selon la date la plus tardive, et nécessitent un abonnement actif pour être dépensés.

Points d'accès

GET/transcript1 crédit

Récupère la transcription d'une vidéo YouTube, avec ses métadonnées (titre, chaîne, miniature). Renvoie aussi language_code et requested_language, caption_type (manual ou auto, null si inconnu) ainsi que cached / fetched_at.

ParamètreObligatoireDescription
vOuiID de la vidéo ou URL YouTube complète
languageNonCode de langue (par défaut : en)
timestampsNonMettez true pour ajouter des horodatages par ligne (segments : start, duration, text en secondes). Désactivé par défaut.

Requête

curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "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"
  }
}
GET/transcript/languagesGratuit

Liste les langues de sous-titres d'une vidéo (manuelles et générées automatiquement) avant d'en récupérer une. default_language_code est ce que /transcript renvoie sans langue ; une vidéo sans sous-titres renvoie une liste vide.

ParamètreObligatoireDescription
vOuiID de la vidéo ou URL YouTube complète

Requête

curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "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" }
    ]
  }
}
POST/batch1 crédit / vidéo réussie

Mettez jusqu'à 100 vidéos en file en un seul appel. Renvoie immédiatement un batch_id et récupère les transcriptions en arrière-plan. Interrogez GET /batch ou passez webhook_url pour recevoir un POST signé (en-tête X-GYT-Signature) à la fin. Les vidéos en échec ne sont jamais facturées.

ParamètreObligatoireDescription
videosOuiTableau d'ID ou d'URL de vidéos (1-100). Les doublons ne sont récupérés qu'une fois.
languageNonCode de langue pour toutes les vidéos (par défaut : en)
timestampsNontrue pour inclure les segments ligne par ligne dans les résultats
webhook_urlNonURL https publique notifiée à la fin du lot
Idempotency-KeyNonEn-tête. Relancez la requête sans risque : la même clé renvoie le lot d'origine.

Requête

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"
      }'

Réponse

{
  "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_..."
  }
}
GET/batchGratuit

Statut du lot, compteurs et une page de résultats dans l'ordre d'envoi. Les éléments réussis ont les mêmes champs que /transcript ; les éléments en échec portent un error_code.

ParamètreObligatoireDescription
idOuiLe batch_id renvoyé par POST /batch
offsetNonÉléments à ignorer (par défaut : 0)
limitNonÉléments par page, 1-50 (par défaut : 20)

Requête

curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "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
  }
}
GET/search1 crédit / page

Recherche des vidéos YouTube avec filtres et pagination.

ParamètreObligatoireDescription
qOuiRequête de recherche (2 caractères minimum)
countryNonCode pays à 2 lettres (par défaut : us)
languageNonCode de langue (par défaut : en)
page_tokenNonLe continuation_token de la réponse précédente, pour récupérer la page suivante
limitNonNombre maximal de résultats (par défaut 20, max 50)

Requête

curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "success": true,
  "data": {
    "query": "lofi beats",
    "video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
    "continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
  }
}
GET/resolveGratuit

Résout un handle, une URL ou un nom d'utilisateur de chaîne vers son véritable ID de chaîne. Une entrée déjà syntaxique (déjà un ID de chaîne ou une URL en contenant un) est résolue instantanément sans appel réseau ; un simple handle déclenche une véritable recherche.

ParamètreObligatoireDescription
handleOuiID de chaîne, URL ou @handle

Requête

curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "success": true,
  "data": {
    "channel_id": "UCBJycsmduvYEL83R_U4JriQ",
    "title": "Marques Brownlee",
    "handle": "http://www.youtube.com/@mkbhd",
    "resolved_via": "scrape"
  }
}
GET/channel/latestGratuit

Informations sur la chaîne (titre, abonnés, description, avatar) et les dernières vidéos de l'onglet d'accueil. Pour tout l'historique des mises en ligne, utilisez /channel/videos.

ParamètreObligatoireDescription
channelOui@handle, URL ou ID de la chaîne

Requête

curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "success": true,
  "data": {
    "channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
    "about": { "description": "...", "links": [] },
    "videos_sections": [ ... ]
  }
}
GET/channel/videos1 crédit / page

Toutes les vidéos publiées par une chaîne, des plus récentes aux plus anciennes, paginées.

ParamètreObligatoireDescription
channelOui@handle, URL ou ID de la chaîne
continuationNoncontinuation_token de la réponse précédente, pour obtenir la page suivante (à utiliser à la place des autres paramètres). Expire après 24 heures.

Requête

curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "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"
  }
}
GET/channel/search1 crédit / page

Recherche dans les vidéos d'une chaîne, paginée.

ParamètreObligatoireDescription
channelOui@handle, URL ou ID de la chaîne
qOuiRequête de recherche (2 caractères minimum)
continuationNoncontinuation_token de la réponse précédente, pour obtenir la page suivante (à utiliser à la place des autres paramètres). Expire après 24 heures.

Requête

curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "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"
  }
}
GET/playlist1 crédit / page

Toutes les vidéos d'une playlist, paginées. continuation_token vaut null sur la dernière page.

ParamètreObligatoireDescription
listOuiID ou URL de la playlist
continuationNoncontinuation_token de la réponse précédente, pour obtenir la page suivante (à utiliser à la place des autres paramètres). Expire après 24 heures.

Requête

curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "success": true,
  "data": {
    "playlist_id": "PLxxx",
    "title": "...",
    "videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
    "has_more": true,
    "continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
  }
}
GET/creditsGratuit

Consultez le solde de crédits restant pour cette clé avant de le dépenser - les mêmes données que renvoie l'outil MCP get_credits.

ParamètreObligatoireDescription

Requête

curl "https://getyoutubetranscript.com/api/v1/credits" \
  -H "Authorization: Bearer sk_live_..."

Réponse

{
  "success": true,
  "data": {
    "plan_credits_left": 87,
    "topup_credits_left": 0,
    "plan": "monthly",
    "rate_limit_per_minute": 200
  }
}

Erreurs

Les erreurs renvoient un corps JSON avec un champ code stable pour vos branchements conditionnels, en plus du statut HTTP :

StatutCodeSignification
400BAD_REQUESTParamètre manquant ou invalide
400CURSOR_EXPIREDCurseur de page expiré (après 24 heures) – recommencez à la première page
401MISSING_API_KEY / INVALID_API_KEYAucune clé fournie, ou clé invalide/révoquée
402PAYMENT_REQUIREDPlus de crédits - achetez un complément ou passez à une offre supérieure
404VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUNDVidéo ou ressource introuvable
429RATE_LIMITEDTrop de requêtes pour votre offre
503UPSTREAM_UNAVAILABLEProblème temporaire en amont - nouvelle tentative sans risque
504UPSTREAM_TIMEOUTLe service a mis plus de 25 secondes – non facturé, vous pouvez réessayer

Utiliser cette API avec un outil IA

Vous préférez laisser Claude (ou un autre outil IA de codage) appeler cette API à votre place plutôt que d'écrire les requêtes à la main ? Téléchargez le skill YouTube Transcript - un Claude Skill prêt à l'emploi qui lui apprend à récupérer des transcriptions, effectuer des recherches, et plus encore.

L'utiliser dans Zapier

Sans code : notre app Zapier récupère une transcription, cherche sur YouTube ou liste les vidéos d'une chaîne dans n'importe quel Zap. Connectez-la avec la même clé API ; chaque action coûte les mêmes crédits que l'appel API.