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는 YouTube 자체 자막 데이터를 직접 가져오는, 잘 관리되는 Python 패키지입니다 - 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 requestsPython에서 호스팅된 API 호출하기
프록시 풀도, 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 목록을 반복 처리하는 방식은 동일합니다 - 플랜의 분당 요청 제한만 주의하세요. 백오프와 재시도 로직은 속도 제한 가이드를 참고하세요.
두 방법 모두 같은 정보를 반환합니다 - 차이는 인프라를 계속 작동시키는 일을 누가 맡느냐입니다. 전체 요금 보기 (100 무료 크레딧, 카드 불필요) 또는 각 엔드포인트에 대한 API 문서를 읽어보세요.
Python YouTube 자막 FAQ
어떤 방법을 사용해야 하나요?
빠른 로컬 스크립트나 프로토타입에는 youtube-transcript-api. 프로덕션에 배포하고 프록시/IP 차단 우회를 직접 유지보수하고 싶지 않다면 호스팅된 API.
호스팅된 API를 쓰려면 youtube-transcript-api 라이브러리가 필요한가요?
아니요 - 그냥 일반 REST API입니다. requests, httpx, 심지어 curl 등 어떤 HTTP 클라이언트로도 호출할 수 있으며, 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 vs TranscriptAPI
- GetYouTubeTranscript vs youtubetotranscript.com
- GetYouTubeTranscript vs youtube-transcript.io
- GetYouTubeTranscript vs NoteGPT