Podcast Directory Scraper
Search Apple Podcasts by keyword and extract full show details: host emails, owner contacts, website URLs, RSS feeds, episode listings, publishing frequency, and active status. Supports multiple search terms with deduplication.
Maintenance Pulse
92/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| podcast-scraped | Charged per podcast scraped. Includes show metadata, RSS feed analysis, episode frequency detection, and social profile extraction. | $0.05 |
Example: 100 events = $5.00 · 1,000 events = $50.00
Documentation
Podcast Directory Scraper searches Apple Podcasts and Spotify by keyword and returns every show's host contact email, website URL, publishing frequency, episode listings, and active status — in one structured dataset. PR agencies, podcast booking services, and B2B marketers use it to build targeted outreach lists in minutes instead of days.
The actor queries the iTunes Search API for podcast discovery, then fetches and parses each show's RSS feed to extract the owner name and email from the itunes:owner tag — contact data the public Apple Podcasts interface never shows. Add optional Spotify credentials and the actor cross-searches both platforms, deduplicates by normalized title, and merges records for shows listed on both.
What data can you extract?
| Data Point | Source | Example |
|---|---|---|
| 📧 Owner email | RSS itunes:owner | [email protected] |
| 👤 Owner name | RSS itunes:owner | Verdant Media Productions |
| 🌐 Website URL | RSS channel.link | https://www.thegrowthpodcast.com |
| 🎙️ Podcast title | RSS / iTunes | The Growth Podcast |
| ✍️ Author | RSS / iTunes | Sarah Chen |
| 📝 Description | RSS | Full show description text |
| 🗂️ Categories | RSS / iTunes | ["Business", "Entrepreneurship"] |
| 📅 Last episode date | RSS | 2026-02-28 |
| 🔁 Publishing frequency | Calculated | weekly |
| ✅ Active status | Calculated | true |
| 🎵 Episode count | RSS / iTunes | 312 |
| 🍎 Apple Podcasts URL | iTunes | Full show link |
| 🎧 Spotify URL | Spotify API | Full show link |
| 🔗 RSS feed URL | iTunes | Direct feed link |
| 🖼️ Artwork URL | iTunes | 600px cover image |
| 📻 Episode listings | RSS | Title, date, duration, audio URL |
Why use Podcast Directory Scraper?
Building a podcast outreach list manually means searching Apple Podcasts one keyword at a time, clicking into each show page, hunting for a contact email that often is not there, then manually copying website URLs and checking when the show last published. A list of 200 targeted podcasts takes a researcher 6-8 hours. With stale data, you still end up emailing dead shows.
This actor automates the entire pipeline — keyword search, RSS enrichment, contact extraction, frequency calculation, and active filtering — in a single run under 5 minutes.
- Scheduling — run weekly to keep your podcast list current as new shows launch for your target keywords
- API access — trigger runs from Python, JavaScript, or any HTTP client to feed your CRM or outreach tool automatically
- Proxy rotation — distribute API requests across Apify's proxy infrastructure to avoid rate limits on large batches
- Monitoring — get Slack or email alerts when a run produces fewer results than expected
- Integrations — connect to Zapier, Make, Google Sheets, HubSpot, or webhooks to route leads into your existing workflow
Features
- Dual-platform search — queries the iTunes Search API across 175+ country storefronts (up to 200 results per keyword) and optionally the Spotify Web API with pagination in batches of 50 per request
- RSS contact extraction — fetches every podcast's RSS feed and parses the
itunes:ownerblock to extract the owner name and email, which the public podcast directory does not expose - 10-concurrent RSS fetching — RSS feeds are pre-fetched in parallel batches of 10 to minimize total run time on large result sets
- Owner email coverage — expect 50-80% email coverage on professionally produced shows; the field is
nullfor shows that omit theitunes:ownertag - 7-tier frequency calculation — analyzes publish dates of up to 10 recent episodes, calculates average gap, and returns one of:
daily,multiple-per-week,weekly,biweekly,monthly,irregular, orinfrequent - Active status detection — flags shows that published within the last 90 days; the
activeOnlyfilter removes dead shows before they reach your dataset - Cross-platform deduplication — deduplicates Apple results by
collectionIdacross all search terms; cross-deduplicates Apple and Spotify results by normalized title (lowercased, stripped of common suffixes like "— a marketing podcast", non-alphanumeric characters removed) - Spotify-only results — podcasts found on Spotify but not Apple are included with available metadata (title, publisher, description, episode count, Spotify URL)
- Episode listings — all available episodes per show with title, description, publish date, duration, audio URL, episode number, and season number
- 10 MB RSS size guard — streams RSS feeds and enforces a 10 MB limit to skip oversized feeds without hanging the run
- Rate limit resilience — 3-second delay between iTunes API calls, automatic 10-second backoff on HTTP 429, up to 3 retries per request; Spotify respects the
Retry-Afterresponse header - Multi-keyword deduplication — run 10 search terms in one job; the actor outputs each show once, attributed to the first matching term
- Spending limit enforcement — pay-per-event billing stops the run cleanly when your configured budget is reached, with no partial charges
Use cases for podcast contact data
Podcast booking and guest placement
Podcast booking agencies search for shows in their client's niche, extract owner emails and website URLs, filter to active weekly or biweekly shows, and feed results into outreach sequences. This actor replaces manual directory searches and gives booking teams a structured dataset they can sort, score, and load into their CRM in one step.
PR agency media outreach
PR agencies managing brand announcements or thought leadership campaigns need to pitch podcast hosts alongside journalists. This actor lets a PR team find every active podcast covering a topic, extract host contact emails, and route them to their media outreach tool — without a Podchaser subscription or days of manual research.
Podcast sponsorship prospecting
Brands and media buyers looking for podcast sponsorship opportunities need shows with consistent publishing frequency and active audiences. The episodeFrequency and isActive fields let you filter immediately to weekly-or-better shows that are still producing. The episodeCount field signals audience tenure.
Competitive media intelligence
Analysts tracking which podcasts interview competitors' executives, cover competitor products, or dominate a category can run keyword searches and monitor the landscape over time. Schedule the actor weekly to catch new shows entering the space.
Publisher and content syndication research
Publishers looking to syndicate content or co-produce episodes need RSS feed URLs and direct website links. This actor provides both in bulk, with episode-level metadata to assess content fit before reaching out.
Talent and speaker sourcing
Recruiters and speaker bureaus search podcast directories to find domain experts who host shows in their target vertical. The author, ownerName, and websiteUrl fields give enough to build a profile and initiate contact.
How to search podcast directories and extract contact data
- Enter your search terms — Type keywords that describe your target niche: "B2B SaaS marketing", "cybersecurity news", "climate tech". You can add multiple terms at once; results are deduplicated automatically.
- Configure filters — Set
activeOnlytotrueto skip shows that have stopped publishing. LeavemaxResultsat 50 to start; raise it to 200 for comprehensive coverage of a category. - Click Start and wait — The actor takes about 1-3 minutes for 50 podcasts across 3 keywords. A 200-result run with 5 keywords takes about 5-8 minutes.
- Download results — Go to the Dataset tab and export as CSV for outreach tools, JSON for CRM import, or Excel for team collaboration.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerms | String[] | Yes | — | Keywords to search on Apple Podcasts. Each term runs a separate query. Example: ["B2B marketing", "sales enablement"] |
maxResults | Integer | No | 50 | Max podcasts returned per search term. Apple limits to 200 per query |
country | String | No | "us" | Two-letter country code for the iTunes Store (e.g., "gb", "de", "au", "jp") |
includeEpisodes | Boolean | No | true | Include recent episode listings per show. Disable for faster runs when only show metadata is needed |
maxEpisodesPerShow | Integer | No | 10 | Max recent episodes per podcast. Set to 0 for all available episodes (up to 1,000) |
activeOnly | Boolean | No | false | Only return shows that published an episode within the last 90 days |
spotifyClientId | String | No | — | Your Spotify app Client ID. Get one free at https://developer.spotify.com/dashboard. Enables Spotify search alongside Apple |
spotifyClientSecret | String | No | — | Your Spotify app Client Secret. Required together with Client ID |
proxyConfiguration | Object | No | Apify Proxy | Proxy settings for API and RSS requests |
Input examples
PR agency podcast outreach list:
{
"searchTerms": ["B2B SaaS marketing", "sales enablement", "revenue operations"],
"maxResults": 100,
"country": "us",
"activeOnly": true,
"includeEpisodes": false
}
Podcast booking service — comprehensive niche search with Spotify:
{
"searchTerms": ["true crime", "investigative journalism"],
"maxResults": 200,
"country": "us",
"includeEpisodes": true,
"maxEpisodesPerShow": 5,
"activeOnly": true,
"spotifyClientId": "your_client_id_here",
"spotifyClientSecret": "your_client_secret_here"
}
Quick test — 5 results to verify output structure:
{
"searchTerms": ["climate tech"],
"maxResults": 5,
"includeEpisodes": true,
"maxEpisodesPerShow": 3
}
Input tips
- Be specific with keywords — "fintech regulation" finds better-targeted shows than "finance". Narrow terms yield higher email coverage because the shows are more professionally produced.
- Use synonyms as separate terms — add "artificial intelligence", "AI", and "machine learning" as three separate entries. The actor deduplicates the overlapping results automatically.
- Disable episodes for outreach runs — set
includeEpisodestofalsewhen you only need host contacts and show metadata. This halves output size and speeds up export. - Start with
maxResults: 50— covers most niches well. Raise to 200 only for broad categories like "business" or "technology" where you want exhaustive coverage. - Try local market codes —
"gb"surfaces UK shows not prominent in the US store,"au"for Australian content,"de"for German-language podcasts.
Output example
{
"podcastId": 1482738706,
"title": "The Revenue Engine",
"author": "Pinnacle Growth Media",
"description": "Weekly conversations with B2B revenue leaders on scaling demand generation, pipeline velocity, and go-to-market strategy for SaaS companies above $5M ARR.",
"categories": ["Business", "Entrepreneurship", "Marketing"],
"language": "en",
"episodeCount": 183,
"lastEpisodeDate": "2026-03-12",
"episodeFrequency": "weekly",
"isActive": true,
"applePodcastsUrl": "https://podcasts.apple.com/us/podcast/the-revenue-engine/id1482738706",
"spotifyUrl": "https://open.spotify.com/show/4vWxHKnOp1bSqmEnLv29Kh",
"feedUrl": "https://feeds.pinnaclegrowth.com/the-revenue-engine.xml",
"websiteUrl": "https://www.revenueenginepodcast.com",
"artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts116/v4/revenue-engine-600x600.jpg",
"ownerName": "Pinnacle Growth Media LLC",
"ownerEmail": "[email protected]",
"copyright": "2026 Pinnacle Growth Media LLC",
"source": "both",
"episodes": [
{
"title": "How Aethon Labs Hit $40M ARR Without a Field Sales Team",
"description": "This week we sit down with Marcus Webb, VP Revenue at Aethon Labs, to break down their product-led growth motion...",
"publishDate": "2026-03-12",
"duration": "00:47:22",
"audioUrl": "https://media.pinnaclegrowth.com/revenue-engine/ep183.mp3",
"episodeNumber": 183,
"seasonNumber": 4
}
],
"searchTerm": "B2B SaaS marketing",
"scrapedAt": "2026-03-19T09:14:37.000Z"
}
Output fields
| Field | Type | Description |
|---|---|---|
podcastId | Number / String | Apple Podcasts collection ID, or Spotify show ID for Spotify-only results |
title | String | Podcast title (RSS value takes priority over iTunes) |
author | String | Author or creator name |
description | String | null | Full show description from RSS description or itunes:summary |
categories | String[] | Show categories (RSS itunes:category takes priority; iTunes genres as fallback) |
language | String | null | Language code from RSS (e.g., "en", "de", "ja") |
episodeCount | Number | Total episode count from iTunes or RSS <item> count |
lastEpisodeDate | String | null | Most recent episode publish date in YYYY-MM-DD format |
episodeFrequency | String | null | Publishing cadence: daily, multiple-per-week, weekly, biweekly, monthly, irregular, infrequent, or null |
isActive | Boolean | true if a new episode was published within the last 90 days |
applePodcastsUrl | String | null | Apple Podcasts show page URL (null for Spotify-only results) |
spotifyUrl | String | null | Spotify show URL (null if Spotify not enabled or show not on Spotify) |
source | String | Where the show was found: "apple", "spotify", or "both" |
feedUrl | String | null | RSS feed URL from iTunes |
websiteUrl | String | null | Podcast website URL from RSS channel.link |
artworkUrl | String | Cover art URL (600px preferred, 100px fallback) |
ownerName | String | null | Owner name from RSS itunes:owner > itunes:name |
ownerEmail | String | null | Owner email from RSS itunes:owner > itunes:email |
copyright | String | null | Copyright notice from RSS |
episodes | Object[] | Recent episode list (empty array when includeEpisodes is false) |
episodes[].title | String | Episode title |
episodes[].description | String | null | Episode description or summary |
episodes[].publishDate | String | null | Publish date in YYYY-MM-DD format |
episodes[].duration | String | null | Duration from itunes:duration |
episodes[].audioUrl | String | null | Audio file URL from RSS enclosure |
episodes[].episodeNumber | Number | null | Episode number from itunes:episode |
episodes[].seasonNumber | Number | null | Season number from itunes:season |
searchTerm | String | The search term that first matched this podcast |
scrapedAt | String | ISO 8601 timestamp when the record was processed |
How much does it cost to scrape podcast directories?
Podcast Directory Scraper uses pay-per-event pricing — you pay $0.05 per podcast scraped. Platform compute costs are included.
| Scenario | Podcasts | Cost per podcast | Total cost |
|---|---|---|---|
| Quick test | 5 | $0.05 | $0.25 |
| Single keyword, active shows | 50 | $0.05 | $2.50 |
| 3 keywords, outreach campaign | 150 | $0.05 | $7.50 |
| 5 keywords, full category | 500 | $0.05 | $25.00 |
| 10 keywords, enterprise research | 1,000 | $0.05 | $50.00 |
You can set a maximum spending limit per run to control costs. The actor stops cleanly when your budget is reached, so you never exceed your ceiling.
Podchaser Pro charges $599/month. Rephonic charges $99-$249/month. With this actor, most PR teams and podcast booking services spend $10-30 per campaign with no subscription commitment.
Scrape podcast contacts using the API
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/podcast-directory-scraper").call(run_input={
"searchTerms": ["B2B SaaS marketing", "sales enablement"],
"maxResults": 100,
"activeOnly": True,
"includeEpisodes": False,
})
for podcast in client.dataset(run["defaultDatasetId"]).iterate_items():
email = podcast.get("ownerEmail") or "no email"
freq = podcast.get("episodeFrequency") or "unknown"
print(f'{podcast["title"]} | {email} | {freq} | {podcast.get("websiteUrl", "")}')
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/podcast-directory-scraper").call({
searchTerms: ["B2B SaaS marketing", "sales enablement"],
maxResults: 100,
activeOnly: true,
includeEpisodes: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const podcast of items) {
const email = podcast.ownerEmail ?? "no email";
console.log(`${podcast.title} | ${email} | ${podcast.episodeFrequency} | ${podcast.websiteUrl}`);
}
cURL
# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~podcast-directory-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["B2B SaaS marketing", "sales enablement"],
"maxResults": 100,
"activeOnly": true,
"includeEpisodes": false
}'
# Fetch results (replace DATASET_ID from the run response above)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"
How Podcast Directory Scraper works
Stage 1: iTunes Search API discovery
For each search term, the actor calls https://itunes.apple.com/search with parameters media=podcast, entity=podcast, the specified country code, and a limit capped at 200. Results are filtered to records where kind === "podcast" to exclude non-podcast media. The actor enforces a 3-second delay between consecutive iTunes API calls to avoid throttling, with automatic 10-second backoff on HTTP 429 responses and up to 3 retries per request. Results are indexed by collectionId across all terms — a show that appears for both "B2B marketing" and "sales enablement" is stored once, attributed to the first matching term.
Stage 1b: Spotify API search (optional)
When Spotify credentials are provided, the actor authenticates via the Client Credentials flow (POST https://accounts.spotify.com/api/token) to obtain a bearer token. It then queries https://api.spotify.com/v1/search with type=show for each search term, paginating in batches of 50 (Spotify's per-request maximum) until the requested maxResults are reached or the API returns fewer items than requested. The actor respects the Retry-After response header on 429 responses.
Stage 2: Concurrent RSS feed enrichment
The iTunes API returns a feedUrl for most podcasts. The actor pre-fetches all RSS feeds in parallel batches of 10, using a 15-second AbortSignal.timeout per request and a custom User-Agent: ApifyPodcastScraper/1.0 header. Feeds are streamed with a hard 10 MB size cap to skip oversized feeds without memory issues. The XML is parsed with fast-xml-parser configured to handle attribute prefixes (@_), array coercion for <item> and itunes:category tags, and nested subcategory extraction. RSS data takes priority over iTunes API data for title, author, description, categories, and website URL.
Stage 3: Cross-platform deduplication and output assembly
Apple and Spotify results are cross-deduplicated by normalized title. The normalization function lowercases the title, strips trailing suffixes matching patterns like | ..., — a marketing podcast, and - the SaaS podcast, then removes all non-alphanumeric characters. A fallback preserves non-Latin scripts (CJK, Arabic, emoji). Spotify shows matched to an Apple result are merged into one record with source: "both" and the spotifyUrl populated. Spotify-only shows are output as separate records. Publishing frequency is derived from the average gap between publish dates of up to 10 recent episodes.
Tips for best results
- Use 3-5 specific keyword phrases per run. Narrow terms like "healthcare SaaS" or "B2B RevOps" return higher-quality contact data than broad terms. Professionally produced niche shows are more likely to include
ownerEmailin their RSS feed. - Filter to active shows for outreach. Enable
activeOnly: trueto eliminate shows that stopped publishing months ago. Dead shows waste your outreach budget. - Disable episodes when building contact lists. Set
includeEpisodes: falseto dramatically reduce dataset size and speed up CSV export when you only needownerEmail,websiteUrl, andepisodeFrequency. - Batch synonyms into one run. Searching "artificial intelligence", "AI", and "machine learning" in a single run is faster than three separate runs and automatically deduplicates the significant overlap.
- Verify emails before sending. Feed
ownerEmailaddresses into Bulk Email Verifier to check MX records and SMTP deliverability before your outreach sequence launches. - Scrape podcast websites for additional contacts. When
ownerEmailis null, feedwebsiteUrlinto Website Contact Scraper to find contact pages, booking forms, and social profiles. - Schedule weekly for list maintenance. New shows in competitive niches launch constantly. A weekly scheduled run on the same keywords catches new shows as they appear and flags shows that have gone inactive.
- Use country codes for region-specific campaigns. A US-focused
"us"run misses popular shows in the UK ("gb"), Australia ("au"), and Germany ("de") that may be indexed under different storefronts.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| Bulk Email Verifier | Take the ownerEmail output and verify MX + SMTP deliverability before sending outreach |
| Website Contact Scraper | When ownerEmail is null, scrape websiteUrl for contact page emails, booking forms, and social links |
| Website Contact Scraper Pro | For podcast websites built on React or other SPAs that the standard scraper cannot render |
| B2B Lead Qualifier | Score podcast websites for company size, tech stack, and business signals to prioritize outreach |
| HubSpot Lead Pusher | Push podcast host contacts directly into HubSpot as contacts or companies after each run |
| Waterfall Contact Enrichment | Run a 10-step enrichment cascade on podcast hosts to find LinkedIn, phone, or additional emails |
| WHOIS Domain Lookup | Look up domain registration details for podcast websites to identify the legal owner or hosting company |
Limitations
- 200 results per keyword maximum. The iTunes Search API returns at most 200 podcasts per query. Use multiple specific search terms to increase coverage across a category.
- Owner email not always present. The
ownerEmailfield depends entirely on the podcast creator includingitunes:owner > itunes:emailin their RSS feed. Expect 50-80% coverage for professionally produced shows; hobbyist and smaller shows often omit it. Use Website Contact Scraper onwebsiteUrlas a fallback. - Spotify requires a free developer app. Spotify search needs a Client ID and Client Secret from the Spotify Developer Dashboard. Without these, only Apple Podcasts are searched. Podcasts exclusive to YouTube, Amazon Music, or proprietary platforms are not covered by either source.
- RSS feed availability varies. Some feeds sit behind authentication, have expired URLs, or return server errors. The actor falls back to iTunes API data (without contact email or website URL) for shows whose feeds are inaccessible.
- Spotify-only results lack contact data. Podcasts found only on Spotify and not on Apple Podcasts will not have an RSS feed URL,
ownerEmail,websiteUrl, orepisodeFrequency, since these fields come exclusively from RSS parsing. - Episode count may not match the Apple Podcasts UI. Some RSS feeds truncate older episodes, so
episodeCountreflects the number of<item>elements in the feed, which can be lower than the Apple Podcasts listing. - No transcript or audio download. The actor extracts episode metadata including
audioUrlbut does not download or transcribe audio files. - Rate limiting adds time on large runs. The 3-second delay between iTunes API calls is intentional. A run with 10 search terms at 200 results each takes approximately 8-12 minutes including RSS fetching.
Integrations
- Zapier — trigger outreach sequences in Close, Mailshake, or Apollo when a new podcast run completes
- Make — build workflows that route new podcast contacts into your CRM or Google Sheet automatically
- Google Sheets — export the full dataset to a shared spreadsheet for your PR or booking team to work from
- Apify API — trigger runs programmatically from your own outreach software or data pipeline
- Webhooks — post run results to any HTTP endpoint, including your own booking platform or CRM API
- LangChain / LlamaIndex — feed podcast descriptions and episode listings into an LLM pipeline to auto-generate personalized outreach copy
Troubleshooting
No owner email returned for most podcasts. The ownerEmail field is populated from the RSS feed's itunes:owner tag, which podcast creators must add explicitly. Indie and hobbyist shows frequently omit it. For shows where ownerEmail is null, scrape the websiteUrl using Website Contact Scraper to find a contact page, booking link, or social media profile.
Fewer results than expected for a search term. The iTunes Search API ranks results by popularity and relevance within the selected country store. A term may have fewer than maxResults matches in the selected store. Try "us" if you are using a smaller market, or add synonymous terms to your search list.
Spotify credentials not working. Verify that your Spotify Developer app has the correct redirect URI set and that you are copying the Client ID and Secret exactly. A mismatch in either field causes the OAuth Client Credentials flow to return a 401. Re-check at https://developer.spotify.com/dashboard.
Run taking longer than expected. Large runs with many search terms and 200 results per term involve hundreds of RSS fetches. RSS feeds are fetched 10 at a time. Reduce maxResults to 50 or disable includeEpisodes to cut run time significantly for outreach-focused use cases.
Empty dataset despite valid search terms. If the actor completes but returns no data, check that searchTerms is an array of strings, not a single string. Correct: ["technology"]. Incorrect: "technology".
Responsible use
- This actor accesses publicly available data from the Apple iTunes Search API and podcast RSS feeds, both of which are designed for programmatic access.
- The
itunes:owneremail is published by podcast creators in their RSS feed for the purpose of media, listener, and directory communication. - Comply with CAN-SPAM, GDPR, CASL, and other applicable laws before sending commercial email to scraped addresses.
- Do not use extracted contact data for spam, bulk unsolicited commercial messages, or harassment.
- Respect podcast creators by keeping outreach relevant, professional, and limited in volume.
- For guidance on web scraping legality, see Apify's guide.
FAQ
How do I extract podcast host emails from Apple Podcasts?
This actor fetches each podcast's RSS feed and reads the itunes:owner > itunes:email tag, which most podcast hosting platforms (Buzzsprout, Libsyn, Anchor, etc.) populate automatically when a creator registers their show. Enter your target keywords, run the actor, and download the dataset. The ownerEmail field contains the contact email for every show that publishes it.
How many podcasts can I scrape in one run? Apple's iTunes API returns up to 200 results per search term. With 10 search terms you can retrieve up to 2,000 results per run (fewer after deduplication of overlapping shows). There is no hard cap on the number of keywords you can include.
How accurate is the podcast contact email data?
Accuracy depends on what the podcast creator has published in their RSS feed. The actor extracts it exactly as declared in the itunes:owner tag — it does not guess or construct emails. Expect 50-80% coverage for professionally produced shows. To confirm deliverability before outreach, run the results through Bulk Email Verifier.
Does this actor work for finding podcast booking contacts?
Yes. The ownerEmail and ownerName fields come directly from the RSS feed, where most podcast shows list their booking or production contact rather than a personal email. Filter to activeOnly: true and episodeFrequency: weekly to build a list of actively producing shows before outreach.
How is this different from Podchaser or Rephonic? Podchaser and Rephonic are subscription SaaS tools that charge $99-599/month for curated podcast databases. This actor queries the same underlying sources (iTunes, RSS feeds, Spotify) on demand, costs $0.05 per podcast, and lets you filter by keyword and country with no monthly commitment. You get the same core contact data without a subscription.
Can I search podcasts in other countries?
Yes. Set the country parameter to any two-letter ISO country code: "gb" for the UK, "de" for Germany, "au" for Australia, "jp" for Japan, and so on. The actor queries the corresponding Apple Podcasts store, which has a distinct catalog and ranking for each country.
How does the actor determine publishing frequency?
The episodeFrequency field is calculated from the publish dates of up to 10 recent episodes. The actor computes the average gap between consecutive dates and maps it to one of 7 labels: daily (≤1.5 days), multiple-per-week (1.5-4 days), weekly (4-9 days), biweekly (9-18 days), monthly (18-45 days), irregular (45-100 days), infrequent (>100 days). Shows with fewer than 2 dated episodes return null.
Is it legal to scrape Apple Podcasts data? The actor uses the public iTunes Search API, which Apple provides specifically for programmatic access to their catalog. RSS feeds are published by podcast creators for syndication and directory listing. Both are designed to be consumed by third-party applications. The actor does not bypass any authentication, scrape the Apple Podcasts website, or access private data. For a detailed analysis of scraping legality, see Apify's guide.
Can I schedule this actor to run automatically? Yes. Use Apify's built-in scheduler to run the actor on any interval — daily, weekly, or custom cron expressions. Pair with a webhook to automatically push new podcast contacts to your CRM or outreach tool when each run completes.
What happens if a podcast's RSS feed is unavailable?
The actor falls back gracefully to the data available from the iTunes API: title, author, genres, episode count, artwork, and Apple Podcasts URL. Fields sourced exclusively from RSS — ownerEmail, ownerName, websiteUrl, description, language, copyright, and episodeFrequency — will be null for that record.
Can I use this with Spotify only, without Apple Podcasts results?
Not currently. Apple Podcasts is always searched. Spotify is an optional supplement. If you provide Spotify credentials, the actor searches both sources and merges results, with Apple-and-Spotify shows flagged as source: "both".
How long does a typical run take? A single keyword at the default 50-result cap takes about 30-60 seconds including RSS fetching. Three keywords at 100 results each takes 2-4 minutes. Ten keywords at 200 results each takes approximately 8-15 minutes depending on RSS feed response times.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Website Contact Scraper
Extract emails, phone numbers, team members, and social media links from any business website. Feed it URLs from Google Maps or your CRM and get structured contact data back. Fast HTTP requests, no browser — scrapes 1,000 sites for ~$0.50.
Email Pattern Finder
Discover the email format used by any company. Enter a domain like stripe.com and detect patterns like [email protected]. Then generate email addresses for any name. Combine with Website Contact Scraper to turn company websites into complete email lists.
Waterfall Contact Enrichment
Find business emails, phones, and social profiles from a name + company domain. Cascades through MX validation, website scraping, pattern detection, and SMTP verification. Free Clay alternative.
B2B Lead Qualifier - Score & Rank Company Leads
Score and rank B2B leads 0-100 by crawling company websites. Analyzes 30+ signals across contact reachability, business legitimacy, online presence, website quality, and team transparency. No AI keys needed.
Ready to try Podcast Directory Scraper?
Start for free on Apify. No credit card required.
Open on Apify Store