# Podcast Directory Scraper (`parsebird/podcast-directory-scraper`) Actor

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.

- **URL**: https://apify.com/parsebird/podcast-directory-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.29 / 1,000 podcasts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Podcast Directory Scraper

Podcast Directory Scraper searches [Apple Podcasts](https://podcasts.apple.com) and [Spotify](https://open.spotify.com) 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.

<table><tr>
<td style="border-left:4px solid #8B5CF6;padding:12px 16px;font-weight:600">
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.
</td>
</tr></table>

##### 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?

| Field | Type | Description |
|-------|------|-------------|
| podcastId | number / string | Apple Podcasts collection ID, or Spotify show ID for Spotify-only results |
| title | string | Podcast title (RSS value preferred over iTunes) |
| author | string | Author or creator name |
| description | string | null | Full show description, HTML stripped and entities decoded |
| categories | string\[] | Show categories from `itunes:category` (iTunes genres as fallback, "Podcasts" excluded) |
| language | string | null | Language code from RSS (e.g. `en`, `de`, `ja`) |
| episodeCount | number | null | Total episodes from iTunes `trackCount` or Spotify `total_episodes` |
| lastEpisodeDate | string | null | Most recent episode publish date (ISO 8601) |
| episodeFrequency | string | null | daily, multiple-per-week, weekly, biweekly, monthly, irregular, infrequent, or null |
| isActive | boolean | null | `true` if an episode was published in the last 90 days; `null` when the last date is unknown |
| applePodcastsUrl | string | null | Apple Podcasts show page URL |
| spotifyUrl | string | null | Spotify show URL (when Spotify is enabled and the show is matched) |
| feedUrl | string | null | RSS feed URL from iTunes |
| websiteUrl | string | null | Podcast website from RSS `channel.link` |
| artworkUrl | string | null | Cover art URL (600px preferred) |
| ownerName | string | null | Owner name from RSS `itunes:owner > itunes:name` |
| ownerEmail | string | null | Owner email from RSS `itunes:owner > itunes:email` (platform relay addresses excluded) |
| copyright | string | null | Copyright notice from RSS |
| source | string | Where the show was found: `apple`, `spotify`, or `both` |
| leadScore | number | null | Outreach-quality score 0–100 (higher = more contactable). Results sorted by this |
| dataQuality | string | null | `high` (email + website), `medium` (one), `low` (metadata only) |
| hasEmail | boolean | null | `true` when a host/owner email was extracted |
| hasWebsite | boolean | null | `true` when a podcast website was extracted |
| episodes | object\[] | Recent episodes (empty when `includeEpisodes` is false) |
| episodes\[].title | string | Episode title |
| episodes\[].description | string | null | Episode description, HTML stripped |
| episodes\[].publishDate | string | null | Publish date (ISO 8601) |
| episodes\[].duration | string | null | Duration as `HH:MM:SS` |
| episodes\[].audioUrl | string | null | Audio file URL from the 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 to use Podcast Directory Scraper

1. Open [Podcast Directory Scraper](https://apify.com/parsebird/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](https://developer.spotify.com/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

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| searchTerms | array | **Yes** | — | Keywords to search on Apple Podcasts and Spotify. Each term runs a separate query |
| maxResults | integer | No | 50 | Max podcasts per search term. Apple caps a query at 200; Spotify paginates in batches of 50 to the same cap |
| country | string | No | `us` | Two-letter iTunes Store country code (e.g. `gb`, `de`, `au`, `jp`). Invalid codes fall back to `us` |
| includeEpisodes | boolean | No | `true` | Attach recent episode listings per show. Disable for faster runs when only show metadata is needed |
| maxEpisodesPerShow | integer | No | 10 | Max recent episodes per podcast (0–1000). Set to 0 for all episodes available in the feed |
| activeOnly | boolean | No | `false` | Only return shows that published within the last 90 days. Shows whose feed does not parse are excluded |
| requireEmail | boolean | No | `false` | Only return shows that expose a host email in their RSS feed |
| minLeadScore | integer | No | — | Only return shows scoring at or above this value (0–100) |
| spotifyClientId | string | No | — | Spotify app Client ID. Free from the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard). Enables dual-platform search |
| spotifyClientSecret | string | No | — | Spotify app Client Secret. Required together with the Client ID |
| proxyConfiguration | object | No | — | Optional Apify Proxy for RSS feed fetches. Only enable if you see blocked feeds |

### Output example

```json
{
  "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:

| Signal | Points |
|--------|--------|
| 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 sort** — `activeOnly`, `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](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event). Platform compute is included in the event prices.

| Event | What it charges for | Free | Bronze | Silver | Gold |
|-------|--------------------|------|--------|--------|------|
| `podcast-scraped` | Each podcast pushed to the dataset | $1.99 / 1,000 | $1.79 / 1,000 | $1.59 / 1,000 | $1.29 / 1,000 |
| `contact-scraped` | Each 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](https://apify.com/pricing) included on every Apify plan.

### Integrations and API access

Podcast Directory Scraper works with the full [Apify platform](https://docs.apify.com/platform):

- **API access** — Run it and pull results via the [REST API](https://docs.apify.com/api/v2) or the [Apify API clients](https://docs.apify.com/api) for Python and JavaScript
- **Scheduling** — Trigger recurring runs with the [Apify Scheduler](https://docs.apify.com/platform/schedules)
- **Webhooks** — Fire a [webhook](https://docs.apify.com/platform/integrations/webhooks) when a run finishes
- **Integrations** — Push results to [Google Sheets](https://apify.com/apify/google-sheets), [Slack](https://docs.apify.com/platform/integrations/slack), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), Airtable, and more

#### Python example

```python
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

```javascript
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

| Event | Price 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](https://developer.spotify.com/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](https://docs.apify.com/platform/schedules) 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.

### Is it legal to scrape podcast directories?

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](https://www.eff.org/deeplinks/2022/04/scraping-public-websites-still-isnt-crime-court-reaffirms). 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](https://blog.apify.com/is-web-scraping-legal/).

### Related actors

- [Apple Podcasts Scraper](https://apify.com/parsebird/apple-podcasts-scraper) — Pull full episode archives, show notes, transcripts, and audio URLs from Apple Podcasts by search, ID, or RSS feed
- [RSS Feed Extractor](https://apify.com/parsebird/rss-feed-extractor) — Parse any RSS or Atom feed into structured items
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) — Extract emails, phones, and social profiles from any list of websites
- [YouTube Transcript Scraper](https://apify.com/parsebird/youtube-transcript-scraper) — Get transcripts and captions from YouTube videos

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search on Apple Podcasts and Spotify. Each term runs a separate query and results are deduplicated automatically.

## `maxResults` (type: `integer`):

Maximum podcasts returned per search term. Apple caps a query at 200; Spotify paginates in batches of 50 up to the same cap.

## `country` (type: `string`):

Two-letter iTunes Store country code. Affects ranking and which country-restricted shows are visible. Invalid codes fall back to United States.

## `includeEpisodes` (type: `boolean`):

Attach a recent episode list to each show. Disable for faster runs and smaller output when only show metadata and host contacts are needed.

## `maxEpisodesPerShow` (type: `integer`):

Maximum recent episodes per podcast. Set to 0 to include all episodes available in the feed.

## `activeOnly` (type: `boolean`):

Keep only shows that published an episode within the last 90 days. Shows whose RSS feed does not parse are excluded because their activity cannot be confirmed.

## `requireEmail` (type: `boolean`):

Keep only shows that expose a host or owner email in their RSS feed.

## `minLeadScore` (type: `integer`):

Keep only shows scoring at or above this value (0-100). 60 keeps shows with a host email; 80 keeps shows with both an email and a website. Leave empty to keep every show.

## `spotifyClientId` (type: `string`):

Your Spotify app Client ID. Create a free app at https://developer.spotify.com/dashboard. Enables dual-platform search and Spotify show URLs.

## `spotifyClientSecret` (type: `string`):

Your Spotify app Client Secret. Required together with the Client ID.

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

Optional proxy for RSS feed fetches. Only enable if you see blocked feeds — proxies add latency.

## Actor input object example

```json
{
  "searchTerms": [
    "B2B marketing"
  ],
  "maxResults": 10,
  "country": "us",
  "includeEpisodes": true,
  "maxEpisodesPerShow": 3,
  "activeOnly": false,
  "requireEmail": false
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchTerms": [
        "B2B marketing"
    ],
    "maxResults": 10,
    "country": "us",
    "maxEpisodesPerShow": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/podcast-directory-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 = {
    "searchTerms": ["B2B marketing"],
    "maxResults": 10,
    "country": "us",
    "maxEpisodesPerShow": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/podcast-directory-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 '{
  "searchTerms": [
    "B2B marketing"
  ],
  "maxResults": 10,
  "country": "us",
  "maxEpisodesPerShow": 3
}' |
apify call parsebird/podcast-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/podcast-directory-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/n6emITxLDBKpcAetM/builds/eSZC73gvqaXx5qUmc/openapi.json
