# Podcast Leads (Host Emails from Apple Podcasts) (`datamole/podcast-leads-scraper`) Actor

Find podcasts by keyword or Apple Podcasts top chart and get the host contact email from each show feed. Each row has owner name, website, category, language, episode count, posting frequency, latest episode date and recent episodes. Built for guest booking, PR and sponsorship sales.

- **URL**: https://apify.com/datamole/podcast-leads-scraper.md
- **Developed by:** [DataMole](https://apify.com/datamole) (community)
- **Categories:** Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.00 / 1,000 result-items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![DataMole](https://raw.githubusercontent.com/YoiderD/datamole-assets/main/banner.png)

## 🎙️ Podcast Leads: Host Emails from Apple Podcasts

> **Find active podcasts in your niche and get the host's contact email.** Search Apple Podcasts by keyword or top chart and get one row per show with email, owner name, website, category, episode count, posting frequency and latest episodes.

> 🕒 **Last updated:** 2026-10-05 · **30+ fields** per podcast · **25 top chart categories in 22 countries** · **about 3 in 4 shows publish a contact email**

**Podcast Leads** finds podcasts on Apple Podcasts, the largest podcast directory, and reads each show's public RSS feed, where podcasters publish their contact email for directories. You get a clean lead list of active shows, with the email, the people behind the show and signals on how often they publish. Shows without a public email or without recent episodes are skipped by default, and skipped shows are not charged.

| 🎯 Who uses it | 💡 What for |
|---|---|
| Founders and experts looking for guest spots, PR agencies, podcast booking agencies, sponsorship and ad sales teams, B2B marketers, podcast tool companies | Guest booking outreach, PR pitching, sponsorship prospecting, influencer and partner lists, market research on podcast niches |

### 📋 What you get per podcast

- 📇 **Contact:** contact email from the feed (the owner email first), owner name, author, other emails listed in the feed and the show website.
- 🎙️ **Show:** name, cover image, Apple Podcasts link and ID, RSS feed, category and genres, language, Apple storefront country, explicit flag, episodic or serial format, description.
- 📈 **Activity:** episode count, latest episode date, days since the latest episode, active flag (an episode in the last 60 days), median days between episodes, median episode length, first episode date and show age in years.
- 🆕 **Latest episodes:** title, date, length and link of the most recent episodes (3 by default).
- 🧭 **Source:** which keyword or top chart found each show.

### ⚙️ Input

| Field | What it does |
|---|---|
| `keywords` | Topics or show names to search. Each keyword returns up to about 100 shows per country. |
| `topChartCategories` | Add the top 200 shows of these Apple Podcasts categories, such as Business, Entrepreneurship, Marketing, Investing, Technology or Health & Fitness. |
| `countries` | Apple Podcasts storefronts to search (default United States). More countries find more shows. |
| `onlyWithEmail` | Skip shows without a public email (default on). |
| `activeWithinDays` | Keep only shows with an episode in the last N days (default 90, 0 keeps all). |
| `minEpisodes` | Keep only shows with at least this many episodes. |
| `language` | Keep only feeds in this language, for example `en`, `es` or `pt-br`. |
| `latestEpisodes` | Recent episodes to include per show (default 3). |
| `maxItems` | Cap the number of podcasts. |

**Example: SaaS and marketing shows in the US and UK that are still publishing**

```json
{
    "keywords": ["saas marketing", "b2b growth"],
    "topChartCategories": ["1492"],
    "countries": ["us", "gb"],
    "activeWithinDays": 60
}
```

**Example: established Spanish language business podcasts**

```json
{
    "topChartCategories": ["1321", "1493"],
    "countries": ["mx", "es", "co", "ar"],
    "language": "es",
    "minEpisodes": 50
}
```

### 📊 Output

Real record from a run (description shortened):

```json
{
    "imageUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/7c/ca/ae/7ccaae78-8cc1-657f-e6be-f691979d367a/mza_2722096394911752447.png/600x600bb.jpg",
    "podcastName": "Churn Flags: Real time retention experiments with SaaS growth leaders",
    "email": "podcast@nikkielbaz.com",
    "ownerName": "Nikki Elbaz | Retention and expansion strategist for mature SaaS companies",
    "author": "Nikki Elbaz | Retention and expansion strategist for mature SaaS companies",
    "otherEmails": [],
    "website": "https://nikkielbaz.com/podcast",
    "appleUrl": "https://podcasts.apple.com/us/podcast/churn-flags-real-time-retention-experiments-with-saas/id1896783277",
    "appleId": 1896783277,
    "feedUrl": "https://anchor.fm/s/114147444/podcast/rss",
    "primaryGenre": "Marketing",
    "genres": ["Marketing", "Business"],
    "language": "en",
    "storeCountry": "USA",
    "explicit": false,
    "showType": "episodic",
    "episodeCount": 8,
    "latestEpisodeAt": "2026-09-23T13:00:00.000Z",
    "daysSinceLatestEpisode": 12,
    "isActive": true,
    "medianDaysBetweenEpisodes": 14,
    "medianEpisodeMinutes": 19,
    "firstEpisodeAt": "2026-06-10T17:22:37.000Z",
    "podcastAgeYears": 0.3,
    "description": "Most retention plays kick in when an account already has one foot out the door...",
    "latestEpisodes": [
        {
            "title": "The 51% churn risk nobody owns – and all it takes is sending a sequence you already wrote | ft. Jane Portman, co-founder of Userlist",
            "publishedAt": "2026-09-23T13:00:00.000Z",
            "durationMinutes": 20,
            "url": "https://podcasters.spotify.com/pod/show/churn-flags/episodes/The-51-churn-risk-nobody-owns--and-all-it-takes-is-sending-a-sequence-you-already-wrote--ft--Jane-Portman--co-founder-of-Userlist-e3p7hn0"
        }
    ],
    "foundBy": ["keyword: saas marketing"]
}
```

`otherEmails` is filled only when the feed lists a second address (managing editor or webmaster) different from the main one.

### ✨ Why this one

- ✅ **Only shows you can contact.** Shows without a public email are skipped and not charged.
- ✅ **Only shows that are alive.** Inactive shows are filtered out by default, so you do not pitch a podcast that ended years ago.
- ✅ **Fit signals in every row:** posting frequency, episode length, show age and the latest episode titles, to personalize your pitch.
- ✅ **Two ways to find shows:** keyword search and Apple top charts by category, across 22 countries, merged and deduplicated.

### 🚀 How to use

1. Create a free Apify account.
2. Open the Actor and add keywords, top chart categories or both.
3. Click **Start**.
4. Download the results or send them to Google Sheets, your CRM, Make, Zapier, n8n or the API.

### 💼 Use cases

- **Founders and experts:** build a target list of shows to pitch yourself as a guest.
- **PR and booking agencies:** find shows for each client by topic, country and language.
- **Sponsorship sales:** list active shows in a niche with their publishing pace.
- **Podcast tools and services:** reach podcasters who host on a specific platform (see the feed URL).

### ❓ FAQ

**Where does the email come from?** From the show's public RSS feed. Podcasters add it so that directories like Apple Podcasts can verify ownership and contact them.

**How many shows have an email?** In our tests, about 3 in 4 feeds include one. Some hosting platforms hide it, and those shows are skipped by default.

**How many results per keyword?** Apple returns up to about 100 shows per keyword and country. Add more countries, related keywords or top chart categories to find more.

**Does it include Spotify-only shows?** No. It covers shows listed on Apple Podcasts, which includes most podcasts that are also on Spotify.

**Is it legal to email these contacts?** The emails are published by the podcasters for contact. Follow anti-spam and privacy laws (CAN-SPAM, GDPR) and send relevant, personal messages.

**On the free Apify plan?** Runs return a preview of up to 10 podcasts. Any paid Apify plan unlocks all results.

### 🔌 Integrations

Works with the Apify API, schedules, webhooks, Google Sheets, HubSpot, Lemlist and Instantly (via Make, Zapier or n8n) and any tool that reads JSON.

### 🕳️ More from DataMole

| Actor | What it does |
|---|---|
| [Company Enrichment](https://apify.com/datamole/company-enrichment) | Firmographics, contacts and tech stack for any company website |
| [Substack Scraper](https://apify.com/datamole/substack-scraper) | Newsletter posts, search and discovery with subscriber counts |
| [Startup Funding Rounds](https://apify.com/datamole/startup-funding-rounds) | US companies that just raised money, from SEC Form D filings |

**Need a field or source we don't cover yet?** Open an issue on this Actor. We read everything.

### ⚖️ Disclaimer

This Actor collects publicly available data from Apple Podcasts search results and public podcast RSS feeds. It is not affiliated with or endorsed by Apple Inc. or any podcast. Use contact data in line with applicable privacy and anti-spam laws (GDPR, CAN-SPAM, Peru's Law 29733).

# Actor input Schema

## `keywords` (type: `array`):

Topics or show names to search on Apple Podcasts. Each keyword returns up to about 100 shows per country.

## `topChartCategories` (type: `array`):

Add the top 200 shows of these Apple Podcasts categories in each selected country.

## `countries` (type: `array`):

Apple Podcasts storefronts to search. More countries find more shows.

## `maxItems` (type: `integer`):

Hard cap for the whole run. Leave empty for no cap.

## `onlyWithEmail` (type: `boolean`):

Skip shows whose feed does not publish a contact email. Skipped shows are not charged.

## `activeWithinDays` (type: `integer`):

Keep only shows that published an episode in the last N days. Set 0 to keep inactive shows too.

## `minEpisodes` (type: `integer`):

Keep only shows with at least this many episodes in their feed.

## `language` (type: `string`):

Keep only shows whose feed language starts with this code, for example en, es or pt-br. Leave empty for any language.

## `latestEpisodes` (type: `integer`):

How many recent episodes (title, date, length and link) to include for each show.

## `proxyConfiguration` (type: `object`):

Not needed in most cases.

## Actor input object example

```json
{
  "keywords": [
    "real estate investing",
    "saas marketing"
  ],
  "countries": [
    "us"
  ],
  "onlyWithEmail": true,
  "activeWithinDays": 90,
  "minEpisodes": 0,
  "latestEpisodes": 3
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "real estate investing",
        "saas marketing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datamole/podcast-leads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": [
        "real estate investing",
        "saas marketing",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("datamole/podcast-leads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "real estate investing",
    "saas marketing"
  ]
}' |
apify call datamole/podcast-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datamole/podcast-leads-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ihgvGQ65gwwU6hSSe/builds/OlnAhTUDaeCmY2rf3/openapi.json
