# Podcast Activity Tracker: Active Apple Podcasts & Charts (`transparent_meteorite/apple-podcasts-activity-tracker`) Actor

Find active Apple Podcasts shows by keyword, chart or genre. Each row adds real activity from the show RSS feed: last episode, cadence, episodes per 90 days and a 0-100 activity score. No emails, no login, no API key.

- **URL**: https://apify.com/transparent_meteorite/apple-podcasts-activity-tracker.md
- **Developed by:** [Detroit Web Agent - Open Data](https://apify.com/transparent_meteorite) (community)
- **Categories:** Lead generation, Social media, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 podcast returneds

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

## Podcast Activity Tracker: Active Apple Podcasts Shows, Charts and Cadence

Use this to find active podcasts on Apple Podcasts by keyword, chart or genre, and track how often each show really publishes, measured from the show's own RSS feed.

**One clean row per podcast, from Apple's public podcast directory, checked against the show's live RSS feed.** Apple's directory lists millions of podcasts, and most of them stopped publishing long ago. A sponsorship buyer, a guest booker or a market researcher needs the opposite: shows that are still recording, how often they release, how many episodes they put out in the last 90 days and when the last one went live. This actor searches Apple Podcasts or reads Apple's Top Shows charts by country and genre, opens each show's RSS feed, measures its activity and returns only the shows that published within your window, with a 0 to 100 activity score.

- **What you get:** Apple id and link, show title, publisher, RSS feed URL, website, genres, country, chart name and rank, episode count, explicit flag, artwork, language, feed categories, description, last episode date, title and duration, days since the last episode, average days between episodes, episodes in the last 30 and 90 days, an active yes/no flag and an activity score.
- **Who it is for:** brands and agencies buying podcast ads and sponsorships, PR and guest-booking teams, podcast networks and talent scouts, B2B marketers planning podcast tours, and analysts who track the podcast market by genre and country.
- **Price:** $1.00 per 1,000 podcasts ($0.001 each) plus $0.00005 per run start. Shows filtered out, inactive shows and shows already delivered in an earlier monitor run are never charged.
- **Active shows only, by default:** a show is returned only when its latest episode is within `activeWithinDays` (45 by default). Turn `onlyActive` off to get every show with its activity numbers.
- **No emails, ever:** RSS feeds often carry the owner's or editor's email address. This actor strips `itunes:owner`, `managingEditor`, `webMaster` and every other email field before it reads the feed, removes email addresses and phone numbers from descriptions, and refuses to output any row that still contains an email address. See [Privacy and data scope](#privacy-and-data-scope).

One real row from our test run on 2026-11-04 (search "marketing", United States):

| Show | Publisher | Genre | Last episode | Avg days between episodes | Episodes in last 90 days | Activity score |
|---|---|---|---|---|---|---|
| Marketing Happy Hour | Marketing Happy Hour | Marketing | 2026-10-29 | 7 | 11 | 95 |
| Marketing Brew Weekly | Morning Brew Inc. | Marketing | 2026-11-04 | 7 | 13 | 97 |

- **In short:** Podcast Activity Tracker (Apify actor `transparent_meteorite/apple-podcasts-activity-tracker`) finds active Apple Podcasts shows by keyword, Apple chart, genre chart or Apple id, and adds real publishing activity measured from each show's RSS feed: last episode date, cadence, episodes per 30 and 90 days and a 0 to 100 activity score.
- **Who it is for:** podcast sponsorship and advertising buyers, PR and guest-booking teams, podcast networks, B2B marketers, market researchers.
- **Input:** search terms, Apple chart genres (Top Shows plus 29 genres and subgenres), chart size, Apple ids or URLs, countries, active window in days, minimum episodes, language, exclude explicit, read RSS feeds on or off, monitor mode, max shows (1 to 2,000).
- **Output:** 37 flat fields per show, including appleId, title, publisher, feedUrl, website, genres, chartRank, trackCount, lastEpisodeAt, daysSinceLastEpisode, avgDaysBetweenEpisodes, episodesLast90Days, isActive and activityScore.
- **Price:** $0.001 per podcast delivered plus $0.00005 per run start. Pay per result, no subscription.
- **Limits:** public directory and feed data only. No emails, no listener numbers, no download counts, no reviews.

**Key facts**

- Actor name: Podcast Activity Tracker: Active Apple Podcasts & Charts
- Actor ID: `transparent_meteorite/apple-podcasts-activity-tracker`
- Store page: https://apify.com/transparent_meteorite/apple-podcasts-activity-tracker
- Data sources: Apple iTunes Search and Lookup APIs, Apple Marketing Tools charts, Apple Podcasts genre charts, and each show's public RSS feed
- Pricing model: pay per event (`apify-actor-start` $0.00005, `podcast` $0.001)
- Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
- Access: Apify Console, REST API, JavaScript and Python clients, schedules, webhooks, Apify MCP server
- Login or third-party API key needed: no, only an Apify account
- Also known as: Apple Podcasts scraper, podcast directory scraper, podcast search API alternative, active podcast finder, podcast sponsorship list, podcast guest booking list, Apple Podcasts charts scraper
- Maintainer: transparent_meteorite (independent developer)
- Last updated: 2026-11-04

### What this Apple Podcasts activity tracker does

Apple Podcasts search answers "which shows match this word?". It does not answer "which of those shows are still publishing, and how often?". The directory keeps every show that was ever submitted, so a search for a popular topic returns many podcasts that ended years ago next to a handful that release every week. Apple's own "latest release" date is also sometimes days behind the feed. This actor closes that gap in five steps:

1. **Collects candidate shows from Apple.** It runs your search terms through the iTunes Search API, reads the Top Shows chart or any of 29 genre and subgenre charts for each country you choose, and looks up any Apple ids or Apple Podcasts URLs you paste in. Chart rows keep their chart name and rank.
2. **Prefilters for free.** Shows whose latest release on Apple is far older than your active window, shows with fewer episodes than `minEpisodes` and explicit shows (when you exclude them) are dropped before any feed is downloaded, so you do not pay for feed reads that cannot match.
3. **Reads each show's RSS feed, safely.** Feeds are streamed and cut at 400 KB, which always covers the newest episodes because podcast feeds list them first. Feeds that are slow, broken or huge never stall the run.
4. **Measures real activity.** From the feed it takes the last episode's date, title and duration, the average number of days between the last ten episodes, the number of episodes in the last 30 and 90 days, the website and the feed language and categories. Episodes scheduled in the future are ignored. When a feed cannot be read, the row falls back to Apple's latest-release date and says so in `activitySource`.
5. **Scores and filters.** Each show gets an activity score from 0 to 100 (recency, cadence, recent volume and catalog depth). Shows outside your active window, language or episode filters are dropped, and only valid, email-free rows are written and charged.

The result is a ranked list of podcasts that are alive right now, with the numbers a sponsor or booker checks first.

### Use cases

- **Podcast sponsorships and ads.** Pull the US and UK Business, Marketing and Technology charts, keep shows with `activeWithinDays: 14`, sort by `activityScore` and `episodesLast90Days`, and send rate-card requests only to shows that publish weekly. A show that released 13 episodes in 90 days gives an advertiser 13 placement slots per quarter; a show that released two does not.
- **Guest booking and PR.** Search your client's topics (for example "fintech", "SaaS founders", "leadership") and get the active shows with their website link, so every pitch goes to a podcast that is still recording and the team can find the booking form on the show's own site.
- **Podcast tours for B2B marketing.** Build a target list of 100 active shows in a niche, then re-run monthly in monitor mode to add only new shows that appear in search or in the charts.
- **Talent scouting for podcast networks.** Track a genre chart weekly across several countries and catch new shows with high cadence early, before they sign with a network.
- **Market research.** Count how many shows in a genre are active, how often they publish and how their cadence changes over time, by country. Every row carries `country`, `primaryGenre`, `avgDaysBetweenEpisodes` and `scrapedAt` for clean time series.
- **Directory and app builders.** Refresh the activity fields of a podcast database you already have by pasting Apple ids, and mark dead shows as inactive.

### Quick start: your first run in 30 seconds

1. Open the actor in Apify Console and keep the prefilled input: search term **marketing**, country **us**, max shows **25**.
2. Click **Start**. A run like this reads one Apple search page and 30 to 40 RSS feeds and finishes in under a minute.
3. Open the **Output** tab. The Overview table shows the show, publisher, genre, last episode, days since last episode, cadence, episodes in the last 90 days, activity score, chart rank, website and Apple link. Export to CSV, Excel or JSON.

Then point it at your market: add charts (for example `business` and `marketing`), more countries (`gb`, `ca`, `au`) or a shorter active window.

### Input options

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchTerms` | array of strings | none | Keywords searched in Apple Podcasts, one search per term per country (up to 200 shows each). |
| `chartGenres` | array | none | Apple charts to read: `all` (Top Shows) or a genre such as `business`, `marketing`, `technology`, `true-crime`, `health-fitness`, `comedy`, `news`, `education`, `sports` (29 genres and subgenres). |
| `chartLimit` | integer | 50 | Shows read from each chart, 1 to 200. |
| `appleIds` | array of strings | none | Apple Podcasts ids (`1200361736`) or URLs (`https://podcasts.apple.com/us/podcast/the-daily/id1200361736`). |
| `countries` | array | `["us"]` | Two-letter Apple storefront codes, for example `us`, `gb`, `ca`, `au`, `de`, `fr`, `in`. Each search and chart runs once per country. |
| `onlyActive` | boolean | true | Return only shows whose last episode is within `activeWithinDays`. |
| `activeWithinDays` | integer | 45 | The active window in days, 1 to 3,650. |
| `minEpisodes` | integer | 0 | Skip shows with fewer episodes on Apple. |
| `language` | string | none | Keep only shows whose feed language starts with this code, for example `en` or `es`. |
| `excludeExplicit` | boolean | false | Skip shows Apple marks as explicit. |
| `includeFeedActivity` | boolean | true | Read each show's RSS feed for cadence and episode counts. Turn off for a faster Apple-only run (activity then uses Apple's latest release date). |
| `onlyNewSinceLastRun` | boolean | false | Monitor mode: skip shows delivered by an earlier run that used the same store name. |
| `stateStoreName` | string | `apple-podcasts-activity-tracker-seen` | Named key-value store that remembers delivered shows. Use one per saved task. |
| `maxItems` | integer | 100 | Maximum shows to return, 1 to 2,000. |

You need at least one of `searchTerms`, `chartGenres` or `appleIds`. An empty input ends with a friendly message and costs nothing beyond the run start.

#### Example input

```json
{
  "searchTerms": ["marketing", "saas"],
  "chartGenres": ["business", "marketing"],
  "chartLimit": 100,
  "countries": ["us", "gb"],
  "activeWithinDays": 30,
  "minEpisodes": 20,
  "language": "en",
  "maxItems": 200
}
```

### Output fields

Every row has the same 37 fields, and every field can be `null` when the source does not publish it, so the dataset loads into a spreadsheet, a database or an n8n flow without schema surprises.

| Field | Meaning |
|---|---|
| `appleId`, `appleUrl` | Apple Podcasts id and show page. |
| `title`, `publisher` | Show name and the public creator or brand name from Apple's directory. |
| `feedUrl`, `website` | The show's public RSS feed and website. |
| `genres`, `primaryGenre`, `categories` | Apple genres and the feed's own categories. |
| `country`, `source`, `sourceQuery` | Storefront, how the show was found (`search`, `chart` or `id`) and the term or chart. |
| `chartName`, `chartRank` | Chart and position, for chart rows. |
| `trackCount` | Episodes Apple lists for the show. |
| `contentAdvisory`, `explicit` | Apple's advisory and a boolean. |
| `artworkUrl`, `language`, `description` | 600 px artwork, feed language and a 500-character description with emails and phone numbers removed. |
| `releaseDate` | Apple's latest-release date for the show. |
| `lastEpisodeAt`, `lastEpisodeTitle`, `lastEpisodeDurationSec`, `lastEpisodeDuration` | The newest published episode in the feed. |
| `daysSinceLastEpisode`, `isActive`, `activeWithinDays` | Recency and whether the show is inside your window. |
| `episodesInFeed`, `feedTruncated` | Episodes read from the feed and whether the 400 KB read limit was reached (the newest episodes are always included). |
| `avgDaysBetweenEpisodes`, `episodesLast30Days`, `episodesLast90Days` | Cadence and recent volume. |
| `activitySource`, `feedStatus` | `rss` or `apple`, and the feed result (`ok`, `ok_partial`, `http_404`, `unreachable`, `not_rss`, `no_feed_url`, `not_requested`). |
| `activityScore` | 0 to 100: recency 45 points, cadence 25, last-90-day volume 15, catalog depth 15. |
| `scrapedAt` | When the row was produced. |

### Sample output

A real row from the 2026-11-04 test run (description shortened):

```json
{
  "appleId": "1588397602",
  "appleUrl": "https://podcasts.apple.com/us/podcast/marketing-happy-hour/id1588397602",
  "title": "Marketing Happy Hour",
  "publisher": "Marketing Happy Hour",
  "feedUrl": "https://anchor.fm/s/50d9d294/podcast/rss",
  "website": "https://www.marketinghappyhr.com/",
  "genres": ["Marketing", "Business"],
  "primaryGenre": "Marketing",
  "country": "us",
  "source": "search",
  "sourceQuery": "marketing",
  "chartName": null,
  "chartRank": null,
  "trackCount": 289,
  "contentAdvisory": "Clean",
  "explicit": false,
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/ea/a7/5c/eaa75c82-06cf-fe11-3161-68e39f7e487f/mza_7610324141478559814.jpg/600x600bb.jpg",
  "releaseDate": "2026-10-22T12:21:00.000Z",
  "language": "en",
  "categories": ["Business", "Marketing"],
  "description": "Keeping up with marketing trends and leveling up your career doesn't have to be overwhelming...",
  "lastEpisodeAt": "2026-10-29T09:00:00.000Z",
  "lastEpisodeTitle": "How to Build a Marketing Strategy for a $250B Industry | Kiara Kempski of The Knot",
  "lastEpisodeDurationSec": 1692,
  "lastEpisodeDuration": "00:28:12",
  "daysSinceLastEpisode": 6,
  "isActive": true,
  "activeWithinDays": 45,
  "episodesInFeed": 35,
  "feedTruncated": true,
  "avgDaysBetweenEpisodes": 7,
  "episodesLast30Days": 4,
  "episodesLast90Days": 11,
  "activitySource": "rss",
  "feedStatus": "ok_partial",
  "activityScore": 95,
  "scrapedAt": "2026-11-04T20:50:59.450Z"
}
```

Note the two dates: Apple's directory said the latest release was 2026-10-22, while the feed already had an episode from 2026-10-29. Reading the feed is what makes the activity numbers current.

### Pricing

Pay per event, no monthly rental:

- **$1.00 per 1,000 podcasts** delivered ($0.001 per row), event `podcast`.
- **$0.00005 per run start**, event `apify-actor-start`.

You are charged only for podcast rows written to your dataset. Shows dropped by your filters, inactive shows (when `onlyActive` is on), shows already delivered in an earlier monitor run and invalid rows are never charged.

**Worst case per run:** a run can never cost more than $0.00005 + `maxItems` x $0.001. With the default of 100 that is $0.10005; with the example input of 25 it is $0.02505; at the maximum of 2,000 shows it is $2.00005. You can lower it further with the "Maximum cost per run" setting in Apify Console, which the actor respects row by row. A run that finds nothing costs $0.00005.

**Examples:** a weekly sponsorship scan of four charts in two countries that returns 150 active shows costs about $0.15 per week; a one-time research pull of 2,000 shows costs about $2.00. The $5 of monthly free credit on the Apify Free plan covers about 5,000 podcasts.

### How to run it

#### In Apify Console

Open the actor, add search terms, charts or Apple ids, choose countries and filters, and click **Start**. Save the input as a task to reuse it.

#### From the API or a client library

```bash
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~apple-podcasts-activity-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"chartGenres":["business"],"countries":["us","gb"],"activeWithinDays":14,"maxItems":100}'
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('transparent_meteorite/apple-podcasts-activity-tracker').call({
  searchTerms: ['fintech', 'saas'], countries: ['us'], activeWithinDays: 30, minEpisodes: 20, maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("transparent_meteorite/apple-podcasts-activity-tracker").call(run_input={
    "chartGenres": ["technology"], "countries": ["us", "ca"], "maxItems": 100})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["chartRank"], row["title"], row["avgDaysBetweenEpisodes"], row["activityScore"])
```

#### On a schedule

Create a task with your charts or search terms, set `onlyNewSinceLastRun: true` and a store name, and add a weekly schedule. Each run delivers only shows that were not in an earlier run, so you get a short list of newly found active podcasts instead of the same list every week.

#### With n8n, Make, Zapier or AI agents

Every dataset field has a label and a type, so the output maps cleanly into n8n, Make and Zapier modules, Google Sheets, Airtable, HubSpot or a webhook. AI agents can call the actor through the Apify MCP server with a plain input such as "active true crime podcasts in the UK chart, weekly or faster".

### Monitor mode: get only new shows

With `onlyNewSinceLastRun` on, the actor remembers the Apple id of every show it delivers, in a named key-value store (`stateStoreName`). On the next run a show that was already delivered is skipped before its feed is read, and skipped shows are never charged. A show is marked as delivered only after its row is written and charged, so an interrupted run never hides a show you did not receive. Use a different store name for each saved task so two monitors do not share memory.

### Why use this instead of Apple Podcasts search or a plain podcast scraper

- **Activity, not just existence.** Apple search and most directory scrapers return show metadata. This actor reads each show's feed and tells you when it last published, how often and how much in the last 90 days, then drops the shows that stopped.
- **Fresher than the directory.** Apple's latest-release date can lag the feed by days. Rows use the feed's own newest episode whenever the feed can be read.
- **Charts by country and genre.** The Top Shows chart and 29 genre and subgenre charts in any Apple storefront, with rank, in the same flat schema as search results.
- **Pay only for active shows.** Inactive shows are filtered out before charging, and most are dropped before their feed is even downloaded.
- **Compliance by design.** No owner emails, no editor emails, no phone numbers, no personal data. You get public show and brand information that is safe to keep in a CRM.
- **Flat, stable schema.** 37 fields, the same for every row, every field nullable. No nested episode arrays to flatten.

### Privacy and data scope

This actor returns public directory information about podcasts as published works: the show name, the creator or brand name Apple displays, artwork, genres, links and publishing activity.

- **No email addresses.** The RSS fields `itunes:owner`, `itunes:email`, `managingEditor`, `webMaster`, `googleplay:email`, `podcast:person` and author blocks are removed from each feed before parsing. Email addresses and phone numbers are removed from descriptions. Every row is checked again before it is written, and any row that still contains an email address is dropped and never charged.
- **No listener data.** No download counts, no listener numbers, no reviews, no ratings by named users, nothing about the audience.
- **No private content.** Only public Apple endpoints and public RSS feeds are read, with no login.

If you need to contact a show, use the website in the row, which usually has a booking or contact form. You are responsible for following the law that applies to how you use the data, including anti-spam and data protection rules.

### Limits and honest caveats

- **Search depth.** Apple's search API returns at most 200 shows per term and country. Use several specific terms, or charts, for broader coverage.
- **Chart depth.** The Top Shows chart is read up to 200 shows and each genre chart up to 200. Apple decides chart order; the actor does not re-rank it.
- **Apple rate limits.** Apple's public API allows roughly 20 requests per minute. The actor spaces its Apple requests and backs off on HTTP 403 and 429 with retries, so very large multi-country runs take a few minutes longer. Feed reads are not affected.
- **Feed read limit.** Each feed is read up to 400 KB. That always includes the newest episodes, so last-episode and cadence fields are accurate, but `episodesInFeed` then counts only the episodes read (`feedTruncated: true`). Use Apple's `trackCount` for the full catalog size.
- **Broken feeds.** When a feed is down, moved or not valid RSS, the row uses Apple's latest-release date (`activitySource: apple`) and `feedStatus` says why.
- **Activity score is a heuristic.** It measures publishing activity, not audience size or quality. Two shows with the same score can have very different audiences.
- **Run time guard.** The actor stops well before its timeout and keeps every row already delivered, so a run always ends as SUCCEEDED with partial results instead of failing.

### Data source and license

Show metadata comes from Apple's public iTunes Search and Lookup APIs, the Apple Marketing Tools charts feed and Apple Podcasts genre charts. Activity comes from each show's public RSS feed, which the show publishes so that apps can list it. No login, cookies or API keys are used. Show names, descriptions and artwork belong to their creators; Apple Podcasts is a trademark of Apple Inc. This actor is independent and is not affiliated with or endorsed by Apple. Use artwork and descriptions in line with the rights of their owners, for example to identify a show in an internal list.

### Related actors

- [YouTube Sponsorship Tracker](https://apify.com/transparent_meteorite/youtube-sponsorship-tracker): find which brands sponsor which YouTube creators, the video version of a podcast sponsorship scan.
- [YouTube Channel Scraper](https://apify.com/transparent_meteorite/youtube-channel-scraper): channel stats and recent uploads, useful when a podcast also publishes on YouTube.
- [YouTube Video Scraper](https://apify.com/transparent_meteorite/youtube-video-scraper): video-level details for podcast episodes posted as videos.

### FAQ

**Does it return podcast host emails or contact details?**
No. All email fields are removed from feeds, emails and phone numbers are removed from text, and any row containing an email address is dropped. Use the show's website to reach the team.

**What counts as an active podcast?**
A show whose newest published episode is within `activeWithinDays` days of the run, 45 by default. Episodes scheduled in the future are ignored. Set `onlyActive: false` to receive every show with its activity numbers.

**Why is a show's last episode newer than Apple's release date?**
Apple's directory refreshes on its own schedule. The actor reads the feed, which is the show's source of truth, so it often sees the newest episode first.

**Can I get the Apple Podcasts charts for other countries?**
Yes. Put any two-letter Apple storefront code in `countries`, for example `gb`, `de`, `br` or `jp`, and pick `all` or a genre in `chartGenres`.

**How is the activity score calculated?**
Recency of the last episode (45 points), cadence from the average gap between recent episodes (25), number of episodes in the last 90 days (15) and catalog depth from Apple's episode count (15). A weekly show that published this week scores in the 90s; a show silent for a year scores near zero.

**Does it list individual episodes?**
It returns one row per show with the newest episode's date, title and duration plus counts. That keeps the schema flat and the price per show low.

**How much does a typical run cost?**
$0.001 per show returned. 25 shows cost about $0.025, 1,000 shows about $1.00. Shows that do not match are not charged.

**Can I refresh shows I already know?**
Yes. Paste Apple ids or Apple Podcasts URLs in `appleIds`. Ids are looked up 100 at a time.

**Can I run it without reading feeds?**
Set `includeFeedActivity: false` for a fast Apple-only run. Activity then uses Apple's latest-release date and cadence fields are `null`.

**Do I need an Apple or Podchaser account or API key?**
No. Only an Apify account.

### Troubleshooting

- **Zero results:** your active window may be too short or your filters too strict. Check the run log, which lists how many shows were found, prefiltered and filtered out, and try `activeWithinDays: 90` or remove `language`.
- **Fewer rows than `maxItems`:** search returns at most 200 shows per term; many of them may be inactive. Add terms, charts or countries.
- **Many `apple` activity sources:** some hosts block or slow feed requests. The row is still valid and uses Apple's date.
- **A run takes longer than expected:** large multi-country chart runs wait for Apple's rate limit. The guard still ends the run before its timeout with every delivered row kept.

### Terms and responsible use

Use the data for research, sponsorship planning, booking and outreach that respects each show's own contact preferences. Do not use it for unsolicited bulk messaging. Do not republish artwork or descriptions as your own content.

### Alternatives to Podcast Activity Tracker

You can search Apple Podcasts by hand and open each show's feed in a browser, which works for ten shows but not for two hundred. Paid podcast databases offer audience estimates and contact data under a subscription. General Apple Podcasts scrapers return directory metadata without checking whether a show is still publishing. This actor sits in between: pay per show, no subscription, activity measured from the feed and no personal data.

### Use it from AI assistants (MCP)

Podcast Activity Tracker: Active Apple Podcasts & Charts works as a tool for AI assistants through the official Apify MCP server. Add this URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):

```
https://mcp.apify.com/?actors=transparent_meteorite/apple-podcasts-activity-tracker
```

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?actors=transparent_meteorite/apple-podcasts-activity-tracker",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

Then ask, for example: "Which of the top business podcasts published a new episode this week?"

### Changelog

- **0.2 (2026-11-04):** first public version. Apple search, Top Shows and 29 genre charts by country, Apple id lookup, streamed RSS activity with a 400 KB read limit, activity score, active-only filter, monitor mode, no-email enforcement, cost guard that ends runs early with partial results.

### Support

Open an issue on the actor's Issues tab in Apify Console with your run id and the input you used. Feature requests are welcome, for example new chart types or extra activity fields.

**Did this actor do the job?** If it saved you time, a short honest review on the [Reviews tab](https://apify.com/transparent_meteorite/apple-podcasts-activity-tracker/reviews) helps other people judge it. If something was off, open an Issue on this page with the input you used. I read every one and fix real bugs, usually the same day.

# Actor input Schema

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

Keywords searched in the Apple Podcasts directory (show title, publisher and topic), for example marketing, saas, true crime. Each term returns up to 200 shows per country.

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

Read the Apple Podcasts top chart for these genres in every selected country. All podcasts = the overall Top Shows chart. Each show keeps its chartRank.

## `chartLimit` (type: `integer`):

How many chart positions to read per genre and country (1-200; the overall Top Shows chart allows up to 100, larger values use the classic chart feed).

## `appleIds` (type: `array`):

Specific shows to check, as Apple ids (1200361736) or Apple Podcasts URLs (https://podcasts.apple.com/us/podcast/the-daily/id1200361736). Useful for tracking a watch list.

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

Apple storefronts as 2-letter codes, for example us, gb, ca, au, de. Search and charts run per country.

## `onlyActive` (type: `boolean`):

Return only shows whose newest episode is within the active window below. Turn off to also get dormant shows (they get isActive = false).

## `activeWithinDays` (type: `integer`):

A show is active when its newest episode was published within this many days (1-3650).

## `minEpisodes` (type: `integer`):

Skip shows with fewer episodes than this (Apple episode count). 0 = no filter.

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

Keep only shows whose feed declares this language, for example en, es or pt-br (prefix match: en also matches en-us). Leave empty for any language.

## `excludeExplicit` (type: `boolean`):

Skip shows Apple or the feed marks as explicit (brand-safety filter for sponsors).

## `includeFeedActivity` (type: `boolean`):

Read each show public RSS feed (newest 400 KB) to measure last episode, cadence and episodes per 30/90 days. Turn off for a faster Apple-only run (activity then uses the Apple latest-episode date only).

## `onlyNewSinceLastRun` (type: `boolean`):

Monitor mode: skip shows delivered in an earlier run (remembered by Apple id in a named key-value store). A repeat run on the same input charges only for new shows.

## `stateStoreName` (type: `string`):

Named key-value store that remembers delivered shows. Use a different name per watch list.

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

Maximum podcast rows delivered (and charged) this run. Rows are delivered in source order (your ids, chart rank, then search relevance).

## Actor input object example

```json
{
  "searchTerms": [
    "marketing"
  ],
  "chartLimit": 50,
  "countries": [
    "us"
  ],
  "onlyActive": true,
  "activeWithinDays": 45,
  "minEpisodes": 0,
  "excludeExplicit": false,
  "includeFeedActivity": true,
  "onlyNewSinceLastRun": false,
  "stateStoreName": "apple-podcasts-activity-tracker-seen",
  "maxItems": 25
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "marketing"
    ],
    "countries": [
        "us"
    ],
    "maxItems": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("transparent_meteorite/apple-podcasts-activity-tracker").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"],
    "countries": ["us"],
    "maxItems": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("transparent_meteorite/apple-podcasts-activity-tracker").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"
  ],
  "countries": [
    "us"
  ],
  "maxItems": 25
}' |
apify call transparent_meteorite/apple-podcasts-activity-tracker --silent --output-dataset

```

## MCP server setup

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

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/ZLvCPMGgwKRwIhJxX/builds/H331dxkzCnV6CIHIN/openapi.json
