Podcast RSS Scraper — Episodes, Audio & Transcript Links avatar

Podcast RSS Scraper — Episodes, Audio & Transcript Links

Pricing

from $0.50 / 1,000 podcast episodes

Go to Apify Store
Podcast RSS Scraper — Episodes, Audio & Transcript Links

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

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

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

  1. Replace the demo with your public feed or Apple Podcasts show URL and set a limit.
  2. Click Start. Open Episodes for rows and Run summary and errors for diagnostics.
  3. 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

FieldDefaultPurpose
feedUrlsDemo feed1–20 absolute public HTTPS RSS, Atom or Apple Podcasts show URLs
maxEpisodesPerFeed10Matching episodes per feed, 1–5,000
maxEpisodes200Global saved-episode cap, 1–10,000
includeDescriptiontruePlain-text show notes, up to 20,000 characters
keywords[]Up to 20 nonempty keywords, each at most 100 characters; match any
publishedAfterunsetInclusive earliest date, YYYY-MM-DD
publishedBeforeunsetInclusive latest date, YYYY-MM-DD
sortOrdernewestnewest, oldest or publisher feed order
failOnFeedErrorfalseStop 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.

FieldsMeaning
id, guidHash of final feed URL + GUID (or media URL); publisher GUID
podcastTitle, podcastAuthor, podcastUrl, feedUrlShow metadata and feed URL
sourceUrl, applePodcastIdOriginal input and Apple show ID, if applicable
title, episodeUrl, publishedAt, updatedAtTitle/page; valid dates normalized to ISO timestamps
audioUrl, mediaType, audioLengthBytes, enclosuresPublished media links/types and declared sizes
duration, durationSecondsOriginal duration and recognized duration converted to integer seconds
season, episodeNumber, episodeType, explicitPublisher episode metadata when available
description, descriptionTruncatedPlain-text notes and truncation indicator
transcriptUrl, transcriptLinks, chaptersLinksFirst/all published transcript links and external chapter links
imageUrl, language, categories, scrapedAtArtwork, 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.

ChargeCurrent rate
apify-default-dataset-item$0.0005 per saved episode — $0.50 per 1,000
Actor startup eventNone configured
Published transcript/chapter links and show notesIncluded in the episode event
Apify compute, transfer and storageBilled 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:base are 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: true stops 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.

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.