Obtenir la transcription YouTube avec une API (curl, Python, JavaScript)
Récupère la transcription de n'importe quelle vidéo YouTube publique avec une seule requête HTTP. Exemples curl, Python et JavaScript, formats, codes d'erreur et coûts.

Pour obtenir la transcription YouTube avec une API, envoie une requête HTTP avec l'URL ou l'identifiant de la vidéo et une clé d'API, puis lis la transcription dans la réponse. Ce guide montre la requête en curl, Python et JavaScript avec l'API de transcription sum.video, puis aborde les formats, les erreurs et les coûts.
Ce que renvoie l'API
Le point d'accès renvoie les sous-titres existants d'une vidéo YouTube publique, écrits par le créateur ou générés automatiquement par YouTube. Il ne transcrit pas l'audio. Si une vidéo n'a pas de sous-titres, tu obtiens une erreur plutôt qu'une supposition (plus bas).
L'essentiel :
- Point d'accès :
POST https://sum.video/api/v1/transcript(GETfonctionne aussi) - Authentification : ta clé dans l'en-tête
X-API-Key, ouAuthorization: Bearer <key> - Entrée :
urlouvideo_id langfacultatif (enpar défaut)formatfacultatif :json,textousrt
La réponse indique aussi la vraie langue de la piste de sous-titres et si elle est générée automatiquement, pour que tu saches à quelle qualité t'attendre.
Étape 1 : Crée une clé d'API
Connecte-toi et crée une clé dans le tableau de bord de l'API (/dashboard/api sur sum.video). Tu peux avoir jusqu'à 5 clés actives, pratique pour séparer une clé de test d'une clé de production. Ta première clé est fournie avec 10 crédits gratuits, de quoi faire 5 transcriptions, donc tu peux tout tester ci-dessous sans frais.
Étape 2 : Envoie ta première requête
curl
curl -X POST https://sum.video/api/v1/transcript \
-H "X-API-Key: $SUMVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "lang": "en", "format": "text"}'
Comme GET fonctionne aussi, tu peux tester depuis un script qui ne fait que construire des URL. Préfère l'en-tête pour la clé, afin qu'elle ne finisse pas dans les journaux.
Python
import os
import requests
resp = requests.post(
"https://sum.video/api/v1/transcript",
headers={"X-API-Key": os.environ["SUMVIDEO_API_KEY"]},
json={"video_id": "dQw4w9WgXcQ", "lang": "en", "format": "text"},
timeout=30,
)
if resp.status_code == 404:
print("No captions for this video")
else:
resp.raise_for_status()
print(resp.text)
JavaScript (Node 18+ ou navigateur)
const resp = await fetch("https://sum.video/api/v1/transcript", {
method: "POST",
headers: {
"X-API-Key": process.env.SUMVIDEO_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
video_id: "dQw4w9WgXcQ",
lang: "en",
format: "text",
}),
});
if (resp.status === 404) {
console.log("No captions for this video");
} else if (!resp.ok) {
throw new Error(`Request failed: ${resp.status}`);
} else {
console.log(await resp.text());
}
Garde la clé sur un serveur. Une clé placée dans le code du navigateur peut être copiée par quiconque ouvre les outils de développement.
Étape 3 : Choisis le bon format
| Format | Ce que tu obtiens | Idéal pour |
|---|---|---|
json |
Des segments, chacun avec offset et duration en secondes |
Horodatages, liens vers un instant précis, découpage par durée |
text |
Transcription en texte brut | Prompts, index de recherche, résumés |
srt |
Contenu d'un fichier de sous-titres | Logiciels de montage, outils de sous-titrage |
Si tu veux créer des liens vers un moment de la vidéo, utilise json et construis le lien à partir de l'offset du segment. Pour alimenter un LLM, text est plus léger et plus simple. Si tu veux plus tard chercher à la main dans une transcription, vois comment chercher dans la transcription d'une vidéo YouTube.
Étape 4 : Choisis une langue
lang vaut en par défaut. Mets la langue souhaitée, par exemple de ou es. La réponse indique la langue de la piste réellement renvoyée, vérifie-la donc au lieu de la supposer. Une vidéo n'a souvent qu'une seule piste de sous-titres, et l'API renvoie de vrais sous-titres, elle ne les traduit donc pas pour toi.
Étape 5 : Gère les erreurs
Prévois ces cas dès le premier jour :
404 no_transcript: la vidéo n'a pas de sous-titres, ou c'est un direct, une vidéo privée ou supprimée. Il n'y a rien à retenter. Ignore-la, ou demande une autre vidéo à l'utilisateur.402 budget_exceeded: tu as atteint la limite mensuelle de crédits que tu as configurée. Voir la section suivante.- Limite de débit : chaque clé autorise 60 requêtes par minute. Espace les traitements par lots et ralentis quand on te limite.
- Échecs de notre côté : réessaie après un court délai. Ils ne coûtent rien.
Une simple boucle qui réessaie sur les erreurs serveur et ignore les 404 couvre la plupart des besoins en production.
Ce que ça coûte
Chaque transcription coûte 2 crédits. Les requêtes qui ne renvoient pas de transcription, ou qui échouent du côté de sum.video, ne coûtent rien, donc un 404 ne vide jamais ton solde. Tu peux vérifier ton solde avec GET /api/v1/credits.
Les crédits se vendent en packs uniques qui n'expirent jamais :
| Pack | Prix | Par transcription |
|---|---|---|
| 100 crédits | $4.49 | $0.090 |
| 500 crédits | $13.99 | $0.056 |
| 2,000 crédits | $37.99 | $0.038 |
| 5,000 crédits | $74.99 | $0.030 |
Les abonnés Pro reçoivent aussi 100 crédits bonus chaque mois. Pour une charge plus lourde, comme l'ingestion d'une chaîne entière, lis le scénario transcriptions YouTube pour une application RAG à grande échelle, qui traite de la recharge automatique et des budgets. Voir aussi les tarifs.
Limites à connaître avant de construire
- Seules les vidéos avec sous-titres fonctionnent. C'est la principale raison du
404 no_transcript. - Les sous-titres générés automatiquement peuvent contenir des erreurs, surtout avec les noms, les accents et les termes techniques.
- L'API ne renvoie que la transcription. Elle ne résume pas. Si tu veux des résumés, des horodatages et un chat par-dessus une transcription, le résumeur YouTube s'en charge, et l'outil de transcription est la version sans code pour une seule vidéo.
- L'API officielle YouTube Data n'est pas un substitut ici. Sa méthode de téléchargement des sous-titres exige l'autorisation de modifier la vidéo, elle est donc destinée à tes propres vidéos (documentation Google).
Sources
Questions fréquentes
Puis-je obtenir une transcription YouTube sans l'API officielle YouTube Data ?
Oui. L'API de transcription sum.video prend l'URL ou l'identifiant d'une vidéo et renvoie les sous-titres existants, sans projet Google Cloud. La méthode de téléchargement des sous-titres de Google exige l'autorisation de modifier la vidéo, elle ne convient donc qu'à tes propres vidéos.
L'API transcrit-elle les vidéos sans sous-titres ?
Non. Elle renvoie les sous-titres YouTube existants, manuels ou générés automatiquement. Les vidéos sans sous-titres, les directs, les vidéos privées et supprimées renvoient 404 no_transcript, et cette requête ne coûte rien.
Combien coûte une transcription ?
2 crédits par transcription. Les packs vont de 100 crédits pour $4.49 ($0.090 par transcription) à 5,000 crédits pour $74.99 ($0.030 par transcription), et les crédits n'expirent jamais.
Quels formats de sortie sont disponibles ?
json (segments avec offset et duration en secondes), text et srt. Renseigne le champ format dans la requête.
Comment l'essayer gratuitement ?
Ta première clé d'API est fournie avec 10 crédits gratuits, soit 5 transcriptions. Les abonnés Pro reçoivent en plus 100 crédits bonus chaque mois.
À lire aussi
Les meilleures API de transcription YouTube comparées : sum.video, Supadata, Transcribr et la bibliothèque PythonQuatre façons d'obtenir des transcriptions YouTube dans du code, comparées sur le prix, les limites et la fiabilité : sum.video, Supadata, Transcribr et youtube-transcript-api.
Transcriptions YouTube pour une application RAG à grande échelle : crédits, recharge automatique et budgetsUn développeur ingère 10 000 vidéos YouTube dans une application RAG. Le coût, le calcul de la limite de débit, et comment la recharge automatique et les budgets rendent la dépense prévisible.
Construisez une base de connaissances personnelle à partir de vidéos YouTubeTransformez les vidéos YouTube à partir desquelles vous apprenez en une bibliothèque consultable de résumés et de points sauvegardés, avec un récapitulatif hebdomadaire, afin de retrouver une idée des mois plus tard.
Derniers articles
Les meilleures API de transcription YouTube comparées : sum.video, Supadata, Transcribr et la bibliothèque PythonQuatre façons d'obtenir des transcriptions YouTube dans du code, comparées sur le prix, les limites et la fiabilité : sum.video, Supadata, Transcribr et youtube-transcript-api.
Transcriptions YouTube pour une application RAG à grande échelle : crédits, recharge automatique et budgetsUn développeur ingère 10 000 vidéos YouTube dans une application RAG. Le coût, le calcul de la limite de débit, et comment la recharge automatique et les budgets rendent la dépense prévisible.
Construisez une base de connaissances personnelle à partir de vidéos YouTubeTransformez les vidéos YouTube à partir desquelles vous apprenez en une bibliothèque consultable de résumés et de points sauvegardés, avec un récapitulatif hebdomadaire, afin de retrouver une idée des mois plus tard.