Podcast & Interview Transcript Intelligence avatar

Podcast & Interview Transcript Intelligence

Pricing

from $5.00 / 1,000 transcript results

Go to Apify Store
Podcast & Interview Transcript Intelligence

Podcast & Interview Transcript Intelligence

Extract podcast and interview transcripts from RSS feeds, transcript URLs, public media, webpages, YouTube captions, or pasted text. Export structured transcripts, SRT/VTT captions, summaries, topics, chapters, and quotes while reusing existing transcripts before paid transcription.

Pricing

from $5.00 / 1,000 transcript results

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

9 days ago

Last modified

Share

Turn podcast episodes and interviews into clean, searchable data with a transcript-first podcast transcription API. Provide a podcast RSS feed, transcript URL, public audio or video file, YouTube page, or pasted text. The Actor looks for an existing transcript or caption track first and only uses paid speech-to-text when no usable transcript is available and you explicitly enable transcription.

Use it for podcast transcript extraction, interview transcription, RSS feed processing, YouTube caption retrieval, SRT/VTT subtitle generation, accessibility workflows, and transcript analysis. Results are structured for direct use in research tools, content pipelines, spreadsheets, databases, and AI applications.

Each result can include:

  • the normalized transcript;
  • timestamps and speaker labels when the source provides them;
  • SRT and WebVTT captions;
  • a concise summary and main topics;
  • chapter suggestions and evidence-linked quotes;
  • source, model, warning, and cost details.

Use cases

  • Turn podcast RSS feeds into searchable research data.
  • Reuse Podcasting 2.0 transcripts instead of paying to transcribe audio again.
  • Create captions from public interview audio or video files.
  • Extract public YouTube caption tracks.
  • Prepare podcast content for articles, newsletters, accessibility, or AI workflows.

Why use this Actor?

  • Transcript first: avoids paying to transcribe audio when the publisher already provides a usable transcript or caption track.
  • Multiple source types: accepts RSS and Atom feeds, transcript files, public media, YouTube pages, and pasted text.
  • Structured output: returns normalized text, timed segments, captions, summaries, topics, chapters, quotes, and processing metadata.
  • Cost-safe defaults: paid transcription and AI analysis remain disabled unless you select them.
  • Bounded runs: item, duration, download, runtime, and OpenRouter budget limits prevent uncontrolled processing.
  • API ready: every result is available as a structured dataset row for automation and downstream integrations.

Run it in Apify Console

  1. Open the Actor's Input tab.
  2. Paste up to 10 podcast feeds, transcript files, public media files, webpages, or YouTube links into Sources. You can also paste transcript text directly.
  3. Leave Do not transcribe audio selected for a transcript-only, cost-safe run, or explicitly choose a transcription option.
  4. Click Start and open the Dataset tab when the run finishes.

The small built-in Apify example analyzes a short two-speaker transcript and returns one meaningful row. It makes one bounded OpenRouter analysis call so the daily platform test can detect a missing key, retired model, provider failure, or invalid model response. It never downloads media or performs transcription, and the Actor retains a 240-second runtime guard.

For automation, use the API tab or the Python example below.

Input

The form has six simple inputs:

  • Sources — one list for RSS or Atom feeds, public TXT/JSON/SRT/VTT transcripts, audio/video files, webpages, and YouTube links.
  • Or paste a transcript — private transcript text to process directly.
  • Maximum results — the total number of rows to create.
  • When no transcript exists — disabled, low-cost transcription, or speaker-aware transcription.
  • Transcript intelligence — transcript only, or summary, topics, chapters, and quotes.
  • Create timestamps when missing — regenerate timing from available public media when needed.

When audio transcription is needed, choose:

  • low_cost — Whisper transcription, normally the cheapest option;
  • speaker_aware — MAI transcription with best-effort speaker diarization;
  • disabled — never send audio for transcription.

Plain-text transcripts are reused without retranscription. Enable Require accurate timestamps only when missing captions must be regenerated from available audio.

Transcription, AI analysis, and speaker-label requests are opt-in. New runs default to existing-transcript discovery with transcriptionFallback: "disabled" and analysisMode: "none", so an omitted setting cannot unexpectedly spend OpenRouter credits or add avoidable warnings to the default result.

Safety limits for duration, downloads, and runtime are applied automatically. Existing API clients can still send the previous source-specific and safety fields; they remain supported but are hidden from the Console form.

Minimal JSON input:

{
"sourceUrls": ["https://example.com/podcast.xml"],
"transcriptionFallback": "low_cost",
"analysisMode": "standard"
}

Output

The default dataset contains one row per requested transcript, episode, or media item.

{
"recordType": "transcript_result",
"status": "success",
"title": "Example episode",
"transcriptSource": "existing_transcript",
"transcript": "The normalized episode transcript...",
"segments": [
{ "start": 0, "end": 5.4, "text": "Welcome to the show." }
],
"summary": "The episode discusses...",
"topics": ["podcasting", "accessibility"],
"srt": "1\n00:00:00,000 --> 00:00:05,400\nWelcome to the show.\n",
"openRouterCostUsd": 0,
"warnings": []
}

Failed inputs are returned as separate sanitized error rows so a bad link does not hide successful results from the same run.

Pricing and cost control

Finding and normalizing an existing transcript does not use OpenRouter. Optional analysis and missing-audio transcription use metered AI processing.

The release pricing is designed around these pay-per-event rates. The Actor's Pricing tab is authoritative once the listing is live:

  • successful transcript result: $0.005 per delivered dataset row;
  • AI analysis: $0.001 per started transcript minute;
  • low-cost transcription: $0.006 per started audio minute;
  • speaker-aware transcription: $0.012 per started audio minute.

Example totals, including the $0.00005 Actor start event, are approximately $0.00505 for one existing transcript, $0.06505 for a 10-minute low-cost transcription, $0.36505 for a 60-minute low-cost transcription, and $0.72505 for a 60-minute speaker-aware transcription. Existing transcripts are therefore inexpensive to try, while paid transcription scales predictably with media length.

At the model rates checked for this release, OpenRouter lists Whisper Large V3 at $0.000008 per second ($0.00048 per minute), MAI-Transcribe 2 at $0.10 per hour (about $0.00167 per minute), and GPT-5.4 Nano at $0.20/M input tokens plus $1.25/M output tokens. Provider routing and billing details can make the returned cost higher, so the Actor uses deliberately conservative preflight estimates, records the actual returned OpenRouter cost in each result, and enforces a separate per-run API budget.

The event prices include ordinary Apify platform usage; it is not passed through as an additional customer platform-usage charge. A run will not start an owner-funded AI operation unless the spending allowance covers the full AI operation and its result. Model prices and event rates can change; always review the Pricing tab for the active customer-facing rates.

The base result event is delivered and charged atomically by the Apify SDK. Failed rows are not charged, and processing stops when the caller's charge limit is reached. This event is intended to cover ordinary platform compute, data transfer, and storage once pay-per-event pricing is enabled.

Regular Apify usage is bounded as well:

  • processing is sequential and does not launch a browser or use a proxy;
  • memory is capped at 512 MB;
  • network and AI work stops after at most 280 seconds, with a 240-second default;
  • one run accepts at most 10 items and 120 total audio minutes;
  • all source downloads share a 100 MB default allowance and a non-increasable 150 MB ceiling;
  • each run writes at most 10 dataset rows and one small run-summary record.

At 512 MB, the 280-second runtime ceiling is about 0.039 compute units. At Apify's published $0.20/CU base rate, that is under $0.008 of compute for a worst-duration run; normal transcript-first runs should be much lower. Data transfer and storage operations are separate, but the download and output caps prevent an individual run from growing without bound.

Data handling

  • Media is downloaded into temporary run storage only.
  • Raw audio, video, and normalized chunks are deleted before the item finishes, including after errors.
  • Transcript contents are not written to logs.
  • Final result rows are stored only in the caller's unnamed run dataset and follow the caller's Apify retention policy.
  • Normal Apify run metadata and encrypted inputs remain subject to Apify's platform retention rules.

Only public URLs are supported. The Actor blocks local and private network destinations and does not bypass logins, DRM, CAPTCHAs, private feeds, or access controls.

Python API example

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("thescrapelab/podcast-interview-transcript-intelligence").call(
run_input={
"sourceUrls": ["https://example.com/podcast.xml"],
"transcriptionFallback": "low_cost",
"analysisMode": "standard",
}
)
if run is None:
raise RuntimeError("Actor run failed")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["title"], item["status"])
print(item["summary"])

Limitations

  • Speaker labels are best effort and depend on the transcript source or selected model.
  • Plain-text transcripts have no accurate SRT/VTT output unless audio is available and timestamp regeneration is requested.
  • YouTube processing uses public caption tracks only; it does not download YouTube audio when captions are absent.
  • Restricted, signed, private, or expired media links may fail.
  • Sources larger than the per-item or total run download allowance are rejected before further processing.
  • Work not completed before the configured runtime allowance is stopped and completed result rows are preserved.
  • Results summarize the supplied recording and should not be treated as independently verified facts.

Troubleshooting and support

  • No transcript was produced: confirm the URL is public and returns media, RSS, TXT, JSON, SRT, or VTT without a login.
  • No timestamps or subtitles: the existing transcript is plain text. Enable accurate timestamps and provide public media if timed output is required.
  • AI unavailable: reduce the requested duration, increase the run spending limit, or retry after checking the Pricing tab.
  • Some episodes failed: inspect each dataset row's warnings and errors; successful episodes remain available.

Use the Actor's Issues tab to report a reproducible source or output problem. Do not include private media links, tokens, or transcript contents in an issue.