# Podcast Search with RSS Feeds (`gubidonius/podcast-search`) Actor

Search Apple Podcasts and get the show, the publisher, the episode count and the RSS feed URL. Apple caps every search at 100 with no page two, so this searches several country stores and merges them. No key and no login.

- **URL**: https://apify.com/gubidonius/podcast-search.md
- **Developed by:** [Gregory Bolshakov](https://apify.com/gubidonius) (community)
- **Categories:** Social media, MCP servers, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Podcast Search with RSS Feeds

Search Apple Podcasts and get back the show, the publisher, the episode count and the RSS
feed URL in one table.

### The 100 result ceiling, and the way around it

Apple's search returns at most 100 results and there is no page two. Measured 2026-08-29:
asking for 500 returns 100 and reports no error, and `offset` is ignored outright, so
offset=100 hands back the same first row as offset=0.

Anything built on a single search has a hard ceiling of 100 shows, whatever it claims.

What does work is asking a different country's store. The catalogues overlap but are not
the same. Searching "business" in one store gave 100 shows. The same term across six stores
gave 322, merged on the show id.

```
US   100 results, 100 new
GB   100 results,  47 new
CA   100 results,  28 new
AU   100 results,  47 new
DE   100 results,  65 new
IN   100 results,  35 new
```

`genreId` was tried as a second axis and returned nothing new, so it is not used here.

The run summary reports, per term and per store, how many came back and how many were new,
and flags `hitStoreCeiling` when a store returned the full 100 so you know there is more to
find.

### The RSS feed

`feedUrl` is the field most people came for, because it is where the episodes are. Apple
omits it on a small number of shows, about 1 in 160 in a 488 show sample. Those rows still
come back with the feed null, and the summary counts them. Turn on **Only shows with an RSS
feed** to drop them instead.

### Notes

A show that matches two of your terms is returned once and billed once. `foundInStore` and
`foundBy` record which store and which term found it.

### Access

Free, no key, no login.

# Actor input Schema

## `terms` (type: `array`):

What to search for. A topic, a publisher or a show name.

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

Apple returns at most 100 results per search and has no page two. Different country stores hold different catalogues, so adding stores is the only way past that. Six stores gave 322 shows where one gave 100.

## `requireFeed` (type: `boolean`):

Apple omits the feed URL on a small number of shows. Turn this on to drop those, if the feed is what you came for.

## `maxShowsPerTerm` (type: `integer`):

Counted after merging the stores and removing duplicates.

## `includeOwnerContact` (type: `boolean`):

Reads each show's RSS feed for the contact the podcaster published in it. Off by default because it costs one request per show, where the search itself costs one request per hundred. Only addresses at a company or the show's own domain are returned. A private mailbox is reported as withheld rather than returned, so this is a way to reach a show and not a list of people's personal addresses.

## Actor input object example

```json
{
  "terms": [
    "startup",
    "venture capital"
  ],
  "countries": [
    "US",
    "GB",
    "CA",
    "AU",
    "DE"
  ],
  "requireFeed": false,
  "maxShowsPerTerm": 300,
  "includeOwnerContact": false
}
```

# Actor output Schema

## `podcasts` (type: `string`):

Title, publisher, episode count, genres and the RSS feed.

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

Per term and per store counts, and whether a search hit Apple's 100 result ceiling.

# 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 = {
    "terms": [
        "startup",
        "venture capital"
    ],
    "countries": [
        "US",
        "GB",
        "CA",
        "AU",
        "DE"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gubidonius/podcast-search").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 = {
    "terms": [
        "startup",
        "venture capital",
    ],
    "countries": [
        "US",
        "GB",
        "CA",
        "AU",
        "DE",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("gubidonius/podcast-search").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 '{
  "terms": [
    "startup",
    "venture capital"
  ],
  "countries": [
    "US",
    "GB",
    "CA",
    "AU",
    "DE"
  ]
}' |
apify call gubidonius/podcast-search --silent --output-dataset

```

## MCP server setup

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

```

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/p0FHexeqryg7TCDlS/builds/jbgCWyDu9FtkYXGQ0/openapi.json
