Podcast RSS Scraper — Episodes, Audio & Transcript Links
Pricing
from $0.50 / 1,000 podcast episodes
Podcast RSS Scraper — Episodes, Audio & Transcript Links
Export podcast episodes from public RSS, Atom or Apple Podcasts show URLs: audio links, dates, durations, show notes and published transcript/chapter links. Per-episode fees and separate Apify usage apply.
Pricing
from $0.50 / 1,000 podcast episodes
Rating
0.0
(0)
Developer
Coor Yu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Podcast RSS Scraper exports episodes from public RSS/Atom feeds or Apple Podcasts show URLs: titles, dates, audio URLs, durations, show notes and published transcript/chapter links. Use it for podcast directories, episode research and content catalogs.
Metadata and links only—not transcript text. No media/transcript/chapter downloads or speech-to-text. No publisher login or paid proxy is needed; private/paywalled feeds are unsupported.
Quick start
- Replace the demo with your public feed or Apple Podcasts show URL and set a limit.
- Click Start. Open Episodes for rows and Run summary and errors for diagnostics.
- Export JSON, CSV or Excel, or read the dataset through the Apify API.
{"feedUrls": ["https://feeds.transistor.fm/build-your-saas"],"maxEpisodesPerFeed": 10,"maxEpisodes": 100,"includeDescription": true,"sortOrder": "newest"}
{} selects the paid Build Your SaaS demo, requesting up to 10 episodes. 10 saved episodes = $0.005 in event fees, plus Apify usage. Results/tags depend on the current feed; no affiliation with sample publishers is implied.
Apple Podcasts show input
{"feedUrls": ["https://podcasts.apple.com/us/podcast/planet-money/id290783428"],"maxEpisodesPerFeed": 5}
Apple Podcasts/iTunes links resolve via Apple's public lookup API. Apple episode links select the show's feed, not one episode. Ordinary websites, Spotify and YouTube are unsupported inputs; no show search or website feed discovery is performed.
Date and keyword filtering
{"feedUrls": ["https://feeds.twit.tv/sn.xml"],"publishedAfter": "2026-01-01","keywords": ["security", "privacy"],"maxEpisodesPerFeed": 20,"sortOrder": "newest"}
Dates are inclusive UTC calendar dates; unknown dates are excluded when either bound is set. Any keyword can match a case-insensitive substring in the title or included notes. includeDescription: false searches titles only. Notes are truncated before matching.
Filters/sorting run before the per-feed limit. Feeds run in input order; sorting is per feed, not global. Unknown dates sort last.
Input reference
| Field | Default | Purpose |
|---|---|---|
feedUrls | Demo feed | 1–20 absolute public HTTPS RSS, Atom or Apple Podcasts show URLs |
maxEpisodesPerFeed | 10 | Matching episodes per feed, 1–5,000 |
maxEpisodes | 200 | Global saved-episode cap, 1–10,000 |
includeDescription | true | Plain-text show notes, up to 20,000 characters |
keywords | [] | Up to 20 nonempty keywords, each at most 100 characters; match any |
publishedAfter | unset | Inclusive earliest date, YYYY-MM-DD |
publishedBefore | unset | Inclusive latest date, YYYY-MM-DD |
sortOrder | newest | newest, oldest or publisher feed order |
failOnFeedError | false | Stop and fail at the first feed error |
Duplicate input/final feed URLs are skipped. Within a feed, repeated GUIDs or selected media URLs are deduplicated. Across inputs, identical media URLs or GUID + podcast-website pairs are not saved twice; first-source metadata wins. This cannot identify every possible duplicate. New runs bill saved rows again.
Output and billing unit
One dataset row is one episode with a title and supported media enclosure. Items missing either are skipped; error and summary objects are not episode rows.
| Fields | Meaning |
|---|---|
id, guid | Hash of final feed URL + GUID (or media URL); publisher GUID |
podcastTitle, podcastAuthor, podcastUrl, feedUrl | Show metadata and feed URL |
sourceUrl, applePodcastId | Original input and Apple show ID, if applicable |
title, episodeUrl, publishedAt, updatedAt | Title/page; valid dates normalized to ISO timestamps |
audioUrl, mediaType, audioLengthBytes, enclosures | Published media links/types and declared sizes |
duration, durationSeconds | Original duration and recognized duration converted to integer seconds |
season, episodeNumber, episodeType, explicit | Publisher episode metadata when available |
description, descriptionTruncated | Plain-text notes and truncation indicator |
transcriptUrl, transcriptLinks, chaptersLinks | First/all published transcript links and external chapter links |
imageUrl, language, categories, scrapedAt | Artwork, show metadata and collection time |
Missing values stay null or empty arrays. audioUrl prefers audio but can be video. Sizes/durations are publisher-declared, not measured. Linked files/tracking redirects are not checked for playability. IDs can change with the final feed URL or GUID.
OUTPUT contains per-feed counts, invalid/duplicate items, warnings, errors and stop reasons. JSON preserves nested arrays; CSV/Excel may stringify them.
Current pricing
Current USD rates; see the Pricing tab and run Usage report.
| Charge | Current rate |
|---|---|
apify-default-dataset-item | $0.0005 per saved episode — $0.50 per 1,000 |
| Actor startup event | None configured |
| Published transcript/chapter links and show notes | Included in the episode event |
| Apify compute, transfer and storage | Billed separately to the running user at their Apify plan rates |
This is pay per event + platform usage, not an all-inclusive total or zero-cost demo. Saved rows are billed automatically, without manual duplicate charges. No paid upstream Actor, browser, proxy or data API is used; Apple inputs use its public lookup.
Duplicates, exclusions and failed/empty sources incur no episode fee, but usage can cost money. Saved rows remain billable after later failure. Event allowance is checked before each source/batch. maxEpisodes and the event-charge budget limit episode events, not platform usage, and cannot guarantee completeness.
Limits and reliability
- Public HTTPS/443 only, without URL credentials. No private-feed authentication/cookie/token field. Literal-IP hosts, private/local DNS and unsafe redirects are rejected.
- RSS 2.0/Atom media enclosures, namespace aliases and inherited
xml:baseare supported. Atom text/HTML notes work; embedded XHTML notes are not extracted. - Invalid XML, HTML pages, custom entities/document types and nonempty feeds without valid enclosures fail. Empty feeds or zero filter matches can succeed without rows.
- Safety limits: 8 MiB decoded per HTTP response, 10,000 source items and 50,000 opening tags per feed, 20 input feeds and 80 total HTTP requests.
- Fixed 256 MB memory; two-minute collection deadline; 180-second default run timeout. No new processing/batch starts after the deadline; in-flight calls may finish later. One HTTP 429/502/503/504 retry, without access-control bypass.
- Source failures normally allow other feeds to continue; all feeds failing fails the run.
failOnFeedError: truestops at the first error; saved rows stay billable.
Only episodes currently in the feed are accessible; publishers may omit older entries. Check OUTPUT for limits/errors and follow publisher terms/copyright. No redistribution rights are granted.
FAQ
Can I get podcast transcripts?
You get published Podcasting 2.0 transcript links when present—not transcript text or generated transcripts. Chapter links likewise require publisher tags.
Can I retrieve every historical episode?
Only feed-visible episodes. oldest sorts them; it cannot recover an omitted archive.
API usage and related Actor
Use funny_ground/podcast-rss-episodes-scraper with the same JSON via Apify API/SDK. Read its default dataset and key-value store OUTPUT. API calls require your private Apify token.
For website contacts and social links, use Website Contact & Social Scraper separately from RSS export.