Podcast Transcript & Mention Extractor avatar

Podcast Transcript & Mention Extractor

Pricing

from $0.008 / episode metadata

Go to Apify Store
Podcast Transcript & Mention Extractor

Podcast Transcript & Mention Extractor

Turns podcast URLs and searches into structured episode records. It returns published episode metadata, Podcasting 2.0 people credits, publisher-provided transcripts, and timestamped literal keyword mentions when timed transcript cues are available.

Pricing

from $0.008 / episode metadata

Rating

0.0

(0)

Developer

Hypebridge

Hypebridge

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Podcast Feed Transcript & Mention Extractor

Turn direct podcast feeds and publisher episode pages into structured episode records. The Actor extracts RSS, Atom, RDF, iTunes, and Podcasting 2.0 metadata; downloads publisher-provided transcripts; and finds timestamped literal keyword mentions.

No API account or external catalog credentials are required. The Actor does not transcribe audio and does not claim to search everything spoken across all podcasts.

What data can the Actor extract?

FieldDescription
inputUrlOriginal feed or publisher-page URL
resolvedInputTypedirect_feed or publisher_episode
feedPublished feed GUID, title, URL, site, author, categories, and language
episodePublished GUID, title, page, audio, release date, duration, description, season, episode number, and image
peopleStatusWhether people came from episode tags, channel fallback, or were missing
peopleExplicit Podcasting 2.0 name, role, group, avatar, and profile/contact URL
transcriptStatusAvailable, missing, fetch failed, too large, unsupported, or parse failed
transcriptSourcesEvery transcript descriptor published for the episode
transcriptSelected source, detected format, language, and optional text or cues
keywordMentionsKeyword, source timing, cue ID, precision, context snippet, and audio fragment
coverageReasonPlain-language explanation for unavailable coverage
sourceUrlsFeed, transcript, episode, and audio source URLs
scrapedAtISO timestamp when the record was emitted

Supported inputs

  • Direct RSS, Atom, and RDF podcast feeds
  • Publisher episode pages whose HTML advertises an RSS or Atom feed and whose canonical episode URL matches exactly one feed item

Catalog and contextless media URLs are intentionally unsupported:

  • Podcast Index, Apple Podcasts, and Spotify catalog URLs
  • Search terms, people searches, and category discovery
  • Direct audio files
  • Standalone transcript files without episode context

Use the podcast publisher's RSS/Atom feed URL instead of a catalog page.

Input parameters

ParameterDescriptionDefault
startUrlsUp to 200 direct feed or publisher episode URLs[]
maxItemsGlobal dataset item cap100
keywordsUp to 100 literal transcript terms[]
maxEpisodesPerFeedNewest records accepted from one direct feed20
publishedAfterOptional ISO 8601 publication-date lower boundunset
includeFullTranscriptInclude normalized transcript textfalse
includeSegmentsInclude every normalized transcript cuefalse
maxTranscriptBytesPer-transcript decompressed byte cap5242880
maxMentionsPerEpisodeMaximum keyword matches per episode100
maxTotalTranscriptBytesGlobal decompressed transcript byte budget104857600
maxRequestsGlobal HTTP request budget2000
runTimeoutSecondsRun deadline in seconds900
maxConcurrencyGlobal concurrent request cap10
proxyConfigurationOptional publisher-host proxy configurationdisabled
debugModeStore bounded sanitized failure artifactsfalse

An empty startUrls array finishes successfully with an empty dataset. Malformed, unsupported, or unresolved individual URLs are skipped with warnings so other submitted feeds can continue.

Examples

Extract recent feed episodes

{
"startUrls": [{ "url": "https://feeds.podcastindex.org/pc20.xml" }],
"maxItems": 5,
"maxEpisodesPerFeed": 5
}

Find transcript mentions

{
"startUrls": [{ "url": "https://feeds.podcastindex.org/pc20.xml" }],
"keywords": ["Spotify", "value for value"],
"includeSegments": true,
"maxItems": 3
}

Process multiple feeds within strict budgets

{
"startUrls": [
{ "url": "https://feeds.podcastindex.org/pc20.xml" },
{ "url": "https://example.com/podcast.xml" }
],
"maxItems": 10,
"maxEpisodesPerFeed": 5,
"maxRequests": 100,
"maxTotalTranscriptBytes": 52428800
}

Output example

{
"inputUrl": "https://example.com/feed.xml",
"resolvedInputType": "direct_feed",
"feed": {
"guid": "example-podcast-guid",
"title": "Example Podcast",
"url": "https://example.com/feed.xml",
"siteUrl": "https://example.com/podcast",
"author": "Example Network",
"categories": ["Technology"],
"language": "en"
},
"episode": {
"guid": "episode-42",
"title": "A Practical Example",
"pageUrl": "https://example.com/podcast/episode-42",
"audioUrl": "https://cdn.example.com/episode-42.mp3",
"releaseDate": "2026-08-20T12:00:00.000Z",
"durationSeconds": 2700
},
"peopleStatus": "episode",
"people": [{ "name": "Alex Example", "role": "host", "group": "cast" }],
"transcriptStatus": "available",
"keywordMentions": [{
"keyword": "example",
"startTimeSeconds": 123.45,
"timestamp": "00:02:03.450",
"precision": "cue",
"snippet": "Here is a practical example for the discussion."
}],
"coverageReason": null,
"sourceUrls": {
"feed": "https://example.com/feed.xml",
"transcript": "https://example.com/episode-42.vtt",
"episode": "https://example.com/podcast/episode-42",
"audio": "https://cdn.example.com/episode-42.mp3"
},
"scrapedAt": "2026-09-01T12:00:00.000Z"
}

Transcript and mention coverage

Transcript coverage is publisher-dependent. The Actor supports VTT, SRT, JSON, HTML, and plain-text transcripts declared in Podcasting 2.0 feed metadata. Untimed transcript text can produce a literal match but cannot produce a truthful timestamp. Full transcript text and cue arrays are disabled by default.

People are returned only from explicit Podcasting 2.0 metadata; the Actor does not guess guests from titles or descriptions.

Pricing

The Actor uses pay-per-event billing and charges exactly one event per emitted episode. Episodes with a successfully normalized transcript use the transcript-enriched-episode tier; all other emitted episodes use the episode-metadata tier. Unresolved inputs, retries, and duplicates are not charged. Current event prices are shown in the Apify Console before a run starts.

Responsible use

Publishers retain rights in their feeds, transcripts, and audio. Enable full transcript redistribution only when you have a lawful basis and appropriate permission. You are responsible for complying with applicable privacy, copyright, and database laws.

Support

Use the Issues tab for bugs or feature requests and the API tab for programmatic runs.