LEAD GENERATIONSOCIAL MEDIA

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.

Try on Apify Store
$0.05per event
10
Users (30d)
156
Runs (30d)
92
Actively maintained
Maintenance Pulse
$0.05
Per event

Maintenance Pulse

92/100
Last Build
1d ago
Last Version
5d ago
Builds (30d)
8
Issue Response
12h avg

Cost Estimate

How many results do you need?

podcast-scrapeds
Estimated cost:$5.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
podcast-scrapedCharged 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 PointSourceExample
📧 Owner emailRSS itunes:owner[email protected]
👤 Owner nameRSS itunes:ownerVerdant Media Productions
🌐 Website URLRSS channel.linkhttps://www.thegrowthpodcast.com
🎙️ Podcast titleRSS / iTunesThe Growth Podcast
✍️ AuthorRSS / iTunesSarah Chen
📝 DescriptionRSSFull show description text
🗂️ CategoriesRSS / iTunes["Business", "Entrepreneurship"]
📅 Last episode dateRSS2026-02-28
🔁 Publishing frequencyCalculatedweekly
Active statusCalculatedtrue
🎵 Episode countRSS / iTunes312
🍎 Apple Podcasts URLiTunesFull show link
🎧 Spotify URLSpotify APIFull show link
🔗 RSS feed URLiTunesDirect feed link
🖼️ Artwork URLiTunes600px cover image
📻 Episode listingsRSSTitle, 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:owner block 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 null for shows that omit the itunes:owner tag
  • 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, or infrequent
  • Active status detection — flags shows that published within the last 90 days; the activeOnly filter removes dead shows before they reach your dataset
  • Cross-platform deduplication — deduplicates Apple results by collectionId across 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-After response 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

  1. 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.
  2. Configure filters — Set activeOnly to true to skip shows that have stopped publishing. Leave maxResults at 50 to start; raise it to 200 for comprehensive coverage of a category.
  3. 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.
  4. 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

ParameterTypeRequiredDefaultDescription
searchTermsString[]YesKeywords to search on Apple Podcasts. Each term runs a separate query. Example: ["B2B marketing", "sales enablement"]
maxResultsIntegerNo50Max podcasts returned per search term. Apple limits to 200 per query
countryStringNo"us"Two-letter country code for the iTunes Store (e.g., "gb", "de", "au", "jp")
includeEpisodesBooleanNotrueInclude recent episode listings per show. Disable for faster runs when only show metadata is needed
maxEpisodesPerShowIntegerNo10Max recent episodes per podcast. Set to 0 for all available episodes (up to 1,000)
activeOnlyBooleanNofalseOnly return shows that published an episode within the last 90 days
spotifyClientIdStringNoYour Spotify app Client ID. Get one free at https://developer.spotify.com/dashboard. Enables Spotify search alongside Apple
spotifyClientSecretStringNoYour Spotify app Client Secret. Required together with Client ID
proxyConfigurationObjectNoApify ProxyProxy 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 includeEpisodes to false when 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

FieldTypeDescription
podcastIdNumber / StringApple Podcasts collection ID, or Spotify show ID for Spotify-only results
titleStringPodcast title (RSS value takes priority over iTunes)
authorStringAuthor or creator name
descriptionString | nullFull show description from RSS description or itunes:summary
categoriesString[]Show categories (RSS itunes:category takes priority; iTunes genres as fallback)
languageString | nullLanguage code from RSS (e.g., "en", "de", "ja")
episodeCountNumberTotal episode count from iTunes or RSS <item> count
lastEpisodeDateString | nullMost recent episode publish date in YYYY-MM-DD format
episodeFrequencyString | nullPublishing cadence: daily, multiple-per-week, weekly, biweekly, monthly, irregular, infrequent, or null
isActiveBooleantrue if a new episode was published within the last 90 days
applePodcastsUrlString | nullApple Podcasts show page URL (null for Spotify-only results)
spotifyUrlString | nullSpotify show URL (null if Spotify not enabled or show not on Spotify)
sourceStringWhere the show was found: "apple", "spotify", or "both"
feedUrlString | nullRSS feed URL from iTunes
websiteUrlString | nullPodcast website URL from RSS channel.link
artworkUrlStringCover art URL (600px preferred, 100px fallback)
ownerNameString | nullOwner name from RSS itunes:owner > itunes:name
ownerEmailString | nullOwner email from RSS itunes:owner > itunes:email
copyrightString | nullCopyright notice from RSS
episodesObject[]Recent episode list (empty array when includeEpisodes is false)
episodes[].titleStringEpisode title
episodes[].descriptionString | nullEpisode description or summary
episodes[].publishDateString | nullPublish date in YYYY-MM-DD format
episodes[].durationString | nullDuration from itunes:duration
episodes[].audioUrlString | nullAudio file URL from 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 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.

ScenarioPodcastsCost per podcastTotal cost
Quick test5$0.05$0.25
Single keyword, active shows50$0.05$2.50
3 keywords, outreach campaign150$0.05$7.50
5 keywords, full category500$0.05$25.00
10 keywords, enterprise research1,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

  1. 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 ownerEmail in their RSS feed.
  2. Filter to active shows for outreach. Enable activeOnly: true to eliminate shows that stopped publishing months ago. Dead shows waste your outreach budget.
  3. Disable episodes when building contact lists. Set includeEpisodes: false to dramatically reduce dataset size and speed up CSV export when you only need ownerEmail, websiteUrl, and episodeFrequency.
  4. 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.
  5. Verify emails before sending. Feed ownerEmail addresses into Bulk Email Verifier to check MX records and SMTP deliverability before your outreach sequence launches.
  6. Scrape podcast websites for additional contacts. When ownerEmail is null, feed websiteUrl into Website Contact Scraper to find contact pages, booking forms, and social profiles.
  7. 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.
  8. 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

ActorHow to combine
Bulk Email VerifierTake the ownerEmail output and verify MX + SMTP deliverability before sending outreach
Website Contact ScraperWhen ownerEmail is null, scrape websiteUrl for contact page emails, booking forms, and social links
Website Contact Scraper ProFor podcast websites built on React or other SPAs that the standard scraper cannot render
B2B Lead QualifierScore podcast websites for company size, tech stack, and business signals to prioritize outreach
HubSpot Lead PusherPush podcast host contacts directly into HubSpot as contacts or companies after each run
Waterfall Contact EnrichmentRun a 10-step enrichment cascade on podcast hosts to find LinkedIn, phone, or additional emails
WHOIS Domain LookupLook 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 ownerEmail field depends entirely on the podcast creator including itunes:owner > itunes:email in their RSS feed. Expect 50-80% coverage for professionally produced shows; hobbyist and smaller shows often omit it. Use Website Contact Scraper on websiteUrl as 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, or episodeFrequency, since these fields come exclusively from RSS parsing.
  • Episode count may not match the Apple Podcasts UI. Some RSS feeds truncate older episodes, so episodeCount reflects 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 audioUrl but 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:owner email 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:

  1. Go to Account Settings > Privacy
  2. 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

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

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.

Ready to try Podcast Directory Scraper?

Start for free on Apify. No credit card required.

Open on Apify Store