# Apple Podcasts Scraper: Episodes & Reviews (`maximedupre/apple-podcast`) Actor

Collect public Apple Podcasts shows, episodes, charts, and listener reviews. Get source links, podcast details, and available audio URLs for research and exports.

- **URL**: https://apify.com/maximedupre/apple-podcast.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Business, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.25 / 1,000 podcast shows

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?

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

### 🎙️ Turn Apple Podcasts data into research you can use

Apple Podcasts Scraper helps podcast researchers, content planners, and developers collect public shows, episodes, charts, and listener reviews. Get names, publishers, dates, ratings, source links, and available audio URLs in structured rows for your research or app.

**Use it to:**

- Find public show details with **[Apple Podcast Scraper](https://apify.com/maximedupre/apple-podcast/examples/apple-podcast-scraper)**.
- Collect episode titles and available audio links with **[Apple Podcast Episodes](https://apify.com/maximedupre/apple-podcast/examples/apple-podcast-episodes)**.
- Compare current ranks by country with **[Apple Podcast Charts](https://apify.com/maximedupre/apple-podcast/examples/apple-podcast-charts)**.
- Read listener feedback with **[Apple Podcast Reviews](https://apify.com/maximedupre/apple-podcast/examples/apple-podcast-reviews)**.
- Explore public paid channel listings with **[Apple Podcast Subscription](https://apify.com/maximedupre/apple-podcast/examples/apple-podcast-subscription)**.
- Find public free channel listings with **[Apple Podcasts Free](https://apify.com/maximedupre/apple-podcast/examples/apple-podcasts-free)**.

#### 📦 Show details, episodes, ranks, and listener feedback

Choose one result type per run. Shows include available publisher details, genres, ratings, feed links, and people. Episodes include available dates, lengths, show notes, audio links, and publisher-supplied transcript or chapter links. You can also collect public channels, creators, participants, and genres.

Charts return show, episode, or channel rows with rank and country details. Reviews include available ratings, text, dates, authors, and helpful votes.

Each row holds one public source item. The Actor saves the first eligible match right away and ignores later repeats from other keywords, URLs, or IDs. A saved row describes only that first match.

Audio links point to files at their source. The Actor does not store or convert audio. It reads public catalog data and public publisher feeds. It does not access private subscriber audio.

#### 🚀 Collect podcast data by keyword, ID, or URL

1. Choose the result type.
2. Pick how to find shows or episodes, or choose a chart or review order.
3. Add keywords or IDs and public URLs of the source kind named in your selection.
4. Choose the country and any filters you need.
5. Set Maximum records, or leave it empty to return all available results until the source is exhausted.
6. Start the run and open the dataset to review or export the rows.

Options for other result types are ignored. The source controls which fields and content are available. A public feed can include older episodes beyond Apple's recent catalog selection, but it may leave out part of the show's history.

#### ⚙️ Input

Choose a result type, then fill in its options and shared sources or filters. You do not need an Apple Podcasts login or source API key.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | Choose the kind of records to collect. Values: `shows`, `episodes`, `charts`, `genres`, `channels`, `creators`, `participants`, `reviews`. |
| `showSelection` | string | Search uses Keywords. Direct lookup uses show IDs or URLs. Related shows, Channel shows, and Creator shows use Sources for that show, channel, or creator. New shows uses the storefront. Values: `search`, `lookup`, `related`, `channel`, `creator`, `new`. |
| `episodeSelection` | string | Search uses Keywords. Direct lookup uses episode IDs or URLs. Show history uses show IDs or URLs and includes public publisher feeds. Public feeds uses feed URLs. Creator episodes uses creator IDs or URLs. Values: `search`, `lookup`, `show`, `feed`, `creator`. |
| `releasedFrom` | string | Include episodes released on or after this date. |
| `releasedTo` | string | Include episodes released on or before this date. |
| `minDurationSeconds` | integer | Include episodes at least this long. |
| `chartType` | string | Choose show, episode, or channel rankings. Records include available ranks and storefront details. Values: `shows`, `episodes`, `channels`. |
| `reviewOrder` | string | Choose which reviews to collect first for the show IDs or URLs in Sources. Values: `newest`, `mostHelpful`. |
| `keywords` | array of strings | Enter one or more search terms. Used for Shows and Episodes with Keyword search, and for Channels. Channels can use both Keywords and Sources. |
| `sources` | array of strings | Enter IDs or public URLs of the same kind. Shows and Episodes use the source kind named in their selection. Channels and Creators accept their own IDs or URLs. Participants accepts show or episode IDs or URLs. Reviews accepts show IDs or URLs. Public feeds accepts feed URLs. Ignored for Charts, Genres, keyword searches, and New shows. |
| `country` | string | Two-letter Apple Podcasts country code, such as US or GB. Applies to all result types. |
| `language` | string | Use a language supported by the storefront, such as en-US. Leave blank to use the storefront language. |
| `genreIds` | array of strings | Limit Shows keyword searches and show or episode Charts to these Apple Podcasts genres. Use Genres to find IDs. Leave empty for all genres. |
| `contentRating` | string | For Shows and Episodes, choose clean content, explicit content, or both. Values: `all`, `clean`, `explicit`. |
| `listingType` | string | For Channels and channel Charts, choose all, free, or paid public listings. Paid listings include public catalog data only. Values: `all`, `free`, `paid`. |
| `maxItems` | integer | Stop after this many records. Leave blank to collect all available records for the chosen result type until the source is exhausted. |

**Default input**

This is the public input from the successful default-input run:

```json
{
  "resultType": "shows",
  "showSelection": "search",
  "episodeSelection": "show",
  "chartType": "shows",
  "reviewOrder": "newest",
  "keywords": [
    "science"
  ],
  "country": "US",
  "contentRating": "all",
  "listingType": "all",
  "maxItems": 10
}
```

The form pre-fills shows, the keyword `science`, and a limit of 10. The country defaults to `US`. A record limit has no fixed upper bound. Leave `maxItems` empty to return all available results until the source is exhausted.

#### 🧾 Output

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `results` | string | Opens the collected podcast rows in the dataset. |

Each dataset row has one of the shapes below. Optional fields appear only when the source provides them. Nested paths use dots, and `[]` means one entry in an array. Chart runs use the show, episode, or channel shape with the `chart` fields.

**Show fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `chart` | object | The public chart where this record was found. |
| `chart.rank` | integer | The position reported by the source chart. |
| `chart.country` | string | The country of the source chart. |
| `chart.name` | string | The chart name shown by the source. |
| `chart.genre` | object | A related public catalog item. |
| `chart.genre.id` | string | The source ID used to look up or join this item. |
| `chart.genre.name` | string | The name shown by the source. |
| `chart.genre.url` | string | The public page for this item. |
| `publisher` | string | The publisher name shown by the source. |
| `description` | string | The show description supplied by the source. |
| `artworkUrl` | string | The artwork URL supplied by the source. |
| `genres` | array of objects | The genres listed for this show. |
| `genres[].id` | string | The source ID used to look up or join this item. |
| `genres[].name` | string | The name shown by the source. |
| `genres[].url` | string | The public page for this item. |
| `contentAdvisory` | string | The content advisory reported by the source. |
| `episodeCount` | integer | The total episode count reported by the source. This may differ from the episodes returned. |
| `language` | string | The language listed for the show. |
| `releaseDate` | string | The publication date reported by the source, in ISO 8601 form. |
| `releaseCadence` | string | The release schedule listed by the source. |
| `isComplete` | boolean | Whether the source says the show has ended. |
| `websiteUrl` | string | The publisher website listed for the show. |
| `feedUrl` | string | The public publisher feed for this show. |
| `rating` | number | The average listener rating reported by the source. |
| `ratingCount` | integer | The number of ratings reported by the source. |
| `participants` | array of objects | The people listed for this show. |
| `participants[].id` | string | The public source ID for this person. |
| `participants[].name` | string | The name shown by the source. |
| `participants[].role` | string | The role listed for this person. |
| `participants[].url` | string | The public page for this person. |

This is a complete row from a successful run:

```json
{
  "recordType": "show",
  "id": "1150124880",
  "name": "Something You Should Know",
  "url": "https://podcasts.apple.com/us/podcast/something-you-should-know/id1150124880",
  "publisher": "Mike Carruthers | OmniCast Media",
  "description": "Sometimes all it takes is one little fact or one little piece of wisdom to change your life forever. That's the purpose and the hope of \"Something You Should Know.\" In each episode, host Mike Carruthers interviews top experts in their field to bring you fascinating information and advice to help you save time and money, advance in your career, become wealthy, improve your relationships and help you simply get more out of life. In addition, Mike uncovers and shares short, engaging pieces of \"intel\" you can use to make your life better - today. Right now.",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/96/57/ca/9657caf6-6375-d5ba-585b-eb2f5c9fbf8e/mza_3992023160251207455.jpeg/600x600bb.jpg",
  "genres": [
    {
      "id": "1533",
      "name": "Science",
      "url": "https://itunes.apple.com/us/genre/id1533"
    },
    {
      "id": "1304",
      "name": "Education",
      "url": "https://itunes.apple.com/us/genre/id1304"
    }
  ],
  "contentAdvisory": "clean",
  "episodeCount": 1344,
  "language": "en-US",
  "releaseDate": "2026-09-29T07:03:00Z",
  "releaseCadence": "Updated Semiweekly",
  "isComplete": false,
  "websiteUrl": "http://www.somethingyoushouldknow.net",
  "feedUrl": "https://rss.pdrl.fm/60a606/feeds.megaphone.fm/WWO9761275037",
  "rating": 4.4,
  "ratingCount": 4332,
  "participants": [
    {
      "id": "umc.cpc.4bmdk6ng13ci1p29qigx5jogy",
      "name": "Mike Carruthers",
      "role": "Host"
    },
    {
      "id": "umc.cpc.7ddt9r3pt6t99wsmdhb7aexhz",
      "name": "Miguel",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.325700snn5czz20et4huuettk",
      "name": "Francis T. McAndrew",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.54q2etcdwbrpt1hhzy8ixumqp",
      "name": "Pamela Meyer",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.4htvtwtuug9jzc3x857j6tnw",
      "name": "Marisa Franco",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.54860k92poll68m089kzgl52w",
      "name": "Dr. Eleanor Spicer Rice",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.4ijitmzymhiy81q0b64gj9ndl",
      "name": "Mithu Storoni",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.3v71dbeywfdvtt17fxbq0205y",
      "name": "Christopher Elliott",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.1k4zbcwcguwxpm8d6zxa9ej0p",
      "name": "Art Markman",
      "role": "Guest"
    },
    {
      "id": "umc.cpc.5cba3svoc41s69o6rn2muyu3e",
      "name": "Angela Duckworth",
      "role": "Guest"
    }
  ],
  "chart": {
    "rank": 1,
    "country": "US",
    "name": "Top Shows",
    "genre": {
      "id": "1533",
      "name": "Science",
      "url": "https://itunes.apple.com/us/genre/id1533"
    }
  }
}
```

**Episode fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `chart` | object | The public chart where this record was found. |
| `chart.rank` | integer | The position reported by the source chart. |
| `chart.country` | string | The country of the source chart. |
| `chart.name` | string | The chart name shown by the source. |
| `chart.genre` | object | A related public catalog item. |
| `chart.genre.id` | string | The source ID used to look up or join this item. |
| `chart.genre.name` | string | The name shown by the source. |
| `chart.genre.url` | string | The public page for this item. |
| `show` | object | A related public catalog item. |
| `show.id` | string | The source ID used to look up or join this item. |
| `show.name` | string | The name shown by the source. |
| `show.url` | string | The public page for this item. |
| `guid` | string | The publisher episode GUID used to identify or join feed episodes. |
| `description` | string | The episode description supplied by the source. |
| `showNotes` | string | The publisher show notes, including source markup when present. |
| `releaseDate` | string | The publication date reported by the source, in ISO 8601 form. |
| `durationSeconds` | number | The episode duration reported by the source, in seconds. |
| `artworkUrl` | string | The artwork URL supplied by the source. |
| `contentAdvisory` | string | The content advisory reported by the source. |
| `episodeNumber` | integer | The episode number listed by the publisher. |
| `seasonNumber` | integer | The season number listed by the publisher. |
| `episodeType` | string | The episode kind listed by the publisher, such as full, trailer, or bonus. |
| `audioUrl` | string | The public audio download URL. The file stays at its source. |
| `audioType` | string | The audio media type supplied by the source. |
| `audioSizeBytes` | integer | The audio file size in bytes reported by the source. |
| `feedUrl` | string | The public publisher feed containing this episode. |
| `transcripts` | array of objects | Public transcript links supplied by the publisher. |
| `transcripts[].url` | string | The public transcript URL. |
| `transcripts[].type` | string | The transcript media type supplied by the publisher. |
| `transcripts[].language` | string | The transcript language supplied by the publisher. |
| `chapters` | array of objects | Chapter details supplied by the publisher. |
| `chapters[].title` | string | The chapter title. |
| `chapters[].startSeconds` | number | The chapter start time in seconds. |
| `chapters[].url` | string | The page linked from this chapter. |
| `chapters[].imageUrl` | string | The image supplied for this chapter. |
| `chaptersUrl` | string | The public chapter file supplied by the publisher. |
| `keywords` | array of strings | Episode keywords supplied by the publisher. |
| `participants` | array of objects | The people listed for this episode. |
| `participants[].id` | string | The public source ID for this person. |
| `participants[].name` | string | The name shown by the source. |
| `participants[].role` | string | The role listed for this person. |
| `participants[].url` | string | The public page for this person. |

This is a complete row from a successful run:

```json
{
  "recordType": "episode",
  "id": "1000773250098",
  "name": "The Last 12 Weeks - Ep. 1",
  "url": "https://podcasts.apple.com/us/podcast/the-last-12-weeks-ep-1/id917918570?i=1000773250098",
  "show": {
    "id": "917918570",
    "name": "Serial",
    "url": "https://podcasts.apple.com/us/podcast/serial/id917918570"
  },
  "description": "In 1992, David Wood became El Paso’s most notorious convicted serial killer. He has been on death row ever since. More than 30 years later, his lawyers have just a few months  to argue his innocence and stop his execution.\n To find out about new shows from Serial Productions, and get a look behind the scenes, sign up for our newsletter at nytimes.com/serialnewsletter.\n Have a story pitch, a tip, or feedback on our shows? Email us at serialshows@nytimes.com\n\n Hosted by Simplecast, an AdsWizz company. See pcm.adswizz.com for information about our collection and use of personal data for advertising.",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/ff/90/4f/ff904fc7-5dd8-495a-6ec5-fec7ada275be/mza_17541278032225597641.jpg/600x600bb.jpg",
  "contentAdvisory": "explicit",
  "durationSeconds": 2468,
  "releaseDate": "2026-06-18T10:00:00Z",
  "episodeNumber": 1,
  "seasonNumber": 17,
  "episodeType": "full",
  "audioUrl": "https://dts.podtrac.com/redirect.mp3/pdst.fm/e/pfx.vpixl.com/6qj4J/nyt.simplecastaudio.com/521189a6-a4f6-404d-85cf-455a989a10a4/episodes/4990f699-46ab-48fa-b4fc-b8f3c4d3e165/audio/128/default.mp3?aid=rss_feed&awCollectionId=521189a6-a4f6-404d-85cf-455a989a10a4&awEpisodeId=4990f699-46ab-48fa-b4fc-b8f3c4d3e165&feed=PpzWFGhg",
  "feedUrl": "https://feeds.simplecast.com/PpzWFGhg",
  "guid": "4699fc7f-5b03-4813-a08f-f30718974b0f",
  "participants": [
    {
      "id": "umc.cpc.4ulmmjrodo0r13pmz75ml1dcb",
      "name": "Sarah Koenig",
      "role": "Host"
    },
    {
      "id": "umc.cpc.4mraijlnkin8fhask3zfy2tmw",
      "name": "Dana Chivvis",
      "role": "Host"
    }
  ],
  "discoveryValue": "1000773250098"
}
```

**Channel fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `chart` | object | The public chart where this record was found. |
| `chart.rank` | integer | The position reported by the source chart. |
| `chart.country` | string | The country of the source chart. |
| `chart.name` | string | The chart name shown by the source. |
| `description` | string | The channel description shown by the source. |
| `artworkUrl` | string | The artwork URL supplied by the source. |
| `publisher` | string | The publisher name shown by the source. |
| `websiteUrl` | string | The website listed for the channel. |
| `listingType` | string | The channel listing type reported by the source, such as free, paid, or hybrid. |
| `shows` | array of objects | The shows publicly listed in this channel. |
| `shows[].id` | string | The source ID used to look up or join this item. |
| `shows[].name` | string | The name shown by the source. |
| `shows[].url` | string | The public page for this item. |

This is a complete row from a successful run:

```json
{
  "recordType": "channel",
  "id": "6442475667",
  "name": "Wondery",
  "url": "https://podcasts.apple.com/us/channel/wondery/id6442475667",
  "publisher": "Wondery, Inc.",
  "description": "Your home for Wondery podcasts. \n",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/PodcastSource221/v4/25/3d/ff/253dff27-0404-3fcc-515c-4e3b06d6da13/2fd88d30-2229-4baf-b33b-3e8cc0097687.jpg/600x600bb.jpg",
  "websiteUrl": "https://wondery.com",
  "listingType": "hybrid",
  "discoveryValue": "Wondery"
}
```

**Creator fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `artworkUrl` | string | The artwork URL supplied by the source. |
| `shows` | array of objects | The shows publicly associated with this creator. |
| `shows[].id` | string | The source ID used to look up or join this item. |
| `shows[].name` | string | The name shown by the source. |
| `shows[].url` | string | The public page for this item. |
| `episodes` | array of objects | The episodes publicly associated with this creator. |
| `episodes[].id` | string | The source ID used to look up or join this item. |
| `episodes[].name` | string | The name shown by the source. |
| `episodes[].url` | string | The public page for this item. |

This is a complete row from a successful run:

```json
{
  "recordType": "creator",
  "id": "204040224",
  "name": "TED Talks",
  "url": "https://podcasts.apple.com/us/artist/ted-talks/204040224",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Features128/v4/c1/ed/8e/c1ed8e1a-8750-0175-1700-1d592f013cca/pr_source.png/600x600bb.jpg",
  "shows": [
    {
      "id": "1544098624",
      "name": "How to Be a Better Human",
      "url": "https://podcasts.apple.com/us/podcast/how-to-be-a-better-human/id1544098624"
    },
    {
      "id": "160904630",
      "name": "TED Talks Daily",
      "url": "https://podcasts.apple.com/us/podcast/ted-talks-daily/id160904630"
    },
    {
      "id": "1554567118",
      "name": "ReThinking",
      "url": "https://podcasts.apple.com/us/podcast/rethinking/id1554567118"
    },
    {
      "id": "1346314086",
      "name": "Worklife with Molly Graham",
      "url": "https://podcasts.apple.com/us/podcast/worklife-with-molly-graham/id1346314086"
    },
    {
      "id": "470623173",
      "name": "TED Health",
      "url": "https://podcasts.apple.com/us/podcast/ted-health/id470623173"
    },
    {
      "id": "470622782",
      "name": "TED Business",
      "url": "https://podcasts.apple.com/us/podcast/ted-business/id470622782"
    },
    {
      "id": "470624027",
      "name": "TED Tech",
      "url": "https://podcasts.apple.com/us/podcast/ted-tech/id470624027"
    },
    {
      "id": "1368017834",
      "name": "TED en Español",
      "url": "https://podcasts.apple.com/us/podcast/ted-en-espa%C3%B1ol/id1368017834"
    },
    {
      "id": "281315460",
      "name": "TED Talks Daily (HD video)",
      "url": "https://podcasts.apple.com/us/podcast/ted-talks-daily-hd-video/id281315460"
    },
    {
      "id": "1509561884",
      "name": "TEDx Shorts",
      "url": "https://podcasts.apple.com/us/podcast/tedx-shorts/id1509561884"
    },
    {
      "id": "1534967020",
      "name": "Speed & Scale",
      "url": "https://podcasts.apple.com/us/podcast/speed-scale/id1534967020"
    },
    {
      "id": "1566425638",
      "name": "Body Stuff with Dr. Jen Gunter",
      "url": "https://podcasts.apple.com/us/podcast/body-stuff-with-dr-jen-gunter/id1566425638"
    },
    {
      "id": "1437306870",
      "name": "The TED Interview",
      "url": "https://podcasts.apple.com/us/podcast/the-ted-interview/id1437306870"
    },
    {
      "id": "160892972",
      "name": "TED Talks Daily (SD video)",
      "url": "https://podcasts.apple.com/us/podcast/ted-talks-daily-sd-video/id160892972"
    },
    {
      "id": "1504596643",
      "name": "Checking In with Susan David",
      "url": "https://podcasts.apple.com/us/podcast/checking-in-with-susan-david/id1504596643"
    },
    {
      "id": "1385700943",
      "name": "ZigZag",
      "url": "https://podcasts.apple.com/us/podcast/zigzag/id1385700943"
    },
    {
      "id": "1238801741",
      "name": "Sincerely, X",
      "url": "https://podcasts.apple.com/us/podcast/sincerely-x/id1238801741"
    },
    {
      "id": "1514010062",
      "name": "Far Flung with Saleem Reshamwala",
      "url": "https://podcasts.apple.com/us/podcast/far-flung-with-saleem-reshamwala/id1514010062"
    }
  ],
  "episodes": [
    {
      "id": "1000550140430",
      "name": "Democracy needs an update",
      "url": "https://podcasts.apple.com/us/podcast/democracy-needs-an-update/id1509561884?i=1000550140430"
    }
  ],
  "discoveryValue": "https://podcasts.apple.com/us/artist/ted-talks/204040224"
}
```

**Participant fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `role` | string | The role listed for this person. |
| `show` | object | A related public catalog item. |
| `show.id` | string | The source ID used to look up or join this item. |
| `show.name` | string | The name shown by the source. |
| `show.url` | string | The public page for this item. |
| `episode` | object | A related public catalog item. |
| `episode.id` | string | The source ID used to look up or join this item. |
| `episode.name` | string | The name shown by the source. |
| `episode.url` | string | The public page for this item. |

This is a complete row from a successful run:

```json
{
  "recordType": "participant",
  "id": "umc.cpc.44uq48n3rb908qb8vf8kanwnk",
  "name": "Andrew D. Huberman",
  "role": "Host",
  "episode": {
    "id": "1000791985134",
    "name": "What Humans, Animals and Plants Tell Us About Consciousness | Michael Pollan",
    "url": "https://podcasts.apple.com/us/podcast/what-humans-animals-and-plants-tell-us-about/id1545953110?i=1000791985134"
  },
  "show": {
    "id": "1545953110",
    "name": "Huberman Lab",
    "url": "https://podcasts.apple.com/us/podcast/huberman-lab/id1545953110"
  },
  "discoveryValue": "1000791985134"
}
```

**Review fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The review title shown by the source. |
| `url` | string | The public source page for this record. |
| `discoveryValue` | string | The submitted keyword, URL, or ID that first found this record. |
| `show` | object | A related public catalog item. |
| `show.id` | string | The source ID used to look up or join this item. |
| `show.name` | string | The name shown by the source. |
| `show.url` | string | The public page for this item. |
| `rating` | number | The listener rating in this review. |
| `text` | string | The full review text shown by the source. |
| `date` | string | The review date reported by the source, in ISO 8601 form. |
| `author` | object | The public reviewer details. |
| `author.name` | string | The reviewer name shown by the source. |
| `author.url` | string | The public reviewer profile URL. |
| `helpfulVotes` | integer | The helpful vote count reported by the source. |
| `totalVotes` | integer | The total vote count reported by the source. |
| `country` | string | The storefront country where this review is published. |

This is a complete row from a successful run:

```json
{
  "recordType": "review",
  "id": "14527255012",
  "name": "No Agenda",
  "url": "https://itunes.apple.com/us/review?id=269169796&type=Podcast",
  "show": {
    "id": "269169796",
    "name": "No Agenda Show",
    "url": "https://podcasts.apple.com/us/podcast/no-agenda-show/id269169796"
  },
  "rating": 5,
  "text": "Rob Dew is a great fit, make it so!",
  "date": "2026-09-08T17:31:58-07:00",
  "author": {
    "name": "captainirish",
    "url": "https://itunes.apple.com/us/reviews/id41188130"
  },
  "helpfulVotes": 0,
  "totalVotes": 0,
  "country": "US",
  "discoveryValue": "269169796"
}
```

**Genre fields**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | The kind of public record. |
| `id` | string | The source ID used to look up or join this record. |
| `name` | string | The name or title shown by the source. |
| `url` | string | The public source page for this record. |
| `parent` | object | A related public catalog item. |
| `parent.id` | string | The source ID used to look up or join this item. |
| `parent.name` | string | The name shown by the source. |
| `parent.url` | string | The public page for this item. |
| `children` | array of objects | The child genres listed by the source. |
| `children[].id` | string | The source ID used to look up or join this item. |
| `children[].name` | string | The name shown by the source. |
| `children[].url` | string | The public page for this item. |

This is a complete row from a successful run:

```json
{
  "recordType": "genre",
  "id": "1321",
  "name": "Business",
  "url": "https://itunes.apple.com/us/genre/id1321",
  "children": [
    {
      "id": "1410",
      "name": "Careers",
      "url": "https://itunes.apple.com/us/genre/id1410"
    },
    {
      "id": "1493",
      "name": "Entrepreneurship",
      "url": "https://itunes.apple.com/us/genre/id1493"
    },
    {
      "id": "1412",
      "name": "Investing",
      "url": "https://itunes.apple.com/us/genre/id1412"
    },
    {
      "id": "1491",
      "name": "Management",
      "url": "https://itunes.apple.com/us/genre/id1491"
    },
    {
      "id": "1492",
      "name": "Marketing",
      "url": "https://itunes.apple.com/us/genre/id1492"
    },
    {
      "id": "1494",
      "name": "Non-Profit",
      "url": "https://itunes.apple.com/us/genre/id1494"
    }
  ]
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. The charged outcomes are a saved public podcast show, podcast episode, listener review, or chart entry. Each charge covers the available details for that outcome. Episode audio links are included only when available.

Empty, setup, diagnostic, and no-result work do not create these charged outcomes. Check the Apify pricing panel for current prices and plan tiers.

#### 🔌 Integrations

Export the dataset as JSON, CSV, or Excel, or read it through the Apify API. Use Apify schedules for repeat runs and webhooks to notify your app when a run ends.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I collect private subscription episodes?

The Actor collects public catalog details, including public paid channel listings. It does not access private subscriber audio or private publisher dashboards.

##### Does it return every episode ever released?

It returns episodes available from Apple Podcasts or public publisher feeds. A feed may include older episodes, but the Actor cannot recover episodes absent from those public sources.

##### Can it work as an Apple podcast downloader?

It returns available public audio URLs. The files stay at their source. It does not store, mirror, or convert them.

##### Does it create transcripts or summaries?

No. It can return public transcript links supplied by publishers. It does not generate transcripts, summaries, or sentiment analysis.

##### Why do reviews differ by country?

Reviews come from the selected storefront country. The source limits which reviews are available. Choose newest first or most helpful to control which reviews to collect first.

##### What happens when a show matches more than one keyword?

The Actor saves its first eligible match and ignores later repeats. It does not add later matches to the saved row.

##### What happens when I leave Maximum records empty?

The Actor returns all available results for the chosen result type until the source is exhausted.

##### Where can I open the official Apple Podcasts website?

Open [Apple Podcasts](https://podcasts.apple.com/) to view public show and episode pages. This Actor returns structured data from those public sources for exports and apps.

##### Is Apple Podcasts free data the same as a free Actor run?

The `free` listing filter selects public free channel listings. It does not mean the Actor run is free. This Actor uses the pay-per-event pricing shown on Apify.

### 📝 Changelog

**v0.0** (02-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~apple-podcast/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [RSS Feed Reader](https://apify.com/maximedupre/rss-feed-reader): collect feed content and enclosures from known public podcast feeds alongside other RSS or Atom feeds.
- [YouTube Music Scraper](https://apify.com/maximedupre/youtube-music-scraper): find podcast playlists and public creator data on YouTube Music.
- [Apple 🍎 Podcasts Extractor](https://apify.com/jupri/apple-podcast): explore public podcast shows, artists, episodes, and channels.
- [Apple Podcast Reviews Scraper](https://apify.com/seemuapps/apple-podcast-reviews-scraper): collect listener ratings and feedback for a selected show.
- [Apple Podcast Episodes Scraper](https://apify.com/coder_zoro/apple-podcast-episodes-scraper): collect episode details and available audio URLs from a podcast ID.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `resultType` (type: `string`):

Choose the kind of records to collect.

## `showSelection` (type: `string`):

Search uses Keywords. Direct lookup uses show IDs or URLs. Related shows, Channel shows, and Creator shows use Sources for that show, channel, or creator. New shows uses the storefront.

## `episodeSelection` (type: `string`):

Search uses Keywords. Direct lookup uses episode IDs or URLs. Show history uses show IDs or URLs and includes public publisher feeds. Public feeds uses feed URLs. Creator episodes uses creator IDs or URLs.

## `releasedFrom` (type: `string`):

Include episodes released on or after this date.

## `releasedTo` (type: `string`):

Include episodes released on or before this date.

## `minDurationSeconds` (type: `integer`):

Include episodes at least this long.

## `chartType` (type: `string`):

Choose show, episode, or channel rankings. Records include available ranks and storefront details.

## `reviewOrder` (type: `string`):

Choose which reviews to collect first for the show IDs or URLs in Sources.

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

Enter one or more search terms. Used for Shows and Episodes with Keyword search, and for Channels. Channels can use both Keywords and Sources.

## `sources` (type: `array`):

Enter IDs or public URLs of the same kind. Shows and Episodes use the source kind named in their selection. Channels and Creators accept their own IDs or URLs. Participants accepts show or episode IDs or URLs. Reviews accepts show IDs or URLs. Public feeds accepts feed URLs. Ignored for Charts, Genres, keyword searches, and New shows.

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

Two-letter Apple Podcasts country code, such as US or GB. Applies to all result types.

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

Use a language supported by the storefront, such as en-US. Leave blank to use the storefront language.

## `genreIds` (type: `array`):

Limit Shows keyword searches and show or episode Charts to these Apple Podcasts genres. Use Genres to find IDs. Leave empty for all genres.

## `contentRating` (type: `string`):

For Shows and Episodes, choose clean content, explicit content, or both.

## `listingType` (type: `string`):

For Channels and channel Charts, choose all, free, or paid public listings. Paid listings include public catalog data only.

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

Stop after this many records. Leave blank to collect all available records for the chosen result type until the source is exhausted.

## Actor input object example

```json
{
  "resultType": "shows",
  "showSelection": "search",
  "episodeSelection": "show",
  "chartType": "shows",
  "reviewOrder": "newest",
  "keywords": [
    "science"
  ],
  "country": "US",
  "contentRating": "all",
  "listingType": "all",
  "maxItems": 10
}
```

# Actor output Schema

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

Open the collected records in the dataset.

# 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 = {
    "resultType": "shows",
    "keywords": [
        "science"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/apple-podcast").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 = {
    "resultType": "shows",
    "keywords": ["science"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/apple-podcast").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 '{
  "resultType": "shows",
  "keywords": [
    "science"
  ],
  "maxItems": 10
}' |
apify call maximedupre/apple-podcast --silent --output-dataset

```

## MCP server setup

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

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/NxOF2OqeboKmCbVxz/builds/0KskofyYFq5lHHNf5/openapi.json
