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
Краткий ответ
Установите библиотеку с открытым исходным кодом
youtube-transcript-api - это хорошо поддерживаемый Python-пакет, который напрямую получает собственные данные субтитров YouTube - без API-ключа, без квоты YouTube Data API.
pip install youtube-transcript-apiПолучите расшифровку по ID видео:
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)Где это ломается после деплоя
На ноутбуке это работает надёжно. При деплое на облачный сервер могут возникнуть реальные, хорошо задокументированные сбои - блокировка IP, PoTokenRequired и ошибка 'расшифровка отключена', которая не всегда означает то, что кажется. Точные причины и решения смотрите в полном чек-листе диагностики.
Получите API-ключ (если не хотите разворачивать своё решение)
Возьмите бесплатный ключ в панели управления - 100 бесплатных кредитов, без карты.
pip install requestsВызов размещённого API из Python
Без пула прокси, без обслуживания блокировки IP - просто 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"])Неудачный запрос возвращает объект ошибки вместо выброса специфичного для библиотеки исключения, поэтому одна и та же обработка ошибок работает для любого эндпоинта.
{ "success": false, "code": "...", "message": "..." }Получение нескольких видео
Перебор списка ID видео работает так же - просто следите за лимитом запросов в минуту вашего тарифа. Логику backoff и повторов смотрите в руководстве по лимитам запросов.
Оба подхода возвращают одну и ту же информацию - разница в том, кто поддерживает инфраструктуру в рабочем состоянии. Смотрите полные цены (100 бесплатных кредитов, без карты) или читайте документацию API по каждому эндпоинту.
FAQ по расшифровкам YouTube на Python
Какой подход мне использовать?
youtube-transcript-api для быстрого локального скрипта или прототипа. Размещённый API - когда вы деплоите в продакшен и не хотите сами поддерживать обходные пути с прокси/блокировкой IP.
Нужна ли для размещённого API библиотека youtube-transcript-api?
Нет - это обычный REST API. Вызывайте его любым HTTP-клиентом (requests, httpx, даже curl); специфичная для Python зависимость не нужна.
Могу ли я получить таймкоды для каждой строки, а не только полный текст?
Библиотека с открытым исходным кодом напрямую возвращает начало/длительность для каждого фрагмента. Эндпоинт расшифровки нашего размещённого API сейчас возвращает полную расшифровку как обычный текст плюс количество слов, без таймкодов по сегментам - если вашему сценарию нужна именно такая детализация через API, сегодня лучше подойдёт библиотека с открытым исходным кодом.
Что произойдёт, если у видео нет расшифровки?
Оба подхода возвращают конкретную ошибку вместо пустой строки - что означает каждый код ошибки, смотрите в чек-листе диагностики.
Похожие материалы
- 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 против TranscriptAPI
- GetYouTubeTranscript против youtubetotranscript.com
- GetYouTubeTranscript против youtube-transcript.io
- GetYouTubeTranscript против NoteGPT