Documentación de la API
Una API REST para transcripciones, búsqueda y metadatos de YouTube. Obtén una clave de API desde tu panel — 100 créditos gratis, sin tarjeta requerida.
Autenticación
Pasa tu clave de API como un bearer token, o mediante x-api-key:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...URL base
https://getyoutubetranscript.com/api/v1Créditos y planes
| Plan | Precio | Créditos/mes | Precio de recarga | Límite de tasa |
|---|---|---|---|---|
| Gratis | 0 $/mes | 100 (una vez) | — | 60 solicitudes/min |
| Mensual | 5 $/mes | 1000 | 2,50 $ / 1000 | 200 solicitudes/min |
| Anual | 4,50 $/mes (54 $/año) | 1000 | 1,50 $ / 1000 | 300 solicitudes/min |
| Starter | 19 $/mes | 7500 | 1,50 $ / 1000 | 300 solicitudes/min |
| Pro | 49 $/mes | 25.000 | 1,50 $ / 1000 | 400 solicitudes/min |
| Scale | 99 $/mes | 60.000 | 1,50 $ / 1000 | 600 solicitudes/min |
1 crédito = 1 solicitud exitosa. Las solicitudes fallidas nunca se cobran. Ejemplo: 10 solicitudes de transcripción en las que 2 videos no tienen subtítulos cuestan 8 créditos, y reintentar un video fallido no cuesta nada hasta que funcione. Los créditos de recarga caducan a los 30 días de la compra o al final de tu periodo de facturación actual, lo que ocurra más tarde, y requieren una suscripción activa para poder usarse.
Endpoints
/transcript1 créditoObtén la transcripción de un video de YouTube, con metadatos (título, canal, miniatura). También devuelve language_code frente a requested_language, caption_type (manual o auto, null si se desconoce) y cached / fetched_at.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
v | Sí | ID del video o URL completa de YouTube |
language | No | Código de idioma (por defecto: en) |
timestamps | No | Pon true para añadir marcas de tiempo por línea (segments: start, duration, text en segundos). Desactivado por defecto. |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"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/languagesGratisLista los idiomas de subtítulos que ofrece un video (manuales y generados automáticamente) antes de obtener uno. default_language_code es lo que /transcript devuelve sin idioma; un video sin subtítulos devuelve una lista vacía.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
v | Sí | ID del video o URL completa de YouTube |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"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 crédito / video exitosoPon en cola hasta 100 videos en una sola llamada. Devuelve un batch_id al instante y obtiene las transcripciones en segundo plano. Consulta GET /batch o indica webhook_url para recibir un POST firmado (encabezado X-GYT-Signature) al terminar. Los videos fallidos nunca se cobran.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
videos | Sí | Array de IDs o URLs de video (1-100). Los duplicados se obtienen una sola vez. |
language | No | Código de idioma para todos los videos (predeterminado: en) |
timestamps | No | true para incluir segmentos por línea en los resultados |
webhook_url | No | URL https pública que recibe el aviso al terminar el lote |
Idempotency-Key | No | Encabezado. Reintenta la solicitud con seguridad: la misma clave devuelve el lote original. |
Solicitud
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"
}'Respuesta
{
"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_..."
}
}/batchGratisEstado del lote, contadores y una página de resultados en orden de envío. Los elementos exitosos tienen los mismos campos que /transcript; los fallidos incluyen un error_code.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
id | Sí | El batch_id de POST /batch |
offset | No | Elementos a omitir (predeterminado: 0) |
limit | No | Elementos por página, 1-50 (predeterminado: 20) |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"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 crédito / páginaBusca videos de YouTube con filtros y paginación.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
q | Sí | Consulta de búsqueda (mínimo 2 caracteres) |
country | No | Código de país de 2 letras (por defecto: us) |
language | No | Código de idioma (por defecto: en) |
page_token | No | El campo continuation_token de la respuesta anterior, para obtener la siguiente página |
limit | No | Resultados máximos (por defecto 20, máximo 50) |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
}
}/resolveGratisResuelve el identificador, la URL o el nombre de usuario de un canal a su ID de canal real. Una entrada sintáctica (ya sea un ID de canal o una URL que contenga uno) se resuelve al instante sin llamada de red; un identificador simple activa una búsqueda real.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
handle | Sí | ID de canal, URL o @identificador |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "scrape"
}
}/channel/latestGratisDatos del canal (título, suscriptores, descripción, avatar) y los últimos videos de la pestaña de inicio del canal. Para todo el historial de subidas usa /channel/videos.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
channel | Sí | @handle, URL o ID del canal |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"success": true,
"data": {
"channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
"about": { "description": "...", "links": [] },
"videos_sections": [ ... ]
}
}/channel/videos1 crédito / páginaTodos los videos subidos por un canal, del más reciente al más antiguo, con paginación.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
channel | Sí | @handle, URL o ID del canal |
continuation | No | continuation_token de la respuesta anterior, para obtener la página siguiente (úsalo en lugar de los demás parámetros). Caduca a las 24 horas. |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"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 crédito / páginaBusca dentro de los videos de un canal, con paginación.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
channel | Sí | @handle, URL o ID del canal |
q | Sí | Consulta de búsqueda (mínimo 2 caracteres) |
continuation | No | continuation_token de la respuesta anterior, para obtener la página siguiente (úsalo en lugar de los demás parámetros). Caduca a las 24 horas. |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"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 crédito / páginaTodos los videos de una playlist, con paginación. continuation_token es null en la última página.
| Parámetro | Obligatorio | Descripción |
|---|---|---|
list | Sí | ID o URL de la lista de reproducción |
continuation | No | continuation_token de la respuesta anterior, para obtener la página siguiente (úsalo en lugar de los demás parámetros). Caduca a las 24 horas. |
Solicitud
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/creditsGratisConsulta el saldo de créditos restante de esta clave antes de gastarlo - la misma información que devuelve la herramienta MCP get_credits.
| Parámetro | Obligatorio | Descripción |
|---|
Solicitud
curl "https://getyoutubetranscript.com/api/v1/credits" \
-H "Authorization: Bearer sk_live_..."Respuesta
{
"success": true,
"data": {
"plan_credits_left": 87,
"topup_credits_left": 0,
"plan": "monthly",
"rate_limit_per_minute": 200
}
}Errores
Los errores devuelven un cuerpo JSON con un campo code estable para bifurcar la lógica, además del estado HTTP:
| Estado | Código | Significado |
|---|---|---|
| 400 | BAD_REQUEST | Parámetro faltante o no válido |
| 400 | CURSOR_EXPIRED | El cursor de página caducó (a las 24 horas): vuelve a empezar desde la primera página |
| 401 | MISSING_API_KEY / INVALID_API_KEY | No se proporcionó clave, o la clave no es válida o fue revocada |
| 402 | PAYMENT_REQUIRED | Sin créditos disponibles - compra una recarga o mejora tu plan |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | Video o recurso no encontrado |
| 429 | RATE_LIMITED | Demasiadas solicitudes para el nivel de tu plan |
| 503 | UPSTREAM_UNAVAILABLE | Problema temporal en el origen - puedes reintentarlo sin problema |
| 504 | UPSTREAM_TIMEOUT | El servicio tardó más de 25 segundos: no se cobra y puedes reintentar |
Cómo usar esta API con una herramienta de IA
¿Prefieres dejar que Claude (u otra herramienta de codificación con IA) llame a esta API por ti en lugar de escribir las solicitudes a mano? Descarga la skill de YouTube Transcript, una Claude Skill lista para usar que le enseña a obtener transcripciones, buscar y mucho más.
Úsala en Zapier
Sin código: nuestra app de Zapier obtiene una transcripción, busca en YouTube o lista los videos de un canal en cualquier Zap. Conéctala con la misma clave de API; cada acción cuesta los mismos créditos que la llamada a la API.