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
Resposta rápida
Instale a biblioteca open-source
youtube-transcript-api é um pacote Python bem mantido que busca os dados de legenda do próprio YouTube diretamente - sem chave de API, sem cota da YouTube Data API.
pip install youtube-transcript-apiObtenha uma transcrição com um ID de vídeo:
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)Onde isso falha ao implantar
Isso funciona de forma confiável em um notebook. Ao implantar em um servidor na nuvem, pode encontrar falhas reais e bem documentadas - bloqueio de IP, PoTokenRequired, e um erro de 'legendas desativadas' que nem sempre é o que parece. Veja o checklist de diagnóstico completo para as causas e correções exatas.
Consiga uma chave de API (se preferir não hospedar você mesmo)
Pegue uma chave grátis no painel - 100 créditos grátis, sem cartão.
pip install requestsChame a API hospedada a partir do Python
Sem pool de proxy, sem manutenção de bloqueio de IP - apenas uma requisição 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"])Uma requisição com falha retorna um objeto de erro em vez de lançar uma exceção específica da biblioteca, então o mesmo tratamento de erro funciona em todos os endpoints.
{ "success": false, "code": "...", "message": "..." }Buscando mais de um vídeo
Percorrer uma lista de IDs de vídeo funciona da mesma forma - só fique de olho no limite de requisições por minuto do seu plano. Veja o guia de limite de taxa para lógica de retry e backoff.
As duas abordagens retornam a mesma informação - a diferença é quem mantém a infraestrutura funcionando. Veja o preço completo (100 créditos grátis, sem cartão) ou leia a documentação da API para cada endpoint.
FAQ de transcrições do YouTube em Python
Qual abordagem devo usar?
youtube-transcript-api para um script local rápido ou protótipo. Uma API hospedada quando você for implantar em produção e não quiser manter workarounds de proxy/bloqueio de IP você mesmo.
A API hospedada exige a biblioteca youtube-transcript-api?
Não - é uma API REST simples. Chame com qualquer cliente HTTP (requests, httpx, até curl); nenhuma dependência específica de Python é necessária.
Posso obter marcações de tempo por linha, não só o texto completo?
A biblioteca open-source retorna diretamente o início/duração de cada trecho. O endpoint de transcrição da nossa API hospedada atualmente retorna a transcrição completa como texto simples mais a contagem de palavras, não marcações por segmento - se seu caso de uso precisa dessa granularidade especificamente pela API, a biblioteca open-source é a melhor opção hoje.
O que acontece se um vídeo não tiver transcrição?
As duas abordagens retornam um erro específico em vez de uma string vazia - veja o checklist de diagnóstico para saber o que cada código de erro significa.
Relacionados
- YouTube API Quota Exceeded: Causes and Fixes
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- YouTube Transcripts in n8n: HTTP Request Workflow Guide
- Migrating from Supadata: A Field Guide
- Migrating from TranscriptAPI.com: A Field Guide
- Build an AI YouTube Video Summarizer with LangChain and Next.js
- GetYouTubeTranscript vs TranscriptAPI
- GetYouTubeTranscript vs youtubetotranscript.com
- GetYouTubeTranscript vs youtube-transcript.io
- GetYouTubeTranscript vs NoteGPT