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/v1

Créditos y planes

PlanPrecioCréditos/mesPrecio de recargaLímite de tasa
Gratis0 $/mes100 (una vez)—60 solicitudes/min
Mensual5 $/mes10002,50 $ / 1000200 solicitudes/min
Anual4,50 $/mes (54 $/año)10001,50 $ / 1000300 solicitudes/min
Starter19 $/mes75001,50 $ / 1000300 solicitudes/min
Pro49 $/mes25.0001,50 $ / 1000400 solicitudes/min
Scale99 $/mes60.0001,50 $ / 1000600 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

GET/transcript1 crédito

Obté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ámetroObligatorioDescripción
vSíID del video o URL completa de YouTube
languageNoCódigo de idioma (por defecto: en)
timestampsNoPon 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"
  }
}
GET/transcript/languagesGratis

Lista 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ámetroObligatorioDescripción
vSí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" }
    ]
  }
}
POST/batch1 crédito / video exitoso

Pon 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ámetroObligatorioDescripción
videosSíArray de IDs o URLs de video (1-100). Los duplicados se obtienen una sola vez.
languageNoCódigo de idioma para todos los videos (predeterminado: en)
timestampsNotrue para incluir segmentos por línea en los resultados
webhook_urlNoURL https pública que recibe el aviso al terminar el lote
Idempotency-KeyNoEncabezado. 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_..."
  }
}
GET/batchGratis

Estado 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ámetroObligatorioDescripción
idSíEl batch_id de POST /batch
offsetNoElementos a omitir (predeterminado: 0)
limitNoElementos 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
  }
}
GET/search1 crédito / página

Busca videos de YouTube con filtros y paginación.

ParámetroObligatorioDescripción
qSíConsulta de búsqueda (mínimo 2 caracteres)
countryNoCódigo de país de 2 letras (por defecto: us)
languageNoCódigo de idioma (por defecto: en)
page_tokenNoEl campo continuation_token de la respuesta anterior, para obtener la siguiente página
limitNoResultados 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"
  }
}
GET/resolveGratis

Resuelve 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ámetroObligatorioDescripción
handleSí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"
  }
}
GET/channel/latestGratis

Datos 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ámetroObligatorioDescripción
channelSí@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": [ ... ]
  }
}
GET/channel/videos1 crédito / página

Todos los videos subidos por un canal, del más reciente al más antiguo, con paginación.

ParámetroObligatorioDescripción
channelSí@handle, URL o ID del canal
continuationNocontinuation_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"
  }
}
GET/channel/search1 crédito / página

Busca dentro de los videos de un canal, con paginación.

ParámetroObligatorioDescripción
channelSí@handle, URL o ID del canal
qSíConsulta de búsqueda (mínimo 2 caracteres)
continuationNocontinuation_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"
  }
}
GET/playlist1 crédito / página

Todos los videos de una playlist, con paginación. continuation_token es null en la última página.

ParámetroObligatorioDescripción
listSíID o URL de la lista de reproducción
continuationNocontinuation_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"
  }
}
GET/creditsGratis

Consulta el saldo de créditos restante de esta clave antes de gastarlo - la misma información que devuelve la herramienta MCP get_credits.

ParámetroObligatorioDescripció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:

EstadoCódigoSignificado
400BAD_REQUESTParámetro faltante o no válido
400CURSOR_EXPIREDEl cursor de página caducó (a las 24 horas): vuelve a empezar desde la primera página
401MISSING_API_KEY / INVALID_API_KEYNo se proporcionó clave, o la clave no es válida o fue revocada
402PAYMENT_REQUIREDSin créditos disponibles - compra una recarga o mejora tu plan
404VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUNDVideo o recurso no encontrado
429RATE_LIMITEDDemasiadas solicitudes para el nivel de tu plan
503UPSTREAM_UNAVAILABLEProblema temporal en el origen - puedes reintentarlo sin problema
504UPSTREAM_TIMEOUTEl 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.