Voltar ao blogIntegrações

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 o youtube-transcript-api para um script local rápido, ou chame uma API REST hospedada se não quiser lidar com bloqueio de IP e problemas de PoToken ao implantar. Ambas as opções estão cobertas abaixo com código funcional.
01

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-api

Obtenha 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)
02

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.

03

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 requests
04

Chame 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": "..." }
05

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

Q01

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.

Q02

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.

Q03

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.

Q04

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