Volver al blogIntegraciones

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

Respuesta rápida

Instala youtube-transcript-api para un script local rápido, o llama a una API REST alojada si no quieres lidiar con bloqueos de IP y problemas de PoToken al desplegar. Ambas opciones están cubiertas abajo con código funcional.
01

Instala la librería de código abierto

youtube-transcript-api es un paquete de Python bien mantenido que obtiene los datos de subtítulos de YouTube directamente - sin clave de API, sin cuota de la YouTube Data API.

pip install youtube-transcript-api

Obtén una transcripción con un ID de video:

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

Dónde falla esto al desplegarlo

Esto funciona de forma fiable en una laptop. Al desplegarlo en un servidor en la nube, puede toparse con fallos reales y bien documentados - bloqueo de IP, PoTokenRequired, y un error de 'subtítulos deshabilitados' que no siempre es lo que parece. Consulta la lista de diagnóstico completa para las causas y soluciones exactas.

03

Consigue una clave de API (si prefieres no auto-alojar)

Obtén una clave gratis en el panel - 100 créditos gratis, sin tarjeta.

pip install requests
04

Llama a la API alojada desde Python

Sin pool de proxies, sin mantenimiento de bloqueos de IP - solo una petición 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"])

Una petición fallida devuelve un objeto de error en vez de lanzar una excepción específica de una librería, así que el mismo manejo de errores funciona en todos los endpoints.

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

Obtener más de un video

Iterar sobre una lista de IDs de video funciona igual - solo vigila el límite de peticiones por minuto de tu plan. Consulta la guía de límites de velocidad para la lógica de reintento y espera.

Ambos enfoques devuelven la misma información - la diferencia es quién mantiene la infraestructura que hace que siga funcionando. Ve el precio completo (100 créditos gratis, sin tarjeta) o lee la documentación de la API para cada endpoint.

Preguntas frecuentes de transcripciones de YouTube en Python

Q01

¿Qué enfoque debería usar?

youtube-transcript-api para un script local rápido o un prototipo. Una API alojada cuando estés desplegando a producción y no quieras mantener tú mismo los workarounds de proxy/bloqueo de IP.

Q02

¿La API alojada requiere la librería youtube-transcript-api?

No - es una API REST normal. Llámala con cualquier cliente HTTP (requests, httpx, incluso curl); no se necesita ninguna dependencia específica de Python.

Q03

¿Puedo obtener marcas de tiempo por línea, no solo el texto completo?

La librería de código abierto devuelve directamente el inicio/duración de cada fragmento. El endpoint de transcripción de nuestra API alojada actualmente devuelve la transcripción completa como texto plano más un conteo de palabras, no marcas de tiempo por segmento - si tu caso de uso necesita esa granularidad específicamente desde la API, la librería de código abierto es la mejor opción hoy.

Q04

¿Qué pasa si un video no tiene transcripción?

Ambos enfoques devuelven un error específico en vez de una cadena vacía - consulta la lista de diagnóstico para saber qué significa cada código de error.

Relacionado