# Apple Podcasts Search, Top Charts and Episodes (`pistachio_implementation/apple-podcasts`) Actor

Search Apple Podcasts by keyword, look up shows by id or link, or pull the top podcasts chart by country and genre. Returns publisher, genre, episode count, latest episode date, RSS feed URL and artwork, plus optional recent episodes with audio URL and duration.

- **URL**: https://apify.com/pistachio\_implementation/apple-podcasts.md
- **Developed by:** [Hay Equipos](https://apify.com/pistachio_implementation) (community)
- **Categories:** Videos, Marketing, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Apple Podcasts Search, Top Charts and Episodes

Find podcasts and pull clean data on them from Apple Podcasts. Search by keyword, look up shows by id or link, or read Apple's top podcasts chart for any country and genre. Each show comes with its publisher, genre, episode count, latest episode date, RSS feed URL, artwork and Apple Podcasts link. Turn on episodes to also get each show's recent episodes with title, release date, duration, description and the direct audio URL.

The actor reads Apple's own public iTunes Search and Lookup API and Apple's public podcast chart feed. No login, no API key, no browser, no proxies.

### What you can use it for

- **Podcast guest booking and PR:** build a list of active shows in your niche, with their RSS feeds, sorted by chart rank.
- **Sponsorship and ad sales:** track the top 200 Business or Technology podcasts every week and spot new entries.
- **Content research:** pull the latest episodes of a list of shows, with descriptions, for summaries or AI pipelines.
- **Transcription workflows:** get direct audio URLs to feed into your own speech to text tool.
- **AI agents:** one clear job with simple inputs, so an agent can answer "what are the top true crime podcasts in the UK right now?"

### Input

| Field | What it does | Default |
|---|---|---|
| Search terms | Keywords to search, one per line. Results keep Apple's order, so `position` is the search rank | none |
| Podcast ids or Apple Podcasts links | Shows to look up directly: `1200361736` or `https://podcasts.apple.com/us/podcast/the-daily/id1200361736` | none |
| Include the top podcasts chart | Adds Apple's top podcasts chart for the country, with rank | off |
| Chart genre id | Narrow the chart, for example `1321` Business, `1318` Technology, `1488` True Crime | all podcasts |
| Country | Two letter country code | `us` |
| Results per search term | Up to 200 | 50 |
| Shows in the chart | Up to 200 | 100 |
| Add recent episodes | Save each show's recent episodes as extra rows | off |
| Episodes per show | Up to 200 | 20 |
| Maximum rows | Stop after this many rows (shows plus episodes) | 1,000 |

Example input:

```json
{
  "searchTerms": ["marketing"],
  "podcastIds": ["https://podcasts.apple.com/us/podcast/the-daily/id1200361736"],
  "topChart": true,
  "chartGenreId": "1321",
  "country": "us",
  "includeEpisodes": true,
  "maxEpisodesPerPodcast": 5
}
```

### Output

Show rows have `type: "podcast"`:

```json
{
  "type": "podcast",
  "source": "chart",
  "query": "top-podcasts-genre-1321",
  "rank": 1,
  "country": "us",
  "podcastId": 1200361736,
  "name": "The Daily",
  "publisher": "The New York Times",
  "primaryGenre": "Daily News",
  "genres": ["Daily News", "News"],
  "episodeCount": 2731,
  "latestEpisodeDate": "2026-09-26T10:00:00Z",
  "explicit": false,
  "contentRating": "Clean",
  "feedUrl": "https://feeds.simplecast.com/Sl5CSM3S",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/.../600x600bb.jpg",
  "applePodcastsUrl": "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
  "scrapedAt": "2026-09-27T08:10:00.000Z"
}
```

Episode rows have `type: "episode"`:

```json
{
  "type": "episode",
  "podcastId": 1588397602,
  "podcastName": "Marketing Happy Hour",
  "episodeId": 1000791425853,
  "title": "Why Your Personal Brand Is Your Most Important Career Asset",
  "releaseDate": "2026-09-24T08:00:00Z",
  "durationSeconds": 2234,
  "description": "In this solo episode...",
  "audioUrl": "https://anchor.fm/s/50d9d294/podcast/play/...m4a",
  "episodeGuid": "1931528d-30b5-4eeb-9c21-2c8af35463e4",
  "applePodcastsUrl": "https://podcasts.apple.com/us/podcast/.../id1588397602?i=1000791425853"
}
```

The dataset has two views, Podcasts and Episodes. Inputs that return nothing are listed in `RUN_SUMMARY` in the run's key value store and cost nothing.

### Pricing

Pay per event, no subscription, no charge for platform usage on top.

| Event | Price |
|---|---|
| Podcast row saved | $0.001 (one dollar per 1,000 shows) |
| Episode row saved | $0.0005 (50 cents per 1,000 episodes) |

Examples: the top 200 podcasts in a genre cost $0.20. The top 100 with their last 10 episodes each cost $0.60. Set a maximum charge per run in Apify and the actor stops cleanly when it is reached.

### Limits

- Apple returns at most 200 shows per search and 200 per chart, and at most 200 recent episodes per show. For a full back catalog, read the show's `feedUrl` with any RSS reader.
- Apple allows about 20 requests a minute from one address, so calls are spaced about 3 seconds apart. Each search, each batch of 100 shows and each show's episode list is one call.
- Apple does not publish listener numbers, downloads or ratings through these endpoints, so they are not in the output.
- Spotify and other directories are not covered.

### FAQ

**Do I need an Apple account or an API key?** No. The actor uses Apple's public endpoints that need no sign in.

**Is the publisher a person's name?** It is the show's public byline as the publisher lists it on Apple Podcasts, often a company or network. No listener, contact or personal data is collected.

**Which genres can I use for the chart?** Common ids: 1301 Arts, 1303 Comedy, 1304 Education, 1309 TV and Film, 1310 Music, 1314 Religion and Spirituality, 1318 Technology, 1321 Business, 1324 Society and Culture, 1487 History, 1488 True Crime, 1489 News, 1512 Health and Fitness, 1533 Science, 1545 Sports.

**Can I monitor new episodes?** Yes. Schedule the actor with your show list and episodes on, and compare `episodeId` across runs.

**Is this affiliated with Apple?** No. It is an independent tool that reads Apple's public podcast data.

# Actor input Schema

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

Keywords to search Apple Podcasts for, one per line, for example "true crime" or "marketing". Results keep Apple's order, so the position column is the search rank.

## `podcastIds` (type: `array`):

Shows to look up directly. Accepts numeric ids (1200361736) or links such as https://podcasts.apple.com/us/podcast/the-daily/id1200361736.

## `topChart` (type: `boolean`):

Add Apple's top podcasts chart for the country, with rank.

## `chartGenreId` (type: `string`):

Optional genre to narrow the chart, for example 1321 Business, 1318 Technology, 1488 True Crime, 1489 News, 1303 Comedy, 1545 Sports, 1512 Health and Fitness, 1304 Education, 1324 Society and Culture. Empty means all podcasts.

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

Two letter Apple Podcasts country code, for example us, gb, ca, au, de.

## `maxResultsPerSearch` (type: `integer`):

How many shows to keep for each search term (Apple returns at most 200).

## `maxResultsPerChart` (type: `integer`):

How many ranked shows to keep from the chart (at most 200).

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

Also save each show's most recent episodes as separate rows, with title, date, duration, description and audio URL.

## `maxEpisodesPerPodcast` (type: `integer`):

How many recent episodes to save per show when episodes are on (Apple returns at most 200).

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

Stop after saving this many rows (shows plus episodes).

## Actor input object example

```json
{
  "searchTerms": [
    "marketing"
  ],
  "topChart": false,
  "country": "us",
  "maxResultsPerSearch": 50,
  "maxResultsPerChart": 100,
  "includeEpisodes": false,
  "maxEpisodesPerPodcast": 20,
  "maxItems": 1000
}
```

# Actor output Schema

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

All rows the run saved to the default dataset.

## `summary` (type: `string`):

The RUN\_SUMMARY record: counts and problems for the whole run.

# 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": [
        "marketing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pistachio_implementation/apple-podcasts").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": ["marketing"] }

# Run the Actor and wait for it to finish
run = client.actor("pistachio_implementation/apple-podcasts").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": [
    "marketing"
  ]
}' |
apify call pistachio_implementation/apple-podcasts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pistachio_implementation/apple-podcasts"
        }
    }
}
```

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/ql9phHlnJRkesIyZa/builds/YOpmhFZEx6kugbbA7/openapi.json
