Tài liệu API
Một REST API cho transcript, tìm kiếm và metadata YouTube. Lấy API key từ dashboard của bạn — 100 tín dụng miễn phí, không cần thẻ.
Xác thực
Truyền API key của bạn dưới dạng bearer token, hoặc qua x-api-key:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...URL Cơ sở
https://getyoutubetranscript.com/api/v1Tín dụng & gói
| Gói | Giá | Tín dụng/tháng | Giá nạp thêm | Giới hạn tốc độ |
|---|---|---|---|---|
| Miễn phí | 0 $/tháng | 100 (một lần) | — | 60 req/phút |
| Hàng tháng | 5 $/tháng | 1.000 | 2,50 $ / 1.000 | 200 req/phút |
| Hàng năm | 4,50 $/tháng (54 $/năm) | 1.000 | 1,50 $ / 1.000 | 300 req/phút |
| Starter | 19 $/tháng | 7.500 | 1,50 $ / 1.000 | 300 req/phút |
| Pro | 49 $/tháng | 25.000 | 1,50 $ / 1.000 | 400 req/phút |
| Scale | 99 $/tháng | 60.000 | 1,50 $ / 1.000 | 600 req/phút |
1 tín dụng = 1 request thành công. Request thất bại không bao giờ bị trừ. Ví dụ: 10 request lấy transcript, trong đó 2 video không có phụ đề, chỉ tốn 8 tín dụng, và thử lại một video bị lỗi sẽ không mất phí cho đến khi thành công. Tín dụng nạp thêm hết hạn sau 30 ngày kể từ khi mua hoặc vào cuối chu kỳ thanh toán hiện tại, tùy thời điểm nào đến sau, và yêu cầu gói đăng ký đang hoạt động để sử dụng.
Điểm cuối
/transcript1 tín dụngLấy transcript của một video YouTube, kèm metadata (tiêu đề, kênh, thumbnail). Ngoài ra còn trả về language_code so với requested_language, caption_type (manual hoặc auto, null nếu không rõ) và cached / fetched_at.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
v | Có | Video ID hoặc URL YouTube đầy đủ |
language | Không | Mã ngôn ngữ (mặc định: en) |
timestamps | Không | Đặt true để thêm mốc thời gian cho từng dòng (segments: start, duration, text tính bằng giây). Mặc định tắt. |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"video_id": "jNQXAC9IVRw",
"language_code": "en",
"requested_language": "en",
"caption_type": "manual",
"title": "Me at the zoo",
"author_name": "jawed",
"author_url": "https://www.youtube.com/channel/UC4Qob...",
"thumbnail_url": "https://...",
"transcript": "All right, so here we are...",
"word_count": 39,
"cached": true,
"fetched_at": "2026-09-20T03:10:58.938Z"
}
}/transcript/languagesMiễn phíLiệt kê các ngôn ngữ phụ đề của một video (thủ công và tự động tạo) trước khi lấy một bản. default_language_code là ngôn ngữ mà /transcript trả về khi không chỉ định; video tắt phụ đề sẽ trả về danh sách rỗng.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
v | Có | Video ID hoặc URL YouTube đầy đủ |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"video_id": "kJQP7kiw5Fk",
"default_language_code": "en",
"languages": [
{ "language_code": "en", "name": "English - en", "caption_type": "manual" },
{ "language_code": "es", "name": "Spanish", "caption_type": "manual" }
]
}
}/batch1 tín dụng / video thành côngĐưa tối đa 100 video vào hàng đợi trong một lần gọi. Trả về batch_id ngay và lấy transcript ở chế độ nền. Kiểm tra GET /batch, hoặc truyền webhook_url để nhận một POST có chữ ký (header X-GYT-Signature) khi xong. Video thất bại không bao giờ bị trừ tín dụng.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
videos | Có | Mảng ID hoặc URL video (1-100). Video trùng chỉ lấy một lần. |
language | Không | Mã ngôn ngữ cho tất cả video (mặc định: en) |
timestamps | Không | true để thêm segments theo từng dòng vào kết quả |
webhook_url | Không | URL https công khai nhận thông báo khi batch hoàn tất |
Idempotency-Key | Không | Header. Gửi lại request an toàn: cùng một key sẽ trả về batch ban đầu. |
Yêu cầu
curl -X POST "https://getyoutubetranscript.com/api/v1/batch" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"videos": ["jNQXAC9IVRw", "https://youtu.be/dQw4w9WgXcQ"],
"webhook_url": "https://example.com/hooks/transcripts"
}'Phản hồi
{
"success": true,
"data": {
"batch_id": "324eb615-e4d5-4b3c-b8e7-04235671066b",
"status": "queued",
"total": 2,
"succeeded": 0,
"failed": 0,
"pending": 2,
"results_url": "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-...",
"webhook_secret": "whsec_..."
}
}/batchMiễn phíTrạng thái batch, số lượng và một trang kết quả theo thứ tự gửi. Mục thành công có cùng các trường như /transcript; mục thất bại có error_code.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
id | Có | batch_id từ POST /batch |
offset | Không | Số mục bỏ qua (mặc định: 0) |
limit | Không | Số mục mỗi trang, 1-50 (mặc định: 20) |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"batch_id": "324eb615-...",
"status": "completed",
"total": 2,
"succeeded": 1,
"failed": 1,
"credits_charged": 1,
"items": [
{ "position": 0, "status": "succeeded", "charged": true, "video_id": "jNQXAC9IVRw", "caption_type": "manual", "transcript": "All right, so here we are...", ... },
{ "position": 1, "status": "failed", "charged": false, "video_id": "dQw4w9WgXcQ", "error_code": "TRANSCRIPT_DISABLED" }
],
"next_offset": null
}
}/search1 tín dụng / trangTìm kiếm video YouTube với bộ lọc và phân trang.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
q | Có | Từ khóa tìm kiếm (tối thiểu 2 ký tự) |
country | Không | Mã quốc gia 2 chữ cái (mặc định: us) |
language | Không | Mã ngôn ngữ (mặc định: en) |
page_token | Không | Giá trị continuation_token từ response trước, để lấy trang tiếp theo |
limit | Không | Số kết quả tối đa (mặc định 20, tối đa 50) |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
}
}/resolveMiễn phíPhân giải handle, URL hoặc username của một kênh thành channel ID thực. Đầu vào có cấu trúc sẵn (đã là channel ID hoặc URL chứa sẵn ID) được phân giải ngay lập tức, không cần gọi mạng; một handle trần sẽ kích hoạt một lượt tra cứu thực.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
handle | Có | Channel ID, URL, hoặc @handle |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "scrape"
}
}/channel/latestMiễn phíThông tin kênh (tiêu đề, số người đăng ký, mô tả, ảnh đại diện) và các video mới nhất ở tab trang chủ của kênh. Để lấy toàn bộ lịch sử tải lên, dùng /channel/videos.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
channel | Có | @handle, URL hoặc ID kênh |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
"about": { "description": "...", "links": [] },
"videos_sections": [ ... ]
}
}/channel/videos1 tín dụng / trangTất cả video kênh đã tải lên, mới nhất trước, có phân trang.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
channel | Có | @handle, URL hoặc ID kênh |
continuation | Không | continuation_token từ phản hồi trước, để lấy trang tiếp theo (dùng thay cho các tham số khác). Hết hạn sau 24 giờ. |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "views": "6.2M", "published_time": "1d ago", "length": "10:47" } ],
"has_more": true,
"continuation_token": "c_pqHR9v13sqaqxlcKhA4MnA"
}
}/channel/search1 tín dụng / trangTìm kiếm trong video của một kênh, có phân trang.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
channel | Có | @handle, URL hoặc ID kênh |
q | Có | Từ khóa tìm kiếm (tối thiểu 2 ký tự) |
continuation | Không | continuation_token từ phản hồi trước, để lấy trang tiếp theo (dùng thay cho các tham số khác). Hết hạn sau 24 giờ. |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "published_time": "3w ago", "length": "17:14", "channel": { "name": "Marques Brownlee" } } ],
"has_more": true,
"continuation_token": "c_pnm10M6orzLgOTVWJk2oww"
}
}/playlist1 tín dụng / trangTất cả video trong playlist, có phân trang. continuation_token là null ở trang cuối.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
list | Có | Playlist ID hoặc URL |
continuation | Không | continuation_token từ phản hồi trước, để lấy trang tiếp theo (dùng thay cho các tham số khác). Hết hạn sau 24 giờ. |
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/creditsMiễn phíKiểm tra số dư tín dụng còn lại của key này trước khi sử dụng - cùng dữ liệu mà công cụ MCP get_credits trả về.
| Tham số | Bắt buộc | Mô tả |
|---|
Yêu cầu
curl "https://getyoutubetranscript.com/api/v1/credits" \
-H "Authorization: Bearer sk_live_..."Phản hồi
{
"success": true,
"data": {
"plan_credits_left": 87,
"topup_credits_left": 0,
"plan": "monthly",
"rate_limit_per_minute": 200
}
}Lỗi
Lỗi trả về một JSON body kèm trường code cố định để bạn phân nhánh xử lý, bên cạnh mã trạng thái HTTP:
| Trạng thái | Mã | Ý nghĩa |
|---|---|---|
| 400 | BAD_REQUEST | Thiếu hoặc sai tham số |
| 400 | CURSOR_EXPIRED | Con trỏ trang đã hết hạn (sau 24 giờ) - bắt đầu lại từ trang đầu |
| 401 | MISSING_API_KEY / INVALID_API_KEY | Không có key, hoặc key không hợp lệ/đã bị thu hồi |
| 402 | PAYMENT_REQUIRED | Hết tín dụng - hãy nạp thêm hoặc nâng cấp gói |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | Không tìm thấy video hoặc tài nguyên |
| 429 | RATE_LIMITED | Quá nhiều request so với gói của bạn |
| 503 | UPSTREAM_UNAVAILABLE | Sự cố tạm thời từ upstream - có thể thử lại an toàn |
| 504 | UPSTREAM_TIMEOUT | Nguồn mất hơn 25 giây - không bị tính phí, có thể thử lại |
Dùng API này với một công cụ AI
Muốn để Claude (hoặc một công cụ AI coding khác) tự gọi API này thay vì tự viết request? Tải YouTube Transcript skill - một Claude Skill dựng sẵn, dạy nó cách lấy transcript, tìm kiếm, và nhiều hơn nữa.
Dùng trong Zapier
Không cần code: ứng dụng Zapier của chúng tôi lấy bản chép lời, tìm kiếm YouTube hoặc liệt kê video của một kênh trong bất kỳ Zap nào. Kết nối bằng cùng khóa API; mỗi hành động tốn số credit bằng lệnh gọi API.