Blog

Comment obtenir la transcription d'une vidéo YouTube par programmation (guide 2026)

3 août 2026· 4 min de lecture tutorielapi

Les transcriptions sont parmi les données les plus utiles de YouTube, mais aussi les plus pénibles à obtenir. Vous en avez besoin pour les sous-titres, pour alimenter un LLM, pour le SEO, pour l'accessibilité, ou pour construire une fonction de recherche sur le contenu vidéo. Quelle que soit votre raison, il vous faut un moyen fiable de transformer une URL de vidéo en texte brut.

Ce guide montre trois façons de le faire, d'une commande one-liner à un appel digne de la production, toutes contre une seule API HTTP.

Pourquoi il n'existe pas de moyen « officiel »

YouTube ne propose pas d'API de transcription publique et documentée pour les développeurs. Les transcriptions que vous voyez sous une vidéo vivent derrière des endpoints non documentés. C'est pourquoi tous les outils de cet espace, y compris les bibliothèques open-source comme youtube_transcript_api et les téléchargeurs comme yt-dlp, contournent techniquement les internes de YouTube.

Ça fonctionne… jusqu'au jour où ça ne fonctionne plus : YouTube bloque agressivement les IP de datacenter, change ses endpoints et ajoute des contrôles anti-bot. Si vous construisez quelque chose de sérieux, vous ne voulez pas être celui qui mène ce combat chaque semaine.

Les trois options

1. La bibliothèque youtube_transcript_api (Python). Idéale pour des scripts ponctuels. Mais elle casse dès que YouTube change quoi que ce soit, elle est réservée à Python, et vous êtes seul face aux blocages d'IP.

2. yt-dlp. Un couteau suisse pour télécharger. L'extraction de transcription est une fonctionnalité secondaire, et il embarque beaucoup de mécanique (et de dépendances) pour ce qui est, au fond, un simple appel API.

3. Une API de transcription hébergée. Vous envoyez une URL de vidéo, vous recevez du JSON. La mise en cache, la rotation d'IP et les contre-mesures anti-bot de YouTube sont le problème de quelqu'un d'autre. C'est ce que le reste de ce guide utilise.

L'endpoint

Le reste de ce guide utilise TranscribeMaxx, une API hébergée. Un seul endpoint, GET /api/v1/transcript, renvoie la transcription complète en JSON, avec ou sans horodatages, ainsi que les métadonnées comme le titre et la durée de la vidéo.

C'est gratuit pour commencer : récupérez une clé en un clic sur la page d'accueil (sans inscription), ou lisez la documentation de l'API.

curl : le moyen le plus rapide de tester

# transcription simple, en JSON (par défaut)
curl "https://transcribemaxx.com/api/v1/transcript?video_url=jNQXAC9IVRw" \
  -H "Authorization: Bearer tmx_VOTRE_CLE"

# texte brut au lieu de JSON
curl "https://transcribemaxx.com/api/v1/transcript?video_url=jNQXAC9IVRw&format=text" \
  -H "Authorization: Bearer tmx_VOTRE_CLE"

# avec horodatages + métadonnées
curl "https://transcribemaxx.com/api/v1/transcript?video_url=jNQXAC9IVRw&include_timestamp=true&send_metadata=true" \
  -H "Authorization: Bearer tmx_VOTRE_CLE"

La réponse JSON ressemble à ceci :

{
  "video_id": "jNQXAC9IVRw",
  "language": "en",
  "transcript": [
    { "text": "All right, so...", "start": 0, "duration": 3.2 },
    { "text": "...", "start": 3.2, "duration": 4.1 }
  ],
  "length_seconds": 19,
  "lengthText": "0:19"
}

Node.js (sans dépendances)

Node 18+ inclut fetch, donc un appel de transcription complet tient en une quinzaine de lignes :

const res = await fetch(
  "https://transcribemaxx.com/api/v1/transcript?video_url=jNQXAC9IVRw",
  { headers: { Authorization: "Bearer tmx_VOTRE_CLE" } }
);
const data = await res.json();

const fullText = data.transcript.map((s) => s.text).join(" ");
console.log(fullText);

Python

import requests

res = requests.get(
    "https://transcribemaxx.com/api/v1/transcript",
    params={"video_url": "jNQXAC9IVRw"},
    headers={"Authorization": "Bearer tmx_VOTRE_CLE"},
)
data = res.json()
full_text = " ".join(seg["text"] for seg in data["transcript"])
print(full_text)

Horodatages et langues

Passez include_timestamp=true et chaque segment arrive avec son temps de début start et sa duration, pratique pour construire un lecteur avec légendes ou pour sauter à des sections.

La sélection de la langue est une liste de priorités : language=fr,en essaie le français d'abord, puis retombe sur l'anglais. Les légendes automatiques fonctionnent aussi : l'API accepte les codes asr-* (par exemple asr-es pour les sous-titres automatiques espagnols), pour transcrire même les vidéos sans sous-titres manuels.

Un détail qui compte : le cache

Récupérer une transcription depuis YouTube coûte un aller-retour d'environ 10 secondes via un proxy. Une bonne API met en cache de façon agressive : chez TranscribeMaxx, les hits en cache reviennent en 20 millisecondes environ (500 fois plus vite que le chemin sans cache), et les résultats en cache ne consomment pas de quota lors des appels répétés.

Tarifs

Les formules commencent à 1 $/mois pour 300 transcriptions (facturation annuelle, 12 $/an), jusqu'à 2 000/mois avec la formule pro. Il existe aussi une offre gratuite : 30 transcriptions à vie par IP. Comparez les formules sur la page des tarifs.

Résumé

Vous voulez comparer les rares options de cet espace ? Lisez notre comparatif des API de transcription YouTube.

Essayez par vous-même : c'est gratuit pour commencer

Obtenez votre clé API en un clic et transcrivez votre première vidéo en quelques secondes. Aucune inscription requise pour la clé gratuite.

← Tous les articles