Podcast Transcript API
Transcripciones de episodios de pódcast desde feeds RSS: transcripciones gratuitas del editor cuando estén disponibles; de lo contrario, conversión de voz a texto con Whisper. JSON, texto, SRT, VTT.
Servidor MCP alojado
npx add-mcp 'https://mcp.apify.com/?actors=catalyst-labs/podcast-transcript-api'Se instala en Claude Code, Codex, Cursor y más
Documentación
API de transcripciones de pódcasts - Actor de RSS, Apple Podcasts y audio a texto (catalyst-labs/podcast-transcript-api)
Obtén transcripciones de pódcasts y audio como texto, segmentos con marcas de tiempo, SRT/VTT y Markdown. Entrada: feeds RSS, enlaces de Apple Podcasts, páginas de episodios o URLs de audio/vídeo. Usa la transcripción propia del editor cuando existe ($0.01); en caso contrario, usa el reconocimiento de voz Whisper.
- URL: https://apify.com/catalyst-labs/podcast-transcript-api.md
- Desarrollado por: Catalyst Labs (comunidad)
- Categorías: IA, Vídeos, Agentes
- Estadísticas: 2 usuarios totales, 1 usuarios mensuales, 100.0% de ejecuciones exitosas, 0 marcadores
- Valoración de usuarios: Aún sin valoraciones
Precios
desde $10.00 / 1,000 transcripciones de episodio (editor)
Este Actor se paga por evento. No se te cobra por el uso de la plataforma Apify, sino solo un precio fijo por eventos específicos. Como este Actor admite descuentos de Apify Store, el precio baja cuanto mayor sea tu plan de suscripción.
Más información: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event
¿Qué es un Actor de Apify?
Un Actor es un programa en la nube sin servidor que se ejecuta en la plataforma Apify. Tiene dos modos de ejecución. En el modo por lotes, un Actor acepta una entrada JSON bien definida, realiza una acción que puede durar desde unos segundos hasta unas horas y, opcionalmente, produce una salida JSON bien definida, conjuntos de datos con resultados o archivos en el almacén clave-valor. En el modo en espera, un Actor proporciona un servidor web que puede usarse como sitio web, API o servidor MCP.
El vocabulario de Apify y el modelo de la plataforma se definen una sola vez, en la guía de inicio rápido para agentes en https://apify.com/agents.md.
¿Cómo integrar un Actor?
Si te preguntan sobre integración, ayudas a los desarrolladores a integrar Actores en sus proyectos. Te adaptas a su stack y entregas integraciones seguras, bien documentadas y listas para producción.
No adivines una ruta de integración. Todas ellas están en la guía de inicio rápido para agentes en https://apify.com/agents.md:: el servidor MCP de Apify, Agent Skills con la CLI de Apify, los clientes de JavaScript y Python, la API REST y la ruta sin cuenta para un agente sin humano que inicie sesión. También incluye la regla sobre indicar el coste antes de la primera ejecución de pago.
Para ver ejemplos ya conectados al esquema de entrada de este Actor, consulta la sección API a continuación.
Cada biblioteca cliente tiene documentación de referencia que la guía de inicio rápido no repite: JavaScript/TypeScript (npm install apify-client) y Python (pip install apify-client).
README
API de transcripciones de pódcasts: RSS, Apple Podcasts y audio a texto
Obtén una transcripción de cualquier episodio de pódcast o archivo de audio/vídeo como texto plano, segmentos con marcas de tiempo, SRT, VTT, texto listo para LLM y Markdown, con metadatos del episodio. Cuando el programa publica su propia transcripción (la etiqueta podcast:transcript de Podcasting 2.0), obtienes esa por un precio fijo de $0.01 por episodio. En caso contrario, el audio se transcribe con Whisper large-v3 (turbo como alternativa automática) y se factura por minuto de audio.
Para agentes de IA
- Qué hace: entra un feed RSS de pódcast / enlace de Apple Podcasts / página de episodio / URL de audio, y sale un registro de transcripción por episodio.
- Entrada mínima:
{"sources": ["https://podnews.net/rss"], "maxEpisodesPerFeed": 1} - Primera llamada económica: la entrada anterior devuelve el episodio más reciente de Podnews a partir de la transcripción de su editor: $0.01.
- Herramienta MCP:
catalyst-labs--podcast-transcript-api(a través dehttps://mcp.apify.com/?tools=catalyst-labs/podcast-transcript-api). - Controles de coste:
maxEpisodesPerFeed(por defecto 3),maxAudioMinutes(por defecto 120 minutos de reconocimiento de voz por ejecución),maxMinutesPerEpisode(por defecto 180),transcriptMode: "publisherOnly"(nunca transcribe), además de la opción de ejecuciónmaxTotalChargeUsd. La ejecución comprueba el presupuesto antes de transcribir cada episodio, por lo que nunca se excede. - Campos clave de salida:
transcriptSource(publisher|speechToText),text,llmText,segments[{start,end,text,speaker}],srt,vtt,markdown,speakers,chapters,language,durationSeconds,chargedEvent,chargedMinutes; los fallos incluyenerrorType,retryable,hint. - Límites conocidos: los programas exclusivos de Spotify y de suscripción de Apple no tienen audio público (se rechazan, no se cobran; pasa el feed RSS). Enlaces de YouTube: usa
catalyst-labs/youtube-transcript-api. El reconocimiento de voz no tiene etiquetas de hablante (las transcripciones del editor conservan las suyas).
Cuándo elegir esta herramienta
- Elige esta herramienta cuando necesites ambas rutas en una sola llamada: transcripciones del editor cuando existan (económicas, con etiquetas de hablante, exactas) y reconocimiento de voz para todo lo demás, con
transcriptSourceindicándote cuál obtuviste. - Elígela cuando partas de lo que la gente comparte realmente: feeds RSS, enlaces de programas o episodios de Apple Podcasts, páginas web de episodios (el feed y el audio se encuentran por ti) o enlaces directos a archivos.
- Elígela para episodios largos: el audio se recodifica a 16 kHz mono y se divide en fragmentos solapados de 10 minutos, que luego se unen en los puntos medios de los segmentos, de modo que programas de 2-3 horas funcionan sin errores de tamaño ni líneas duplicadas en las uniones.
- Elígela para monitorización:
onlyNewEpisodesrecuerda lo que se entregó, por lo que una ejecución programada devuelve cada episodio nuevo una sola vez. - Elígela para pipelines de agentes y RAG:
llmText(muletillas y tartamudeos eliminados), Markdown con marcas de tiempo enlazadas, unTRANSCRIPTS.mdcombinado, capítulos cuando se publican. - Nunca se cobra: enlaces no válidos o no compatibles, feeds/archivos que no se pueden alcanzar o decodificar, audio sin voz, episodios omitidos por límites, filtros o modo de monitorización, y cualquier episodio fallido.
- Resultados de QA: consulta "Probado" a continuación.
Elige una herramienta diferente cuando necesites etiquetas de hablante en la salida de reconocimiento de voz (diarización), traducción al inglés o programas exclusivos de Spotify.
Precios (pago por evento, sin cuota de inicio)
| Evento | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Transcripción de episodio (editor) | $0.01 | $0.01 | $0.01 | $0.01 |
| Minuto de audio transcrito | $0.009 | $0.008 | $0.007 | $0.006 |
Los minutos se redondean hacia arriba una vez por episodio (un episodio de 30 min 10 s = 31 minutos). Un episodio de 60 minutos sin transcripción del editor cuesta $0.54 en Free. Un feed con transcripciones del editor cuesta $0.01 por episodio, sea cual sea su duración.
Entrada
| Campo | Por defecto | Qué hace |
|---|---|---|
sources | (obligatorio) | Feeds, enlaces de Apple, páginas de episodios, URLs de audio/vídeo |
maxEpisodesPerFeed | 3 | Los N más recientes por feed (0 = todos) |
transcriptMode | auto | auto, publisherOnly, speechToText |
maxAudioMinutes | 120 | Límite de reconocimiento de voz por ejecución |
maxMinutesPerEpisode / truncateLongEpisodes | 180 / false | Omitir o truncar episodios muy largos |
onlyNewEpisodes / monitorId | false | Modo de monitorización |
publishedAfter, titleFilter | Filtros de episodios | |
language | auto | Idioma de la transcripción del editor y pista de idioma para STT |
vocabulary | Nombres/términos que deben escribirse correctamente (siempre se usan los títulos del programa y del episodio) | |
outputFormats | all | text, segments, llmText, srt, vtt, markdown |
includeChapters | true | Capítulos de Podcasting 2.0 |
Ejemplo de salida
{ "status": "succeeded", "podcastTitle": "Podnews Daily", "episodeTitle": "WTF returns in visual form", "publishedAt": "2026-10-20T07:00:00.000Z",
"durationSeconds": 356, "transcriptSource": "publisher", "publisherFormat": "vtt", "language": "en-gb", "wordCount": 880,
"segments": [{ "start": 0, "end": 4.2, "text": "From our free daily newsletter..." }], "chargedEvent": "publisher-transcript", "charged": true }
El registro OUTPUT resume la ejecución: recuentos, audioMinutesCharged, errorTypes, stoppedBy.
Probado
Probado en la nube el 20 de octubre de 2026 (build 1.0.8): 16/16 casos de lanzamiento superados, en 11 hosts de pódcasts y transcripciones SRT, VTT, JSON y HTML en inglés, alemán y español; enlaces de programas y episodios de Apple; páginas de episodios; límites de gasto; y entradas no válidas. Los eventos cobrados coincidieron con los registros entregados en cada ejecución, y no se cobró ninguna fila fallida.
- Tasa de error de palabras del reconocimiento de voz frente a la transcripción del propio editor: inglés 2.4% y 3.0%, español 10.2%, alemán 16.9% (gran parte de la diferencia se debe a la escritura de números y a errores en la referencia).
- Episodios largos: un episodio de 100 minutos se transcribe en unos 25 segundos, con fragmentos cortados en las pausas.
- Limitaciones: los programas solo de Spotify no son compatibles. La salida de reconocimiento de voz no tiene etiquetas de hablante.
Preguntas frecuentes
¿Es preciso el reconocimiento de voz? Usa Whisper large-v3 (turbo como alternativa automática). Consulta la tasa de error de palabras medida en "Probado". Los nombres mejoran cuando los pasas en vocabulary.
¿Almacenáis el audio? No. El audio se procesa en el almacenamiento temporal de la ejecución y se elimina cuando el episodio termina.
Derechos de autor: las transcripciones pertenecen a los programas. Úsalas para investigación, búsqueda, accesibilidad y uso personal; cita el programa cuando las cites.
Esquema de entrada del Actor
sources (tipo: array):
URLs de feeds RSS de pódcasts, enlaces de programas o episodios de Apple Podcasts, páginas web de episodios o URLs directas de archivos de audio/vídeo (mp3, m4a, mp4, wav...). Los feeds devuelven los episodios más recientes (consulta maxEpisodesPerFeed). Los enlaces de Spotify y YouTube no son compatibles. Ejemplo: ["https://feeds.buzzsprout.com/1.rss", "https://podcasts.apple.com/us/podcast/id1584274529"\]
maxEpisodesPerFeed (tipo: integer):
Los N episodios más recientes tomados de cada feed o enlace de programa de Apple. 0 = todos los episodios del feed. Ejemplo: 5
transcriptMode (tipo: string):
auto: usa la transcripción de Podcasting 2.0 del editor ($0.01 por episodio) y transcribe solo cuando no existe ninguna (por minuto de audio). publisherOnly: nunca ejecuta reconocimiento de voz. speechToText: siempre transcribe.
maxAudioMinutes (tipo: integer):
Límite máximo de minutos de reconocimiento de voz facturados en esta ejecución; los episodios que lo superarían se omiten (no se cobran, se pueden reintentar). 0 = solo transcripciones del editor. Combínalo con la opción de ejecución maxTotalChargeUsd. Ejemplo: 300
maxMinutesPerEpisode (tipo: integer):
Los episodios más largos que esto se omiten (no se cobran), o se transcriben solo hasta esta duración cuando truncateLongEpisodes está activado. Ejemplo: 240
truncateLongEpisodes (tipo: boolean):
Cuando un episodio es más largo que maxMinutesPerEpisode, transcribe y factura solo sus primeros maxMinutesPerEpisode minutos (registro marcado con truncated: true) en lugar de omitirlo.
onlyNewEpisodes (tipo: boolean):
Recuerda los episodios entregados y los omite en ejecuciones posteriores (nunca se cobran dos veces). Úsalo con una programación para obtener cada episodio nuevo una sola vez.
monitorId (tipo: string):
Nombre opcional para la memoria de onlyNewEpisodes, para que varias programaciones puedan seguir los mismos feeds por separado. Por defecto, la lista de fuentes. Ejemplo: "weekly-news-shows"
publishedAfter (tipo: string):
Solo episodios publicados en esta fecha o después (AAAA-MM-DD). Ejemplo: "2026-10-01"
titleFilter (tipo: string):
Solo episodios cuyo título contenga este texto (sin distinguir mayúsculas y minúsculas). Ejemplo: "interview"
language (tipo: string):
Código ISO 639-1 opcional (en, es, de...). Elige la transcripción del editor en ese idioma e indica al reconocimiento de voz el idioma hablado. Vacío = detección automática (unos 100 idiomas).
vocabulary (tipo: array):
Nombres de invitados, marcas y jerga que se pasan al reconocimiento de voz para que se escriban correctamente. Siempre se usan los títulos del programa y del episodio. Ejemplo: ["Adam Curry", "Podcasting 2.0", "Fountain"]
outputFormats (tipo: array):
Campos que se incluyen por episodio: text (párrafos, con etiquetas de hablante cuando se conocen), segments (segundos de inicio/fin, hablante), llmText (muletillas eliminadas), srt, vtt, markdown (también combinados en TRANSCRIPTS.md). Mismo precio para cualquier combinación.
includeChapters (tipo: boolean):
Añade los capítulos de Podcasting 2.0 del episodio (inicio, título) cuando el feed los publica. Gratis.
Ejemplo de objeto de entrada del Actor
{
"sources": [
"https://podnews.net/rss"
],
"maxEpisodesPerFeed": 1,
"transcriptMode": "auto",
"maxAudioMinutes": 120,
"maxMinutesPerEpisode": 180,
"truncateLongEpisodes": false,
"onlyNewEpisodes": false,
"outputFormats": [
"text",
"segments",
"llmText",
"srt",
"vtt",
"markdown"
],
"includeChapters": true
}
Esquema de salida del Actor
transcripts (tipo: string):
Registros con text, llmText, segments, SRT/VTT, Markdown, capítulos y metadatos del episodio.
summary (tipo: string):
Recuentos, tipos de error, minutos de audio facturados, stoppedBy.
markdown (tipo: string):
Todas las transcripciones entregadas en un único archivo Markdown (cuando outputFormats incluye markdown).
API
Puedes ejecutar este Actor mediante programación usando nuestra API. A continuación se muestran ejemplos de código en JavaScript, Python y CLI, así como la especificación OpenAPI y la configuración del servidor MCP.
Ejemplo en JavaScript
import { ApifyClient } from 'apify-client';
// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
token: '<YOUR_API_TOKEN>',
});
// Prepare Actor input
const input = {
"sources": [
"https://podnews.net/rss"
],
"maxEpisodesPerFeed": 1
};
// Run the Actor and wait for it to finish
const run = await client.actor("catalyst-labs/podcast-transcript-api").call(input);
// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.dir(item);
});
// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs
Ejemplo en Python
from apify_client import ApifyClient
# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")
# Prepare the Actor input
run_input = {
"sources": ["https://podnews.net/rss"],
"maxEpisodesPerFeed": 1,
}
# Run the Actor and wait for it to finish
run = client.actor("catalyst-labs/podcast-transcript-api").call(run_input=run_input)
# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)
# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start
Ejemplo en CLI
echo '{
"sources": [
"https://podnews.net/rss"
],
"maxEpisodesPerFeed": 1
}' |
apify call catalyst-labs/podcast-transcript-api --silent --output-dataset
Configuración del servidor MCP
{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com/?tools=fetch-actor-details,catalyst-labs/podcast-transcript-api"
}
}
}
El servidor alojado te autentica con OAuth en la primera conexión, por lo que ningún token de API debe incluirse en esta configuración. Los clientes sin compatibilidad con OAuth pueden enviar en su lugar un encabezado Authorization: Bearer <APIFY_API_TOKEN>, usando un token de API e integraciones en Apify Console (https://console.apify.com/settings/integrations).
Especificación OpenAPI
Descarga la definición OpenAPI: https://api.apify.com/v2/actors/5jdK5z2K6EbJoWdZd/builds/cZTcV0iM37Fy2lx9g/openapi.json