Podcast Transcript & Mention Extractor
Pricing
from $0.008 / episode metadata
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
Maintained by CommunityActor 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?
| Field | Description |
|---|---|
inputUrl | Original feed or publisher-page URL |
resolvedInputType | direct_feed or publisher_episode |
feed | Published feed GUID, title, URL, site, author, categories, and language |
episode | Published GUID, title, page, audio, release date, duration, description, season, episode number, and image |
peopleStatus | Whether people came from episode tags, channel fallback, or were missing |
people | Explicit Podcasting 2.0 name, role, group, avatar, and profile/contact URL |
transcriptStatus | Available, missing, fetch failed, too large, unsupported, or parse failed |
transcriptSources | Every transcript descriptor published for the episode |
transcript | Selected source, detected format, language, and optional text or cues |
keywordMentions | Keyword, source timing, cue ID, precision, context snippet, and audio fragment |
coverageReason | Plain-language explanation for unavailable coverage |
sourceUrls | Feed, transcript, episode, and audio source URLs |
scrapedAt | ISO 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
| Parameter | Description | Default |
|---|---|---|
startUrls | Up to 200 direct feed or publisher episode URLs | [] |
maxItems | Global dataset item cap | 100 |
keywords | Up to 100 literal transcript terms | [] |
maxEpisodesPerFeed | Newest records accepted from one direct feed | 20 |
publishedAfter | Optional ISO 8601 publication-date lower bound | unset |
includeFullTranscript | Include normalized transcript text | false |
includeSegments | Include every normalized transcript cue | false |
maxTranscriptBytes | Per-transcript decompressed byte cap | 5242880 |
maxMentionsPerEpisode | Maximum keyword matches per episode | 100 |
maxTotalTranscriptBytes | Global decompressed transcript byte budget | 104857600 |
maxRequests | Global HTTP request budget | 2000 |
runTimeoutSeconds | Run deadline in seconds | 900 |
maxConcurrency | Global concurrent request cap | 10 |
proxyConfiguration | Optional publisher-host proxy configuration | disabled |
debugMode | Store bounded sanitized failure artifacts | false |
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.