Dokumentasi API
REST API untuk transkrip, pencarian, dan metadata YouTube. Dapatkan API key dari dashboard Anda — 100 kredit gratis, tanpa perlu kartu.
Autentikasi
Sertakan API key Anda sebagai bearer token, atau melalui x-api-key:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...URL Dasar
https://getyoutubetranscript.com/api/v1Kredit & paket
| Paket | Harga | Kredit/bulan | Harga top-up | Batas laju |
|---|---|---|---|---|
| Gratis | $0/bulan | 100 (sekali saja) | — | 60 req/menit |
| Bulanan | $5/bulan | 1.000 | $2,50 / 1.000 | 200 req/menit |
| Tahunan | $4,50/bulan ($54/tahun) | 1.000 | $1,50 / 1.000 | 300 req/menit |
| Starter | $19/bulan | 7.500 | $1,50 / 1.000 | 300 req/menit |
| Pro | $49/bulan | 25.000 | $1,50 / 1.000 | 400 req/menit |
| Scale | $99/bulan | 60.000 | $1,50 / 1.000 | 600 req/menit |
1 kredit = 1 request yang berhasil. Request yang gagal tidak pernah dikenakan biaya. Contoh: 10 request transkrip dengan 2 video tanpa teks hanya memakai 8 kredit, dan mencoba ulang video yang gagal tidak dikenakan biaya sampai berhasil. Kredit top-up kedaluwarsa 30 hari setelah pembelian atau di akhir periode penagihan Anda saat ini, mana yang lebih lambat, dan memerlukan langganan aktif untuk dapat digunakan.
Endpoint
/transcript1 kreditAmbil transkrip untuk video YouTube, lengkap dengan metadata (judul, channel, thumbnail). Juga mengembalikan language_code vs requested_language, caption_type (manual atau auto, null jika tidak diketahui), serta cached / fetched_at.
| Parameter | Wajib | Deskripsi |
|---|---|---|
v | Ya | ID video atau URL YouTube lengkap |
language | Tidak | Kode bahasa (default: en) |
timestamps | Tidak | Setel ke true untuk menambahkan penanda waktu per baris (segments: start, duration, text dalam detik). Nonaktif secara default. |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"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/languagesGratisTampilkan bahasa teks yang tersedia di sebuah video (manual dan otomatis) sebelum mengambil salah satunya. default_language_code adalah yang dikembalikan /transcript tanpa bahasa; video tanpa teks mengembalikan daftar kosong.
| Parameter | Wajib | Deskripsi |
|---|---|---|
v | Ya | ID video atau URL YouTube lengkap |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"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 kredit / video berhasilAntrekan hingga 100 video dalam satu panggilan. Langsung mengembalikan batch_id dan mengambil transkrip di latar belakang. Cek GET /batch, atau isi webhook_url untuk menerima POST bertanda tangan (header X-GYT-Signature) saat selesai. Video yang gagal tidak pernah dikenakan biaya.
| Parameter | Wajib | Deskripsi |
|---|---|---|
videos | Ya | Array ID atau URL video (1-100). Duplikat hanya diambil sekali. |
language | Tidak | Kode bahasa untuk semua video (default: en) |
timestamps | Tidak | true untuk menyertakan segments per baris di hasil |
webhook_url | Tidak | URL https publik yang diberi tahu saat batch selesai |
Idempotency-Key | Tidak | Header. Ulangi request dengan aman: key yang sama mengembalikan batch semula. |
Permintaan
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"
}'Tanggapan
{
"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_..."
}
}/batchGratisStatus batch, jumlah, dan satu halaman hasil sesuai urutan pengiriman. Item yang berhasil punya field yang sama dengan /transcript; item yang gagal membawa error_code.
| Parameter | Wajib | Deskripsi |
|---|---|---|
id | Ya | batch_id dari POST /batch |
offset | Tidak | Item yang dilewati (default: 0) |
limit | Tidak | Item per halaman, 1-50 (default: 20) |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"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 kredit / halamanCari video YouTube dengan filter dan pagination.
| Parameter | Wajib | Deskripsi |
|---|---|---|
q | Ya | Kata kunci pencarian (minimal 2 karakter) |
country | Tidak | Kode negara 2 huruf (default: us) |
language | Tidak | Kode bahasa (default: en) |
page_token | Tidak | continuation_token dari response sebelumnya, untuk mengambil halaman berikutnya |
limit | Tidak | Jumlah hasil maksimal (default 20, maks 50) |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
}
}/resolveGratisUbah handle, URL, atau username channel menjadi ID channel sebenarnya. Input yang sudah bersifat sintaktis (sudah berupa ID channel atau URL yang mengandung ID) langsung terselesaikan tanpa panggilan jaringan; handle biasa akan memicu satu kali pencarian nyata.
| Parameter | Wajib | Deskripsi |
|---|---|---|
handle | Ya | ID channel, URL, atau @handle |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "scrape"
}
}/channel/latestGratisDetail channel (judul, subscriber, deskripsi, avatar) beserta video terbaru di tab beranda channel. Untuk seluruh riwayat upload gunakan /channel/videos.
| Parameter | Wajib | Deskripsi |
|---|---|---|
channel | Ya | @handle, URL, atau ID channel |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"success": true,
"data": {
"channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
"about": { "description": "...", "links": [] },
"videos_sections": [ ... ]
}
}/channel/videos1 kredit / halamanSemua video yang diunggah channel, terbaru lebih dulu, dengan paginasi.
| Parameter | Wajib | Deskripsi |
|---|---|---|
channel | Ya | @handle, URL, atau ID channel |
continuation | Tidak | continuation_token dari respons sebelumnya, untuk mengambil halaman berikutnya (gunakan sebagai pengganti parameter lain). Kedaluwarsa setelah 24 jam. |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"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 kredit / halamanCari di dalam video satu channel, dengan paginasi.
| Parameter | Wajib | Deskripsi |
|---|---|---|
channel | Ya | @handle, URL, atau ID channel |
q | Ya | Kata kunci pencarian (minimal 2 karakter) |
continuation | Tidak | continuation_token dari respons sebelumnya, untuk mengambil halaman berikutnya (gunakan sebagai pengganti parameter lain). Kedaluwarsa setelah 24 jam. |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"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 kredit / halamanSemua video dalam playlist, dengan paginasi. continuation_token bernilai null di halaman terakhir.
| Parameter | Wajib | Deskripsi |
|---|---|---|
list | Ya | ID atau URL playlist |
continuation | Tidak | continuation_token dari respons sebelumnya, untuk mengambil halaman berikutnya (gunakan sebagai pengganti parameter lain). Kedaluwarsa setelah 24 jam. |
Permintaan
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/creditsGratisPeriksa sisa saldo kredit untuk kunci ini sebelum menggunakannya - data yang sama seperti yang dikembalikan oleh tool MCP get_credits.
| Parameter | Wajib | Deskripsi |
|---|
Permintaan
curl "https://getyoutubetranscript.com/api/v1/credits" \
-H "Authorization: Bearer sk_live_..."Tanggapan
{
"success": true,
"data": {
"plan_credits_left": 87,
"topup_credits_left": 0,
"plan": "monthly",
"rate_limit_per_minute": 200
}
}Error
Error mengembalikan body JSON dengan field code yang stabil untuk pencabangan logika, selain status HTTP-nya:
| Status | Kode | Arti |
|---|---|---|
| 400 | BAD_REQUEST | Parameter hilang atau tidak valid |
| 400 | CURSOR_EXPIRED | Kursor halaman kedaluwarsa (setelah 24 jam) - mulai lagi dari halaman pertama |
| 401 | MISSING_API_KEY / INVALID_API_KEY | Tidak ada key yang diberikan, atau key tidak valid/dicabut |
| 402 | PAYMENT_REQUIRED | Kredit habis - beli top-up atau upgrade |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | Video atau resource tidak ditemukan |
| 429 | RATE_LIMITED | Terlalu banyak request untuk tingkat paket Anda |
| 503 | UPSTREAM_UNAVAILABLE | Masalah sementara di sisi upstream - aman untuk dicoba ulang |
| 504 | UPSTREAM_TIMEOUT | Upstream butuh lebih dari 25 detik - tidak dikenai biaya, aman untuk dicoba lagi |
Menggunakan API ini dengan tool AI
Lebih suka membiarkan Claude (atau tool AI coding lain) memanggil API ini untuk Anda daripada menulis request secara manual? Unduh Skill YouTube Transcript - sebuah Claude Skill siap pakai yang mengajarkannya cara mengambil transkrip, mencari, dan lainnya.
Pakai di Zapier
Tanpa kode: aplikasi Zapier kami mengambil transkrip, mencari di YouTube, atau menampilkan daftar video sebuah channel di Zap mana pun. Hubungkan dengan kunci API yang sama; setiap aksi memakai kredit yang sama dengan panggilan API.