# Apple Podcasts Scraper: Ratings, Episodes, Reviews & Charts (`hydrocore/apple-podcasts-scraper`) Actor

Scrape Apple Podcasts: show details with star rating and 5-star breakdown, hosts, related shows and publishing stats; full episode lists from RSS; reviews from up to 89 country stores; Top charts by country and genre with rank changes. Pay per row, hard spend caps.

- **URL**: https://apify.com/hydrocore/apple-podcasts-scraper.md
- **Developed by:** [Hydrocore Data](https://apify.com/hydrocore) (community)
- **Categories:** Social media, News
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.55 / 1,000 show records

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 Scraper: Ratings, Episodes, Reviews & Charts

Get **Apple Podcasts data** in one run: show details with the **star rating and 5-star breakdown**, full **episode lists**, listener **reviews from up to 89 country stores**, and the **Top charts** by country and genre with **rank changes since your last run**. No login, no API key, no proxy.
List podcasts by **Apple link, Apple ID, RSS feed URL or name**, search by keyword, or start from a chart, and get clean rows ready for spreadsheets, dashboards, sponsorship research or AI tools.

- **Show records:** name, publisher, genres, rating average, rating count and the **number of 5, 4, 3, 2 and 1-star ratings**, hosts, channel, related shows, "more from this publisher", paid-content flag, plus publishing stats from the RSS feed (how often it publishes, still active or not, average episode length, hosting provider, transcripts)
- **Episodes:** everything the show's public RSS feed publishes (usually the whole back catalog, not just Apple's latest episodes), newest first, with Apple episode IDs and links added
- **Reviews:** Apple publishes up to 500 recent reviews per show **per country**; add more countries to get more. Filter by stars (for example 1-2 star complaints only) and by date
- **Charts:** Top Shows (overall and 19 genres, up to 200 positions) and Top Subscriber Shows for any country, with previous rank, change and new/up/down/same
- **Privacy-friendly:** no owner e-mail addresses and no reviewer profile links are collected; reviews keep only the public nickname
- **Hard limits** on rows and money. You never pay for podcasts that weren't found, duplicates, or reviews and episodes outside your filters.

### Why this one is better

Comparison with the two most-used Apple Podcasts Actors on Apify, based on their public Store pages on **3 November 2026**:

| | **This Actor** | sourabhbgp / Apple Podcasts Scraper | logiover / Apple Podcasts Scraper (episodes) |
|---|---|---|---|
| **Price per 1,000 shows / reviews / chart entries** | **$2.55** | $3.00 | episodes only |
| **Price per 1,000 episodes** | **$2.10** | $3.00 | $2.50 (Free plan) down to $1.75 |
| **Start fee** | $0.00005 (Apify's standard start event) | none | $0.00005 |
| **Star-rating breakdown (5★ ... 1★ counts)** | **Yes** | Average and count only | No |
| **Hosts, channel, related shows** | **Yes** | Channel data in a separate mode | No |
| **Reviews** | Up to 500 per country store, **any number of stores in one run** (89 available), star and date filters | Up to 2,000 per show, newest or most helpful | No reviews |
| **Charts with rank changes** | Yes, 20 genres + subscriber chart | Yes, plus Top Series and Trending Episodes | No |
| **Publishing stats** (frequency, active, avg. length, host provider) | Yes | Frequency and active flag (with RSS option) | No |
| **Input** | Apple links, IDs, RSS feeds **and names, mixed in one list**; search and charts in the same run | One mode per run (10 modes) | Search, IDs, RSS feeds |
| **Personal data** | No owner e-mails, no reviewer profile links | Owner e-mail and reviewer profile link included | n/a |
| **Spend limit** | "Max spend (USD)" input plus "Maximum cost per run" in Run options, checked before every batch | Max results per run | Run options |

sourabhbgp's Actor has modes this one does not have (publisher catalogs, paid channels, episode keyword search, Trending Episodes, Top Series) and can return more than 500 reviews from a single store. Prices and features can change; check each Actor's page for the latest. Higher Apify plans get lower prices from logiover's tiered pricing.

### How to use it

1. Under **Podcasts**, add one show per line: an Apple link (`https://podcasts.apple.com/us/podcast/the-daily/id1200361736`), an ID (`1200361736`), an RSS feed or a name (`Hardcore History`). Or use **Search Apple Podcasts** and/or **Top charts**.
2. Choose **Show record detail** (Full is the default).
3. Optional: set **Max episodes per show** and **Max reviews per show** (both 0 by default, so you only pay for what you ask for).
4. Optional: a date filter, star filter, review countries, and **Max spend (USD)**.
5. Press **Start**. Rows appear in the **Output** tab (Shows, Episodes, Reviews and Charts tables) while the run is going.

To track the charts, schedule the Actor daily with a chart country set. To monitor new reviews, schedule it with **...or only the last N days** set to 1 or 7.

### What you get

Rows start with `recordType` (`show`, `episode`, `review` or `chart-entry`). Rows of the same type always have the same columns in the same order; empty values are `null`, numbers are numbers and dates are ISO 8601 in UTC. The examples below are real rows from a test run on 2026-11-04, shortened to the most useful columns.

**Show record** (`recordType: "show"`):

```json
{
  "recordType": "show",
  "appleId": 1200361736,
  "name": "The Daily",
  "publisher": "The New York Times",
  "appleUrl": "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
  "feedUrl": "https://feeds.simplecast.com/Sl5CSM3S",
  "primaryGenre": "Daily News",
  "genres": [
    "Daily News",
    "News"
  ],
  "episodeCountApple": 2770,
  "latestEpisodeAt": "2026-11-04T10:51:00.000Z",
  "ratingAverage": 4.3,
  "ratingCount": 106127,
  "ratingStars5": 77821,
  "ratingStars4": 8651,
  "ratingStars3": 5076,
  "ratingStars2": 3987,
  "ratingStars1": 10592,
  "appleUpdateFrequency": "Daily",
  "yearsActive": "2017 - 2026",
  "hosts": [
    "Michael Barbaro",
    "Natalie Kitroeff",
    "..."
  ],
  "hasPaidContent": true,
  "relatedShows": [
    {
      "appleId": 1548604447,
      "name": "The Ezra Klein Show"
    },
    {
      "appleId": 1222114325,
      "name": "Up First from NPR"
    },
    "..."
  ],
  "hostingProvider": "Simplecast",
  "episodesInFeed": 68,
  "publishingFrequency": "weekly",
  "isActive": true,
  "avgEpisodeMinutes": 44.9,
  "hasTranscripts": false,
  "foundBy": "input",
  "scrapedAt": "2026-11-05T04:16:51.313Z"
}
```

**Episode row** (`recordType: "episode"`):

```json
{
  "recordType": "episode",
  "appleId": 1200361736,
  "showName": "The Daily",
  "title": "A Landslide Victory for Democrats",
  "publishedAt": "2026-11-04T10:51:38.000Z",
  "durationSeconds": 2082,
  "audioUrl": "https://dts.podtrac.com/redirect.mp3/pdst.fm/e/pfx.vpixl.com/6qj4J/pscrb.fm/rss/p/tracking.swap.fm/track/4jdbJYYRKqK96EGqOzQb/nyt.simplecastaudio.com/03d8b49...",
  "episodeType": "full",
  "description": "On Tuesday night, the blue wave that polls predicted landed with extraordinary force across the United States as Democrats flipped control of both the House...",
  "guid": "fdac966d-236d-4f35-afb9-4eb8f3f8a303",
  "appleEpisodeId": 1000799791974,
  "appleEpisodeUrl": "https://podcasts.apple.com/us/podcast/a-landslide-victory-for-democrats/id1200361736?i=1000799791974",
  "scrapedAt": "2026-11-05T04:16:51.370Z"
}
```

**Review row** (`recordType: "review"`):

```json
{
  "recordType": "review",
  "appleId": 1200361736,
  "showName": "The Daily",
  "rating": 5,
  "title": "REALLY Important resource",
  "text": "Sometimes I look at the story of the day and I think: why should I care about that? But I listen anyhow and at the end I’m always glad I did. This is such a...",
  "authorName": "(reviewer nickname hidden in this example)",
  "reviewedAt": "2026-11-03T16:04:02.000Z",
  "storefront": "us",
  "voteCount": 0,
  "voteSum": 0,
  "reviewId": "14746491435",
  "sort": "mostrecent",
  "scrapedAt": "2026-11-05T04:16:52.043Z"
}
```

**Chart entry** (`recordType: "chart-entry"`, US top shows chart):

```json
{
  "recordType": "chart-entry",
  "chartCountry": "us",
  "chartType": "Top Shows",
  "chartGenre": "All podcasts",
  "chartGenreId": 26,
  "rank": 1,
  "previousRank": 1,
  "rankChange": 0,
  "movement": "same",
  "previousChartAt": "2026-11-05T04:15:01.076Z",
  "appleId": 1200361736,
  "name": "The Daily",
  "publisher": "The New York Times",
  "primaryGenre": "Daily News",
  "primaryGenreId": 1526,
  "appleUrl": "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
  "releaseDate": "2026-11-04T02:51:00-07:00",
  "scrapedAt": "2026-11-05T04:16:48.428Z"
}
```

**Views.** The Output tab opens in **Overview (shows)**. There are also **Episodes**, **Reviews**, **Charts**, **Ratings** (star breakdown) and **Detailed** (every field) views.

> Changed in v1.1: the nested `ratingHistogram` object is now `ratingStars5` … `ratingStars1`; review `date` is now `reviewedAt` (UTC); chart `chartFetchedAt` is now `scrapedAt`; all dates are UTC; every row type has a fixed column order with `null` for missing values.

All fields are described in the **Output** tab (dataset schema). A `RUN_SUMMARY` record in the run's key-value store lists, for every podcast, search and chart, what was saved and what was skipped for free, and which charted shows dropped out since your last run.

### Pricing

Pay per event. You only pay for rows saved to your dataset, plus Apify's tiny standard start fee. No platform usage charges on top.

| Event | Price | Per 1,000 |
|---|---|---|
| **Show record** | $0.00255 | $2.55 |
| **Episode** | $0.0021 | $2.10 |
| **Review** | $0.00255 | $2.55 |
| **Chart entry** | $0.00255 | $2.55 |
| **Actor start** (Apify's standard start event, per run) | $0.00005 | |

Examples: one show with 50 episodes and 100 reviews = $0.00255 + $0.105 + $0.255 = **$0.36**. The US Top 100 chart = **$0.26**. 25 search results = **$0.064**. A daily Top 200 check of 3 genres = **$1.53** per day.

The start fee is Apify's standard event and applies to every run, even one that saves nothing.

**Never charged:** podcasts or names that weren't found, invalid links, the same show listed twice, duplicate reviews (same review in several countries), reviews outside your star or date filter, episodes outside your date filter, failed requests.

### Input options

| Option | Default | What it does |
|---|---|---|
| Podcasts | none | Apple links, IDs, RSS feed URLs or names, one per line |
| Search Apple Podcasts | none | Keywords; one show record per podcast found |
| Max podcasts per search | 25 | Up to 200 (Apple's limit) |
| Top charts: countries | none | Two-letter store codes, for example us, gb, de |
| Top charts: genres | All podcasts | Overall chart and/or any of 19 genre charts |
| Chart type | Top shows | Top shows or Top subscriber shows |
| Chart positions | 100 | 1-200 (subscriber chart: 1-100) |
| Track rank changes between runs | on | Adds previous rank, change and movement |
| Also save a show record for every charted show | off | Full show records for chart shows |
| Show record detail | Full | Full, Basic (Apple catalog only) or None |
| Apple store country | us | Used for search, names and IDs |
| Max episodes per show | 0 | Newest first from the RSS feed |
| Only items published on or after / only the last N days | none | Date filter for episodes and reviews |
| Include episode HTML description | off | Adds the original HTML show notes |
| Max reviews per show | 0 | Up to 500 per country store |
| Review countries | us | Store codes in order, or `all` for 89 stores |
| Review order | Newest first | Newest first or most helpful first |
| Minimum / maximum stars | 1 / 5 | Star filter for reviews |
| Also get episodes and reviews for search and chart results | off | Apply the episode and review limits to found shows too |
| Max rows in total | 0 (off) | Hard row limit for the run |
| Max spend (USD) | none | Stop before charging more than this |

Example input:

```json
{
  "podcasts": ["https://podcasts.apple.com/us/podcast/the-daily/id1200361736", "Hardcore History", "https://feeds.npr.org/510289/podcast.xml"],
  "maxEpisodesPerShow": 20,
  "maxReviewsPerShow": 200,
  "reviewCountries": ["us", "gb", "ca", "au"],
  "maxStars": 2,
  "lastDays": 90,
  "chartCountries": ["us"],
  "chartGenres": ["all", "true-crime"],
  "chartSize": 50,
  "maxSpendUsd": "2"
}
```

### FAQ

**Do I need an Apple account or API key?**
No. The Actor uses Apple's public iTunes Search and Lookup service, Apple's public review and chart feeds, the public Apple Podcasts show page and each show's public RSS feed. Nothing needs a login.

**Why only 500 reviews per country?**
Apple's public review feed holds the 500 most recent (or most helpful) written reviews per show for each country store. Reviews written in other countries are separate, so add more **Review countries** (or `all`) to collect more. Each review is saved once even if Apple shows it in several stores. Ratings without a written review are not published one by one; you get them as totals in the show record's rating breakdown.

**Why are there more episodes than Apple shows?**
Episodes come from the show's own RSS feed, which usually has the whole back catalog; Apple's catalog service only returns recent episodes. The Actor adds Apple episode IDs and links where it can match them. A few publishers keep only recent episodes in their feed (The Daily's feed lists the latest 69); then the Actor also adds any older episodes Apple still lists. Subscriber-only (paid) episodes are not included.

**How does name search work?**
The Actor searches Apple Podcasts and picks the exact title match if there is one, otherwise the top result. The run log shows the pick and other close matches. If the wrong show is picked, paste the Apple link or ID instead.

**Can I give an RSS feed for a show that isn't on Apple?**
Yes. You get the show record and episodes from the feed. If the same feed is listed on Apple, the Actor finds it automatically and adds the Apple rating, ID and reviews.

**How does chart tracking work?**
Each chart is remembered in a key-value store named `apple-podcasts-chart-history` in your Apify account. The next run of the same chart (country, type, genre) adds `previousRank`, `rankChange` and `movement`. Shows that fell off the chart are listed in `RUN_SUMMARY`. Schedule a daily run to build a ranking history.

**How fast is it?**
The Actor waits about 0.7 seconds between requests to Apple, to be polite. A show with 50 episodes and 500 reviews takes about 10 seconds; a Top 200 chart takes about 2 seconds; reviews from all 89 stores take about 2 minutes per show.

**How do I make sure I never spend more than a set amount?**
Set **Max spend (USD)** or **Maximum cost per run** in Run options (the lower one wins). The Actor checks the limit before saving each batch and stops before it would go over. **Max rows in total** is an extra hard stop.

**What happens if Apple is slow or limits requests?**
The Actor retries network errors, timeouts and "too many requests" answers with growing pauses and follows Apple's Retry-After header. If a show still fails, it keeps what was saved, notes the problem in `RUN_SUMMARY` and moves on. Failed requests are never charged.

**Is it legal? What about privacy?**
The Actor only reads data that Apple and podcast publishers publish openly, at a polite rate, without logging in and without getting around any access control. Reviews are written by real people, so they can be personal data (for example under the GDPR) even though they are public; that's why only the public nickname is kept and no profile links or e-mail addresses are collected. Episode descriptions, audio and review texts are copyrighted by their authors, and some publishers limit their feeds to personal use, so you are responsible for how you use the content. This Actor is not affiliated with or endorsed by Apple. If in doubt, ask a lawyer.

**Will a run fail because one podcast is wrong?**
No. Unknown IDs and names, links without an ID and broken feeds are logged, listed in `RUN_SUMMARY` and skipped for free; everything else is still collected and the run finishes normally.

**Something doesn't work.**
Open an issue on the Issues tab with the run link. Every run ends with a clear status message and a `RUN_SUMMARY`.

# Actor input Schema

## `podcasts` (type: `array`):

One podcast per line. Use an Apple Podcasts link (https://podcasts.apple.com/us/podcast/the-daily/id1200361736), an Apple podcast ID (1200361736), an RSS feed URL (https://feeds.npr.org/510289/podcast.xml) or a podcast name (Hardcore History). Names are looked up with Apple's search and the exact title match is preferred; the run log shows which show was picked. RSS feeds are matched back to Apple automatically when possible, so ratings and reviews still work. The same show listed twice is collected once.

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

Find podcasts by keyword (for example: woodworking, true crime, AI startups). Each search saves one show record per podcast found, ranked as in Apple's search. Good for building lists of shows in a niche.

## `maxSearchResults` (type: `integer`):

How many podcasts to keep from each search (Apple returns at most 200).

## `chartCountries` (type: `array`):

Two-letter Apple store codes (us, gb, ca, au, de, fr, jp ...) whose Top Shows chart you want. Leave empty for no charts. Each chart position is one "Chart entry" row.

## `chartGenres` (type: `array`):

Which charts to read for every country: the overall chart (All podcasts) and/or genre charts such as Comedy or True Crime. Genre charts are available for "Top shows" only.

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

"Top shows" is the main Apple Podcasts chart. "Top subscriber shows" ranks shows with Apple Podcasts Subscriptions.

## `chartSize` (type: `integer`):

How many positions to save per chart (top 10, top 50 ... up to 200; Top subscriber shows stop at 100).

## `trackChartChanges` (type: `boolean`):

Remember each chart in a named key-value store (apple-podcasts-chart-history) in your account and add previous rank, rank change and movement (new, up, down, same) to every chart entry. Shows that dropped out are listed in the run summary. Schedule the Actor daily to get a ranking history.

## `chartShowRecords` (type: `boolean`):

Save a full show record (ratings, hosts, feed stats ...) for every show on the charts. Each one is charged as a "Show record".

## `showDetails` (type: `string`):

What to save for each podcast you list (and for search results). Full adds the star-rating average, rating count and 5-star histogram, hosts, channel, related shows and publishing stats from the RSS feed (frequency, active or not, hosting provider, transcripts). Every show record costs the same.

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

Two-letter store code used for searches, names and Apple IDs (us, gb, de ...). Apple links that contain a country (podcasts.apple.com/gb/...) use their own country.

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

Newest episodes first, read from the show's public RSS feed (the full back catalog, not just Apple's latest 200), with Apple episode IDs and links added. 0 = no episodes.

## `since` (type: `string`):

Optional. Episodes and reviews older than this date are skipped for free. Example: 2026-01-01.

## `lastDays` (type: `integer`):

Optional alternative to the date above (handy for scheduled runs): only episodes and reviews from the last N days. 0 = off. If both are set, the later date wins.

## `includeEpisodeHtml` (type: `boolean`):

Also save the original HTML show notes (with links). The plain-text description is always included.

## `maxReviewsPerShow` (type: `integer`):

Apple publishes up to 500 recent written reviews per show per country store. Add more countries below to go beyond 500. 0 = no reviews.

## `reviewCountries` (type: `array`):

Apple store codes to read reviews from, in order (us, gb, ca, au, in ...). Use "all" for all 89 stores that publish reviews (slower: about 1 second per store). Each review appears once even if it shows up in several stores.

## `reviewSort` (type: `string`):

Newest first works best with the date filter (the Actor stops reading once reviews get too old).

## `minStars` (type: `integer`):

Only save reviews with at least this many stars. Reviews outside the range are skipped for free. To get only complaints, set Minimum stars 1 and Maximum stars 2.

## `maxStars` (type: `integer`):

Only save reviews with at most this many stars. To get only complaints, set Minimum stars 1 and Maximum stars 2.

## `collectForFoundShows` (type: `boolean`):

Apply the episode and review limits above to every show found by search or charts too, not only to the podcasts you listed. Can add many rows: check your limits.

## `maxRowsTotal` (type: `integer`):

Optional hard limit on saved rows for the whole run. 0 = no limit.

## `maxSpendUsd` (type: `string`):

Optional, for example 1.50. The run stops before going over it. Apify's own "Maximum cost per run" run option is respected too; the lower of the two applies. Leave empty for no extra limit.

## Actor input object example

```json
{
  "podcasts": [
    "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
    "Hardcore History"
  ],
  "searchTerms": [],
  "maxSearchResults": 25,
  "chartCountries": [],
  "chartGenres": [
    "all"
  ],
  "chartType": "top",
  "chartSize": 100,
  "trackChartChanges": true,
  "chartShowRecords": false,
  "showDetails": "full",
  "country": "us",
  "maxEpisodesPerShow": 10,
  "lastDays": 0,
  "includeEpisodeHtml": false,
  "maxReviewsPerShow": 50,
  "reviewCountries": [
    "us"
  ],
  "reviewSort": "mostrecent",
  "minStars": 1,
  "maxStars": 5,
  "collectForFoundShows": false,
  "maxRowsTotal": 0
}
```

# Actor output Schema

## `shows` (type: `string`):

Show records with ratings, genre, publishing stats and links.

## `episodes` (type: `string`):

Episodes with dates, duration, audio and Apple links.

## `reviews` (type: `string`):

Reviews with stars, title, text, date and store country.

## `charts` (type: `string`):

Chart positions with rank changes since your previous run.

## `ratings` (type: `string`):

Star rating breakdown (5★ to 1★) per show.

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

Every saved row; recordType is show, episode, review or chart-entry.

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

Per podcast, search and chart: what was saved, what was skipped for free and why; total charged and why the run stopped.

# 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 = {
    "podcasts": [
        "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
        "Hardcore History"
    ],
    "searchTerms": [],
    "chartCountries": [],
    "maxEpisodesPerShow": 10,
    "maxReviewsPerShow": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hydrocore/apple-podcasts-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 = {
    "podcasts": [
        "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
        "Hardcore History",
    ],
    "searchTerms": [],
    "chartCountries": [],
    "maxEpisodesPerShow": 10,
    "maxReviewsPerShow": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hydrocore/apple-podcasts-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 '{
  "podcasts": [
    "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
    "Hardcore History"
  ],
  "searchTerms": [],
  "chartCountries": [],
  "maxEpisodesPerShow": 10,
  "maxReviewsPerShow": 50
}' |
apify call hydrocore/apple-podcasts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hydrocore/apple-podcasts-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/ActctOHh6zMmnQeMG/builds/8QI88fO3eOtHAVqfa/openapi.json
