Podcast Directory Scraper avatar

Podcast Directory Scraper

Pricing

from $1.29 / 1,000 podcasts

Go to Apify Store
Podcast Directory Scraper

Podcast Directory Scraper

Search Apple Podcasts and Spotify, then extract show metadata plus host contact details (owner email, website) from RSS feeds. Lead-scored and sorted for outreach. Export JSON, CSV, Excel.

Pricing

from $1.29 / 1,000 podcasts

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Podcast Directory Scraper

Podcast Directory Scraper searches Apple Podcasts and Spotify by keyword and returns structured podcast data with host contact details — owner email, website, and RSS feed — for every show it finds. Use it to build podcast outreach lists, guest-booking pipelines, and advertising prospect databases in minutes instead of days.

Run any keyword against Apple Podcasts and Spotify, pull each show's RSS feed for the host email, website, categories, publishing cadence, and recent episodes, then get every podcast lead-scored 0–100 and sorted best-first — filterable by activity, email presence, and score.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/podcast-directory-scraper — searches Apple Podcasts and Spotify by keyword and extracts podcast metadata + host contact details (owner email, website, RSS feed) from each show's feed, then lead-scores and sorts the results for outreach. Input: {"searchTerms": ["B2B marketing", "sales enablement"], "maxResults": 50, "country": "us", "includeEpisodes": true, "maxEpisodesPerShow": 10, "activeOnly": false, "requireEmail": false, "minLeadScore": 60, "spotifyClientId": "optional", "spotifyClientSecret": "optional"}. Only searchTerms is required. Run via ApifyClient("YOUR_TOKEN").actor("parsebird/podcast-directory-scraper").call(run_input=input). Output per podcast: podcastId, title, author, description, categories, language, episodeCount, lastEpisodeDate, episodeFrequency, isActive, applePodcastsUrl, spotifyUrl, feedUrl, websiteUrl, artworkUrl, ownerName, ownerEmail, copyright, source, leadScore (0-100), dataQuality (high/medium/low), hasEmail, hasWebsite, episodes[], searchTerm, scrapedAt. Get an API token at https://console.apify.com/account#/integrations. Full API spec: https://apify.com/parsebird/podcast-directory-scraper/api

What does Podcast Directory Scraper do?

Podcast Directory Scraper is a podcast scraper and host contact finder that turns a list of keywords into a clean, deduplicated directory of podcasts with the data you need to reach the people who make them.

For each search term it runs a separate query against the iTunes Search API and, when you supply free Spotify API credentials, against the Spotify Web API too. Every discovered show is then enriched from its public RSS feed.

🔍 Dual-platform podcast search — Discover shows on Apple Podcasts and Spotify from the same run. Overlapping results are merged and marked source: "both".

📧 Host contact extraction — Pull the owner email and website from the RSS feed's itunes:owner and channel tags. This is the contact information podcasters publish for booking, sponsorship, and press.

📈 Lead scoring — Every podcast gets a leadScore from 0 to 100 based on contact channels, recent activity, and publishing cadence. Results are sorted best-first so your outreach list is ready to use.

🗓️ Activity and cadence detection — Know whether a show is still publishing (isActive) and how often it releases (episodeFrequency: daily, weekly, biweekly, monthly, and more).

🎙️ Recent episode listings — Optionally attach the latest episodes per show with titles, descriptions, durations, audio URLs, and episode numbers.

🧹 Automatic deduplication — Add "AI", "artificial intelligence", and "machine learning" as separate terms; each podcast appears once, tagged with the term that first matched it.

Why scrape podcast directories?

  • Build podcast outreach lists for PR, guest booking, and thought-leadership campaigns
  • Find sponsorship and advertising inventory in a target niche
  • Track competitor podcast appearances and the shows in your category
  • Enrich a CRM with podcast host emails, websites, and show metadata
  • Monitor a topic for new and newly active shows on a schedule

What data can you extract with Podcast Directory Scraper?

FieldTypeDescription
podcastIdnumber / stringApple Podcasts collection ID, or Spotify show ID for Spotify-only results
titlestringPodcast title (RSS value preferred over iTunes)
authorstringAuthor or creator name
descriptionstring | nullFull show description, HTML stripped and entities decoded
categoriesstring[]Show categories from itunes:category (iTunes genres as fallback, "Podcasts" excluded)
languagestring | nullLanguage code from RSS (e.g. en, de, ja)
episodeCountnumber | nullTotal episodes from iTunes trackCount or Spotify total_episodes
lastEpisodeDatestring | nullMost recent episode publish date (ISO 8601)
episodeFrequencystring | nulldaily, multiple-per-week, weekly, biweekly, monthly, irregular, infrequent, or null
isActiveboolean | nulltrue if an episode was published in the last 90 days; null when the last date is unknown
applePodcastsUrlstring | nullApple Podcasts show page URL
spotifyUrlstring | nullSpotify show URL (when Spotify is enabled and the show is matched)
feedUrlstring | nullRSS feed URL from iTunes
websiteUrlstring | nullPodcast website from RSS channel.link
artworkUrlstring | nullCover art URL (600px preferred)
ownerNamestring | nullOwner name from RSS itunes:owner > itunes:name
ownerEmailstring | nullOwner email from RSS itunes:owner > itunes:email (platform relay addresses excluded)
copyrightstring | nullCopyright notice from RSS
sourcestringWhere the show was found: apple, spotify, or both
leadScorenumber | nullOutreach-quality score 0–100 (higher = more contactable). Results sorted by this
dataQualitystring | nullhigh (email + website), medium (one), low (metadata only)
hasEmailboolean | nulltrue when a host/owner email was extracted
hasWebsiteboolean | nulltrue when a podcast website was extracted
episodesobject[]Recent episodes (empty when includeEpisodes is false)
episodes[].titlestringEpisode title
episodes[].descriptionstring | nullEpisode description, HTML stripped
episodes[].publishDatestring | nullPublish date (ISO 8601)
episodes[].durationstring | nullDuration as HH:MM:SS
episodes[].audioUrlstring | nullAudio file URL from the RSS enclosure
episodes[].episodeNumbernumber | nullEpisode number from itunes:episode
episodes[].seasonNumbernumber | nullSeason number from itunes:season
searchTermstringThe search term that first matched this podcast
scrapedAtstringISO 8601 timestamp when the record was processed

How to use Podcast Directory Scraper

  1. Open Podcast Directory Scraper and click Try for free.
  2. Add one or more keywords to Search Terms (for example B2B SaaS marketing, revenue operations).
  3. Set Max Results Per Search Term — start with 50; raise to 200 only for broad categories.
  4. (Optional) Turn on Only shows with a host email or set a Minimum Lead Score to keep only the most contactable shows.
  5. (Optional) Paste a Spotify Client ID and Secret — create a free app at the Spotify Developer Dashboard — to add Spotify search and Spotify show links.
  6. Click Start. When the run finishes, open the Storage / Dataset tab and export as JSON, CSV, Excel, or HTML, or pull the data via API.

Input parameters

ParameterTypeRequiredDefaultDescription
searchTermsarrayYesKeywords to search on Apple Podcasts and Spotify. Each term runs a separate query
maxResultsintegerNo50Max podcasts per search term. Apple caps a query at 200; Spotify paginates in batches of 50 to the same cap
countrystringNousTwo-letter iTunes Store country code (e.g. gb, de, au, jp). Invalid codes fall back to us
includeEpisodesbooleanNotrueAttach recent episode listings per show. Disable for faster runs when only show metadata is needed
maxEpisodesPerShowintegerNo10Max recent episodes per podcast (0–1000). Set to 0 for all episodes available in the feed
activeOnlybooleanNofalseOnly return shows that published within the last 90 days. Shows whose feed does not parse are excluded
requireEmailbooleanNofalseOnly return shows that expose a host email in their RSS feed
minLeadScoreintegerNoOnly return shows scoring at or above this value (0–100)
spotifyClientIdstringNoSpotify app Client ID. Free from the Spotify Developer Dashboard. Enables dual-platform search
spotifyClientSecretstringNoSpotify app Client Secret. Required together with the Client ID
proxyConfigurationobjectNoOptional Apify Proxy for RSS feed fetches. Only enable if you see blocked feeds

Output example

{
"podcastId": 1665570452,
"title": "The B2B Marketing Gap Podcast",
"author": "B2B Jade",
"description": "Helping B2B marketing managers learn how to create a b2b marketing strategy without the overwhelm...",
"categories": ["Business", "Marketing"],
"language": "en",
"episodeCount": 67,
"lastEpisodeDate": "2026-07-09",
"episodeFrequency": "weekly",
"isActive": true,
"applePodcastsUrl": "https://podcasts.apple.com/us/podcast/the-b2b-marketing-gap-podcast/id1665570452?uo=4",
"spotifyUrl": null,
"feedUrl": "https://anchor.fm/s/9e17d6a0/podcast/rss",
"websiteUrl": "https://www.b2bjade.com",
"artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/.../600x600bb.jpg",
"ownerName": "B2B Jade",
"ownerEmail": "jade@tambinimarketing.co.uk",
"copyright": "B2B Jade",
"source": "apple",
"leadScore": 100,
"dataQuality": "high",
"hasEmail": true,
"hasWebsite": true,
"episodes": [
{
"title": "67. The Right Number of Marketing Strategies (It's Not What You Think)",
"description": "If you're a B2B marketer running ten different strategies at once...",
"publishDate": "2026-07-09",
"duration": "00:21:58",
"audioUrl": "https://anchor.fm/s/9e17d6a0/podcast/play/122604945/...mp3",
"episodeNumber": null,
"seasonNumber": null
}
],
"searchTerm": "B2B marketing",
"scrapedAt": "2026-09-08T09:14:37.000Z"
}

Download results in JSON, CSV, Excel, or HTML from the Apify Console or via the API.

How lead scoring works

Every podcast is scored from 0 to 100:

SignalPoints
Host / owner email present+60
Podcast website present+25
Published an episode in the last 90 days+10
Regular cadence (daily, multiple-per-week, weekly, or biweekly)+5

A score of 60 means the show has a host email you can contact directly. A score of 80+ means it has both a host email and a website. dataQuality summarizes the same idea as a tier: high (email + website), medium (one of them), low (metadata only). Results are returned sorted by leadScore, highest first.

Use cases

  • 📨 Podcast PR and outreach — Build a targeted list of shows and host emails for pitching guests, stories, or products
  • 🎤 Guest booking services — Find active shows in a niche, ranked by how reachable the host is
  • 💰 Podcast advertising — Map sponsorable inventory in a category with audience-adjacent metadata
  • 🧭 Competitive intelligence — Track which podcasts cover your space and how often they publish
  • 🗃️ CRM enrichment — Add podcast host emails, websites, and RSS feeds to existing records
  • 📡 Topic monitoring — Schedule a daily or weekly run to catch new and newly active shows on a keyword

How it works

  1. Search — Each search term runs a separate iTunes Search API query (media=podcast), plus a Spotify Web API query when credentials are provided.
  2. Deduplicate — Apple shows are keyed by collection ID; the first search term that matched a show is recorded as its searchTerm.
  3. Enrich from RSS — Every show's RSS feed is fetched and parsed for owner name, owner email, website, categories, language, copyright, and recent episodes.
  4. Match Spotify — Spotify shows are matched to Apple shows by normalized title; matches get a spotifyUrl and source: "both". Unmatched Spotify shows are returned on their own with source: "spotify".
  5. Score and analyze — Publishing cadence is derived from recent episode dates, isActive from the last episode date, and leadScore / dataQuality from the contact and activity signals.
  6. Filter and sortactiveOnly, requireEmail, and minLeadScore are applied, then records are sorted by leadScore descending.
  7. Output — Each podcast is pushed to the dataset as one record.

The actor uses lightweight httpx requests and stays well under 512 MB of memory — no browser required.

How much does it cost to scrape podcast contact details?

Podcast Directory Scraper uses pay-per-event pricing. Platform compute is included in the event prices.

EventWhat it charges forFreeBronzeSilverGold
podcast-scrapedEach podcast pushed to the dataset$1.99 / 1,000$1.79 / 1,000$1.59 / 1,000$1.29 / 1,000
contact-scrapedEach podcast that has a host email$29 / 1,000$24 / 1,000$19 / 1,000$14 / 1,000

Example (Free plan): a run that returns 300 podcasts, 120 of them with a host email, costs about 300 × $0.00199 + 120 × $0.029 ≈ $4.08. Use requireEmail or minLeadScore to pay for contacts only when a show clears your bar.

You can run Podcast Directory Scraper with the free monthly usage credits included on every Apify plan.

Integrations and API access

Podcast Directory Scraper works with the full Apify platform:

Python example

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run_input = {
"searchTerms": ["B2B SaaS marketing", "revenue operations"],
"maxResults": 100,
"country": "us",
"activeOnly": True,
"requireEmail": True,
"includeEpisodes": False,
}
run = client.actor("parsebird/podcast-directory-scraper").call(run_input=run_input)
for podcast in client.dataset(run["defaultDatasetId"]).iterate_items():
print(podcast["leadScore"], podcast["title"], podcast["ownerEmail"])

JavaScript example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const input = {
searchTerms: ['true crime', 'investigative journalism'],
maxResults: 200,
country: 'us',
includeEpisodes: true,
maxEpisodesPerShow: 5,
activeOnly: true,
};
const run = await client.actor('parsebird/podcast-directory-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((p) => console.log(`${p.leadScore}\t${p.title}\t${p.ownerEmail ?? ''}`));

Pricing

EventPrice per event (Free)Price per 1,000 (Free)
podcast-scraped$0.00199$1.99
contact-scraped$0.029$29.00

podcast-scraped is charged once per podcast pushed to the dataset. contact-scraped is charged once more for each podcast that includes a host email. Bronze, Silver, and Gold plans pay less per event — see the cost section above.

FAQ

Do I need a Spotify account? No. Apple Podcasts search works with no credentials. Add a free Spotify Client ID and Secret from the Spotify Developer Dashboard only if you want Spotify search results and Spotify show links.

Where do the host emails come from? From each podcast's public RSS feed — the itunes:owner block that podcast hosting platforms require. Automated relay addresses from hosting platforms are filtered out so contact-scraped only counts real contact emails.

How many podcasts can one run return? Up to 200 per search term (the iTunes and Spotify caps), before deduplication. Use several related terms to cover a niche and let the actor merge the overlap.

What does episodeFrequency mean? It is the publishing cadence inferred from the gaps between recent episodes: daily, multiple-per-week, weekly, biweekly, monthly, irregular, infrequent, or null when there are too few dated episodes to tell.

Why is isActive sometimes null? When the RSS feed cannot be fetched or parsed, the last episode date is unknown, so activity cannot be confirmed. With activeOnly enabled, those shows are excluded.

Can I get only shows worth contacting? Yes. Set requireEmail: true to keep shows with a host email, or minLeadScore: 60 (email) / minLeadScore: 80 (email + website). Combine with activeOnly: true for shows that are still publishing.

Can I schedule recurring runs? Yes. Use Apify's scheduling to run daily or weekly and combine it with webhooks to push new shows to your CRM automatically.

Something looks wrong — where do I report it? Open the Issues tab on the Actor page. Feature requests are welcome there too.

Podcast Directory Scraper collects data that is already public: Apple Podcasts and Spotify search listings, and the RSS feeds that podcasters publish specifically so directories and apps can read them. The itunes:owner email exists so that hosts can be contacted about their show.

Scraping publicly available data is generally legal, as reaffirmed by the US Ninth Circuit in hiQ Labs v. LinkedIn. Still, make sure your use complies with applicable data-protection law (GDPR, CCPA), anti-spam rules (CAN-SPAM, PECR), and each platform's Terms of Service. See Apify's guide to the legality of web scraping.