Retour au blogIntégrations

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

Réponse rapide

Installez youtube-transcript-api pour un script local rapide, ou appelez une API REST hébergée si vous ne voulez pas gérer les blocages d'IP et les problèmes de PoToken une fois déployé. Les deux sont couverts ci-dessous avec du code fonctionnel.
01

Installer la bibliothèque open-source

youtube-transcript-api est un package Python bien maintenu qui récupère directement les données de sous-titres de YouTube - pas de clé API, pas de quota YouTube Data API.

pip install youtube-transcript-api

Récupérez une transcription avec un ID de vidéo :

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

Où cela casse une fois déployé

Cela fonctionne parfaitement sur un ordinateur portable. Déployé sur un serveur cloud, cela peut rencontrer de vrais échecs bien documentés - blocage d'IP, PoTokenRequired, et une erreur de 'sous-titres désactivés' qui n'est pas toujours ce qu'elle semble être. Consultez la checklist de diagnostic complète pour les causes et solutions exactes.

03

Obtenez une clé API (si vous préférez ne pas auto-héberger)

Récupérez une clé gratuite depuis le tableau de bord - 100 crédits gratuits, sans carte.

pip install requests
04

Appeler l'API hébergée depuis Python

Pas de pool de proxy, pas de maintenance de blocage d'IP - juste une requête HTTP :

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"])

Une requête échouée renvoie un objet d'erreur au lieu de lever une exception spécifique à une bibliothèque, donc la même gestion d'erreurs fonctionne sur tous les endpoints.

{ "success": false, "code": "...", "message": "..." }
05

Récupérer plus d'une vidéo

Boucler sur une liste d'IDs de vidéos fonctionne de la même façon - surveillez juste la limite de requêtes par minute de votre offre. Consultez le guide des limites de débit pour la logique de nouvelle tentative et d'attente.

Les deux approches renvoient la même information - la différence, c'est qui maintient l'infrastructure qui continue de fonctionner. Voir les tarifs complets (100 crédits gratuits, sans carte) ou lire la documentation de l'API pour chaque endpoint.

FAQ transcriptions YouTube en Python

Q01

Quelle approche dois-je utiliser ?

youtube-transcript-api pour un script local rapide ou un prototype. Une API hébergée dès que vous déployez en production et ne voulez pas maintenir vous-même les contournements de proxy/blocage d'IP.

Q02

L'API hébergée nécessite-t-elle la bibliothèque youtube-transcript-api ?

Non - c'est une API REST classique. Appelez-la avec n'importe quel client HTTP (requests, httpx, même curl) ; aucune dépendance spécifique à Python n'est nécessaire.

Q03

Puis-je obtenir des horodatages par ligne, pas seulement le texte complet ?

La bibliothèque open-source renvoie directement le début/la durée de chaque extrait. L'endpoint de transcription de notre API hébergée renvoie actuellement la transcription complète en texte brut plus un nombre de mots, pas d'horodatage par segment - si votre cas d'usage a besoin de cette granularité spécifiquement via l'API, la bibliothèque open-source est le meilleur choix aujourd'hui.

Q04

Que se passe-t-il si une vidéo n'a pas de transcription ?

Les deux approches renvoient une erreur spécifique plutôt qu'une chaîne vide - consultez la checklist de diagnostic pour savoir ce que signifie chaque code d'erreur.

À lire aussi