# Apple Podcasts Scraper (`axiomworks/apple-podcasts-scraper`) Actor

Find Apple Podcasts shows by keyword, category chart, or show URL and ID. Records include titles, publishers, genres, ratings, descriptions, owner contact details, websites, and latest episodes. Enriches directory data with ratings from show pages and episode details from public RSS feeds.

- **URL**: https://apify.com/axiomworks/apple-podcasts-scraper.md
- **Developed by:** [Axiom Works](https://apify.com/axiomworks) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 results

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

**Returns:** one row per podcast show with `title`, `publisher`, `primaryGenre`, `ratingAverage`, `ratingCount`, `ownerEmail`, `websiteUrl` and `latestEpisodes`.
**Input:** `{"searchTerms": ["marketing"], "country": "us", "maxItems": 10}`
**Best for:** podcast guest outreach and sponsor lead lists, category chart tracking, podcast market research.

```json
{
    "podcastId": 1588397602,
    "title": "Marketing Happy Hour",
    "publisher": "Marketing Happy Hour",
    "primaryGenre": "Marketing",
    "ratingAverage": 4.8,
    "ratingCount": 79,
    "ownerEmail": "cassie@cammmedia.com",
    "websiteUrl": "https://www.marketinghappyhr.com/"
}
```

### What does Apple Podcasts Scraper do?

Apple Podcasts Scraper collects podcast shows from the Apple Podcasts directory and returns one clean record per show. You can find shows three ways: by keyword search (the same search as the Apple Podcasts app), by category chart (the top shows in a genre such as True Crime or Business, in any country storefront), or by giving Apple Podcasts show URLs or numeric show ids directly.

Every record combines three public sources. The iTunes Search and Lookup API gives the show's identity: title, publisher, genres, episode count, artwork, explicit flag and the date of the newest episode. The show's Apple Podcasts page adds the star rating, the number of ratings and the full description. The show's own public RSS feed adds the owner name and contact email the podcaster publishes for directories, the website, the language, the number of episodes in the feed and the newest episodes with their audio links. No login or Apple account is needed.

Use it as an Apple Podcasts scraper or a simple Apple Podcasts API: shows about "marketing" in the US, the top True Crime shows in the UK, or details for a list of show URLs, exported to JSON, CSV or Excel.

### What data can you get from Apple Podcasts?

| Field | Description | Example |
|---|---|---|
| `id` | Apple Podcasts show id as a string, unique within a run | `"1588397602"` |
| `podcastId` | Apple Podcasts show id (collectionId) | `1588397602` |
| `title` | Show name | `Marketing Happy Hour` |
| `publisher` | Publisher or host name shown on Apple Podcasts | `Marketing Happy Hour` |
| `artistId` | Apple artist id of the publisher (empty for most independent shows) | `121664449` |
| `appleUrl` | Apple Podcasts show page, without the tracking query | `https://podcasts.apple.com/us/podcast/marketing-happy-hour/id1588397602` |
| `feedUrl` | The show's public RSS feed | `https://anchor.fm/s/50d9d294/podcast/rss` |
| `artworkUrl` | Cover art, 600x600 | `https://is1-ssl.mzstatic.com/.../600x600bb.jpg` |
| `primaryGenre` | Main Apple Podcasts category | `Marketing` |
| `genres` | All categories of the show | `["Marketing", "Podcasts", "Business"]` |
| `genreIds` | Apple genre ids matching `genres` | `["1492", "26", "1321"]` |
| `episodeCount` | Number of episodes Apple lists | `286` |
| `latestReleaseDate` | Release time of the newest episode (ISO 8601) | `2026-10-01T09:00:00Z` |
| `explicit` | True when Apple marks the show explicit | `false` |
| `contentAdvisoryRating` | Apple's content rating | `Clean` |
| `country` | Three-letter storefront country | `USA` |
| `searchTerm` | The search term that found the show (search mode only) | `marketing` |
| `chartRank` | Position in the category chart (chart mode only) | `3` |
| `inputType` | Which input produced the record: `search`, `chart` or `podcast` | `search` |
| `ratingAverage` | Average star rating on Apple Podcasts (0-5) | `4.8` |
| `ratingCount` | Number of star ratings | `79` |
| `description` | Show description from the Apple Podcasts page | `Keeping up with marketing trends…` |
| `ownerName` | Owner name from the RSS feed | `Marketing Happy Hour` |
| `ownerEmail` | Public owner contact email from the RSS feed | `cassie@cammmedia.com` |
| `websiteUrl` | Show website from the RSS feed | `https://www.marketinghappyhr.com/` |
| `language` | Language code from the RSS feed | `en` |
| `feedEpisodeCount` | Number of episodes in the RSS feed | `286` |
| `latestEpisodes` | Newest episodes: `title`, `publishedAt`, `durationSeconds`, `audioUrl` | see the output example |
| `scrapedAt` | When the record was produced (ISO 8601) | `2026-10-13T19:02:17.367Z` |
| `sourceUrl` | The iTunes Search or Lookup API URL the record came from | `https://itunes.apple.com/search?term=marketing&…` |

`episodeCount` is Apple's own count, and `feedEpisodeCount` counts the episodes in the RSS feed. They often match, but they can differ: some feeds keep only recent episodes, and some shows have episodes Apple no longer lists.

### How to use Apple Podcasts Scraper

1. Open Apple Podcasts Scraper in the Apify Console and go to the Input tab.
2. Fill in at least one of the three inputs: **Search terms** (keywords), **Category charts** (pick genres such as True Crime or Business from the list) or **Podcast URLs or ids** (paste show URLs or numeric ids). You can combine them in one run.
3. Choose the **Country storefront** (two letters, e.g. `us`, `gb`, `de`). Search results, charts and ratings differ by country.
4. Set **Maximum shows**. It is one total across all your inputs, so `maxItems: 20` with three search terms returns at most 20 shows in total.
5. Leave **Include ratings and description** and **Include RSS feed data** on for complete records, or turn them off for a faster run with only the iTunes API fields.
6. Click **Start**. When the run finishes, open the Output tab and export the table as JSON, CSV, Excel, XML or HTML.

Tips: Apple's search returns at most about 100 shows per term and country. To collect more shows on a topic, add related terms ("marketing", "digital marketing", "content marketing") or more countries. Duplicates across terms are returned once. Category charts list up to 200 shows. Use genre `26` for the overall top podcasts chart. A show URL's country (`/gb/podcast/...`) is used for that show, whatever the country field says. Apple's APIs normally work without a proxy. If a run reports HTTP 403 or 429 (rate limiting), turn on Apify Proxy in the Proxy section and run again.

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `searchTerms` | array of strings | One of the three | Keywords to search shows by, e.g. `["marketing"]`. |
| `genreIds` | array of strings | One of the three | Apple podcast genre ids whose top chart to collect, e.g. `["1488"]` for True Crime; `26` is the overall chart. |
| `podcastUrls` | array of strings | One of the three | Apple Podcasts show URLs or bare numeric show ids. |
| `country` | string | No | Two-letter storefront code, default `us`. |
| `countries` | array of strings | No | Extra storefront codes, e.g. `["gb","de"]`. Every search term and genre chart also runs in each of them plus `country`; each record's `country` field shows the storefront. Use it to go past Apple's ~100 shows per term and country. |
| `maxItems` | integer | No | Maximum shows across all inputs, 1-10000, default 50. |
| `includeRatings` | boolean | No | Read the show page for `ratingAverage`, `ratingCount` and `description`. Default `true`. |
| `includeFeed` | boolean | No | Read the RSS feed for owner, website, language and episodes. Default `true`. |
| `latestEpisodesLimit` | integer | No | Newest episodes to keep per show, 0-20, default 3. |
| `proxyConfiguration` | object | No | Proxy for Apple requests, default none. RSS feeds are always fetched directly. |

Common genre ids: `1488` True Crime, `1321` Business, `1489` News, `1318` Technology, `1303` Comedy, `1545` Sports, `1301` Arts, `1304` Education, `1512` Health & Fitness, `1310` Music, `1324` Society & Culture, `1533` Science, `1487` History. The input form lists every Apple podcast genre and subgenre.

Example input that combines all three modes:

```json
{
    "searchTerms": ["marketing"],
    "genreIds": ["1488"],
    "podcastUrls": [
        "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
        "1322200189"
    ],
    "country": "us",
    "maxItems": 50,
    "includeRatings": true,
    "includeFeed": true,
    "latestEpisodesLimit": 3
}
```

If an input can never work (no search term, genre or URL at all, or a country that isn't two letters), the run fails at once with a message saying what to fix. A search term with no matches, a chart that doesn't exist or a show id Apple doesn't know returns no shows for that entry and a warning in the log; the other entries still run.

### Output

Each show is one item in the run's dataset. Here are two real records from a run with `{"searchTerms": ["marketing"], "maxItems": 10}` (descriptions shortened and one episode shown for space):

```json
[
    {
        "id": "1588397602",
        "podcastId": 1588397602,
        "title": "Marketing Happy Hour",
        "publisher": "Marketing Happy Hour",
        "artistId": null,
        "appleUrl": "https://podcasts.apple.com/us/podcast/marketing-happy-hour/id1588397602",
        "feedUrl": "https://anchor.fm/s/50d9d294/podcast/rss",
        "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/ea/a7/5c/eaa75c82-06cf-fe11-3161-68e39f7e487f/mza_7610324141478559814.jpg/600x600bb.jpg",
        "primaryGenre": "Marketing",
        "genres": [
            "Marketing",
            "Podcasts",
            "Business"
        ],
        "genreIds": [
            "1492",
            "26",
            "1321"
        ],
        "episodeCount": 286,
        "latestReleaseDate": "2026-10-01T09:00:00Z",
        "explicit": false,
        "contentAdvisoryRating": "Clean",
        "country": "USA",
        "searchTerm": "marketing",
        "chartRank": null,
        "inputType": "search",
        "ratingAverage": 4.8,
        "ratingCount": 79,
        "description": "Keeping up with marketing trends and leveling up your career doesn’t have to be overwhelming. Don’t go at it alone. Marketing Happy Hour was created to help you navigate the corporate marketing world,…",
        "ownerName": "Marketing Happy Hour",
        "ownerEmail": "cassie@cammmedia.com",
        "websiteUrl": "https://www.marketinghappyhr.com/",
        "language": "en",
        "feedEpisodeCount": 286,
        "latestEpisodes": [
            {
                "title": "How to Turn Social Media Virality into Community | Angela Trotti, Consultant + Founder of Jelly Seashells",
                "publishedAt": "2026-10-08T09:03:00.000Z",
                "durationSeconds": 1266,
                "audioUrl": "https://anchor.fm/s/50d9d294/podcast/play/127056305/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2026-9-7%2F433626566-44100-2-bf3d62666b6d7.mp3"
            }
        ],
        "scrapedAt": "2026-10-13T19:02:17.367Z",
        "sourceUrl": "https://itunes.apple.com/search?term=marketing&media=podcast&entity=podcast&country=us&limit=30"
    },
    {
        "id": "1569923210",
        "podcastId": 1569923210,
        "title": "Marketing Made Simple",
        "publisher": "StoryBrand.com",
        "artistId": null,
        "appleUrl": "https://podcasts.apple.com/us/podcast/marketing-made-simple/id1569923210",
        "feedUrl": "https://rss.libsyn.com/shows/350081/destinations/2860682.xml",
        "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/51/f9/47/51f947e8-c136-a10d-8ba1-b224a46cabf0/mza_8709210704953623321.png/600x600bb.jpg",
        "primaryGenre": "Marketing",
        "genres": [
            "Marketing",
            "Podcasts",
            "Business",
            "Entrepreneurship"
        ],
        "genreIds": [
            "1492",
            "26",
            "1321",
            "1493"
        ],
        "episodeCount": 237,
        "latestReleaseDate": "2025-09-24T09:00:00Z",
        "explicit": false,
        "contentAdvisoryRating": "Clean",
        "country": "USA",
        "searchTerm": "marketing",
        "chartRank": null,
        "inputType": "search",
        "ratingAverage": 4.6,
        "ratingCount": 290,
        "description": "Hello Hero Makers! For new marketing content from StoryBrand, check out the StoryBrand Podcast at https://podcasts.apple.com/us/podcast/the-storybrand-podcast/id1092751338\n\n\nEach week on the StoryBran…",
        "ownerName": "Marketing Made Simple",
        "ownerEmail": "hello@storybrand.com",
        "websiteUrl": "http://storybrand.com",
        "language": "en",
        "feedEpisodeCount": 237,
        "latestEpisodes": [
            {
                "title": "StoryBrand Podcast #38: BIG NEWS—Introducing The StoryBrand Podcast",
                "publishedAt": "2025-09-24T09:00:00.000Z",
                "durationSeconds": 4322,
                "audioUrl": "https://traffic.libsyn.com/secure/marketingmadesimple/SBPOD_038_-_SB7_-_v1_Edit.mp3?dest-id=2860682"
            }
        ],
        "scrapedAt": "2026-10-13T19:02:17.381Z",
        "sourceUrl": "https://itunes.apple.com/search?term=marketing&media=podcast&entity=podcast&country=us&limit=30"
    }
]
```

Download the dataset as JSON, CSV, Excel, XML, RSS or HTML from the Output tab or the API.

Fields that depend on a source that didn't answer are left empty (`null`) rather than guessed. For example, if a show's RSS feed is offline, its `ownerName`, `ownerEmail`, `websiteUrl`, `language`, `feedEpisodeCount` and `latestEpisodes` are empty, and the show is still returned with its Apple data. Shows with too few ratings have no `ratingAverage` on Apple, so it stays empty too.

### How much does it cost to scrape Apple Podcasts?

Apple Podcasts Scraper is charged per result: one result is one podcast show in the dataset. You pay only for the shows returned, and `maxItems` caps how many that can be, so you always know the most a run can cost. Turning ratings or feed data on or off doesn't change the charge per show. See the Pricing tab for the current price.

### Use with AI agents (MCP)

Connect Apple Podcasts Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com/?tools=axiomworks/apple-podcasts-scraper"
        }
    }
}
```

Example prompts:

1. "Find 30 marketing podcasts in the US Apple Podcasts store and give me a table of title, publisher, rating count and owner email."
2. "What are the top 20 True Crime podcasts in the UK right now? Include each show's chart position and how many episodes it has."
3. "Look up these Apple Podcasts shows and tell me their latest episode titles and release dates: https://podcasts.apple.com/us/podcast/the-daily/id1200361736 and 1322200189."
   An agent should pass at least one of `searchTerms`, `genreIds` or `podcastUrls`, and set `maxItems` to the number of shows it needs.

### Integrations and API

Run Apple Podcasts Scraper from your own code with the Apify API. Set `APIFY_TOKEN` to your Apify API token (send it in the `Authorization` header, never in the URL).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/apple-podcasts-scraper").call(run_input={
    "searchTerms": ["marketing"],
    "country": "us",
    "maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["ratingCount"], item["ownerEmail"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/apple-podcasts-scraper').call({
    genreIds: ['1488'],
    country: 'gb',
    maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const show of items) {
    // chartRank, title, ratingAverage
}
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/axiomworks~apple-podcasts-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"podcastUrls": ["https://podcasts.apple.com/us/podcast/the-daily/id1200361736", "1322200189"], "maxItems": 5}'
```

Make, Zapier, n8n, Google Sheets and webhooks are on the Integrations tab, and runs can be scheduled.

### FAQ

**How many shows can I get for one search term?**
Apple's search returns at most about 100 shows per term and country, and the Actor returns them in Apple's order. For more, add related terms or more countries; `maxItems` still caps the total.

**Why is `ownerEmail` empty for some shows?**
The email comes from the show's own RSS feed, where the podcaster may publish a contact address for directories. Some feeds don't include one, and some hosts use relay addresses (for example an acast forwarding address). The Actor never guesses an email.

**Why are `ratingAverage` and `ratingCount` empty for some shows?**
Apple shows a rating only once a show has enough ratings in that storefront. New or small shows, and shows outside their home country, often have none. Ratings are per storefront, so the same show can have different ratings in `us` and `gb`.

**What is the difference between `episodeCount` and `feedEpisodeCount`?**
`episodeCount` is the count Apple's API reports; `feedEpisodeCount` counts the episodes in the show's RSS feed. Feeds that drop old episodes or that hold bonus content make the two differ.

**Why did my run return 0 results?**
The search term matched nothing in that country, the genre id has no chart in that storefront, or the show ids don't exist. The log and status message say which entry found nothing. Check the spelling, try the `us` storefront, or use a genre id from the input list.

**Do I need a proxy?**
Usually not. Apple's APIs allow a modest request rate, and the Actor spaces its calls. If a run is rate-limited (HTTP 403 or 429), turn on Apify Proxy; retries then go out on a new IP. RSS feeds are always fetched directly from each podcast host.

### Is it legal to scrape Apple Podcasts?

Apple Podcasts Scraper reads only public data: Apple's public iTunes Search and Lookup API, public show pages that load without an Apple account, and RSS feeds that podcasters publish so directories can list them. It doesn't log in, and it doesn't collect private information.

Some records contain personal data, such as an owner name or a contact email the podcaster chose to publish in their feed. If you store or use that data, you are responsible for following the laws that apply to you, such as the GDPR or CAN-SPAM, and for respecting each podcaster's terms. This is not legal advice; if you are unsure, ask a lawyer.

Apple Podcasts Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Apple Inc. or Apple Podcasts.

### Feedback

Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.

# Actor input Schema

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

Keywords to search Apple Podcasts shows by, e.g. 'marketing' or 'true crime'. Each term is searched in the country storefront and returns shows in Apple's order; Apple returns at most about 100 shows per term, so add terms or countries for more. A term with no matches returns 0 shows and a warning. Optional if genreIds or podcastUrls is given.

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

Apple podcast genre ids whose top chart to collect in the country storefront, e.g. '1488' True Crime, '1321' Business, '1489' News, '1318' Technology, '1303' Comedy; '26' is the overall top podcasts chart. Shows keep their chart position in chartRank (up to 200 per chart). Optional if searchTerms or podcastUrls is given.

## `podcastUrls` (type: `array`):

Apple Podcasts show URLs such as 'https://podcasts.apple.com/us/podcast/the-daily/id1200361736' or bare numeric show ids such as '1322200189' (iTunes search or lookup API URLs work too). The country in a URL overrides the country field for that show. An id that doesn't exist is skipped with a warning. Optional if searchTerms or genreIds is given.

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

Two-letter ISO 3166-1 storefront code for search and charts, e.g. 'us', 'gb', 'de', 'fr'. Default 'us'. Search results, charts and ratings differ by storefront.

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

Optional extra two-letter storefront codes, e.g. \['gb','de']. Every search term and genre chart also runs in each of these plus 'country', so you get shows from several storefronts (Apple returns at most ~100 shows per term and country). maxItems is shared across all of them; the same show is returned once.

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

Maximum number of shows to return across all search terms, charts and URLs together, 1-10000, default 50. The run stops as soon as this many shows are saved, and you are charged only for shows returned.

## `includeRatings` (type: `boolean`):

Default true: open each show's Apple Podcasts page to add ratingAverage, ratingCount and description. Set false for a faster run with only the iTunes API fields.

## `includeFeed` (type: `boolean`):

Default true: read each show's public RSS feed to add ownerName, ownerEmail, websiteUrl, language, feedEpisodeCount and latestEpisodes. A feed that is down or too slow leaves those fields empty; the show is still returned.

## `latestEpisodesLimit` (type: `integer`):

How many of the newest feed episodes to keep in latestEpisodes (title, publishedAt, durationSeconds, audioUrl), 0-20, default 3. Needs includeFeed true.

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

Proxy for Apple requests (itunes.apple.com, podcasts.apple.com), default none. Turn on Apify Proxy only if runs get rate-limited (HTTP 403/429); retries then use a new proxy IP. RSS feeds are always fetched directly.

## Actor input object example

```json
{
  "searchTerms": [
    "marketing"
  ],
  "country": "us",
  "countries": [],
  "maxItems": 10,
  "includeRatings": true,
  "includeFeed": true,
  "latestEpisodesLimit": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset with one item per result, in the order found.

# 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"
    ],
    "country": "us",
    "maxItems": 10,
    "includeRatings": true,
    "includeFeed": true,
    "latestEpisodesLimit": 3,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axiomworks/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 = {
    "searchTerms": ["marketing"],
    "country": "us",
    "maxItems": 10,
    "includeRatings": True,
    "includeFeed": True,
    "latestEpisodesLimit": 3,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("axiomworks/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 '{
  "searchTerms": [
    "marketing"
  ],
  "country": "us",
  "maxItems": 10,
  "includeRatings": true,
  "includeFeed": true,
  "latestEpisodesLimit": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call axiomworks/apple-podcasts-scraper --silent --output-dataset

```

## MCP server setup

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