Apple Podcasts Scraper — Search, Charts & Episodes to CSV avatar

Apple Podcasts Scraper — Search, Charts & Episodes to CSV

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Apple Podcasts Scraper — Search, Charts & Episodes to CSV

Apple Podcasts Scraper — Search, Charts & Episodes to CSV

Apple Podcasts scraper for search results, charts, and episodes via iTunes + RSS. Export search results to CSV from the Dataset (JSON too). No API key. Try a search with limit 3 for about $0.0125. From $2.50 / 1,000 results.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

1

Bookmarked

30

Total users

6

Monthly active users

a day ago

Last modified

Share

README

Apple Podcasts Scraper

What you get in one click: Apple Podcasts search + chart/lookup rows (show name, publisher, collection ID, source URL) via public iTunes + RSS. No API key.

CTA: On the Store page click Try for free → Input → leave the prefilled defaults → Start. First paid proof ≈ $0.0125 (limit 3).

{
"searchTerm": "technology",
"country": "us",
"limit": 3,
"includeEpisodes": false
}

Do not clear Limit. Empty Limit still bills results; runtime falls back to 3 (max 200).

Demo

Paid first run ≈ $0.0125 total (limit 3): Actor Start $0.005 + 3×$0.0025.

Store Quickstart

Low-cost discovery

Start with one search term and one country. This keeps the initial source check small; use the returned show IDs or source URLs in the Reviews, Chart, or Media Buyer workflow above.

Recommended first run:

{
"searchTerm": "technology",
"country": "us",
"limit": 3,
"includeEpisodes": false
}

High-value follow-on reports

This actor remains the low-cost source step. The linked Reviews and Chart actors provide the next evidence/report step, while the Media Buyer actor provides the shortlist/export deliverable. Their Store pages are the pricing source of truth for those value events.

See docs/value-path-sample.json for the low-cost discovery input and the three follow-on routes.

Use with Apify MCP

Exact actor: taroyamada/apple-podcast-scraper

Sample input JSON:

{
"searchTerm": "technology",
"country": "us",
"limit": 3,
"includeEpisodes": false,
"delivery": "dataset"
}

Run the next report

Use this actor for focused discovery, then move into the proven Apple Podcasts workflow:

These follow-on actors use public podcast and RSS surfaces. Start with a small discovery set, then pass the useful public source URLs or search terms into one report workflow.

Input examples

Search quickstart

{
"searchTerm": "technology",
"country": "us",
"limit": 3,
"includeEpisodes": false
}

Chart rank check

{
"chartRequests": [
{
"country": "us",
"feedType": "podcasts",
"limit": 25
}
],
"includeEpisodes": false
}

Watchlist refresh

{
"lookupIds": [
"1535144780"
],
"includeEpisodes": true,
"maxEpisodesPerShow": 3
}

Sample output

This is a discovery-row example. It is intentionally smaller than the report, evidence, and export outputs produced by the linked follow-on actors.

{
"meta": {
"actorName": "apple-podcast-scraper",
"actorTitle": "Apple Podcasts Scraper",
"bundle": "Podcast Research & Media Planning Pack",
"fetchedAt": "2026-05-06T00:00:00.000Z",
"totalRows": 1
},
"rows": [
{
"actorName": "apple-podcast-scraper",
"rowType": "podcast_search_result",
"collectionId": 1535144780,
"showName": "Example Podcast",
"publisher": "Example Network",
"country": "us",
"rank": null,
"sourceUrl": "https://podcasts.apple.com/us/podcast/example/id1535144780",
"fetchedAt": "2026-05-06T00:00:00.000Z"
}
],
"warnings": []
}

Output fields

  • rowType
  • collectionId
  • showName
  • publisher
  • country
  • rank
  • episodeTitle
  • sourceUrl
  • fetchedAt

Rows also include source URLs, fetch timestamps, warnings when a source is partial, and stable IDs when the workflow supports recurring change detection.

Pricing and no-change runs

$0.001 actor start and $0.003 per dataset row. Empty no-change watchlist runs should avoid dataset writes.

The default dataset is the billable surface. Dry runs, validation-only runs, missing-key warnings, and unchanged recurring polls should not write payable default-dataset rows.

Use this actor for low-cost discovery and source validation. The linked Reviews, Chart, and Media Buyer actors have separate report and export events; their Store pages are the pricing source of truth for those deliverables.

Compliance guardrails

  • Uses public Apple and RSS endpoints; it is not affiliated with or endorsed by Apple.
  • Does not require account sessions, browser automation, or private podcast dashboards.
  • Use output for research, ranking analysis, and monitoring workflows.
  • Do not use provider emblems or wording that implies approval by an upstream data provider.

See also

The three routes above cover review evidence, chart movement, and shortlist workflows for discovered shows. Reach the sponsor evidence report from the Reviews or Chart actor after a public signal is worth investigating.

Actor input Schema

searchTerm (type: string):

Optional keyword search powered by the iTunes Search API. This is the lowest-friction quickstart lane for the first useful buyer run.

chartRequests (type: array):

Optional array of Apple rankings requests. Leave this empty for the cheapest first success, then add one chart lane after the search quickstart is green. Each item can include {"country":"us","feedType":"podcasts","limit":10}. Supported feedType values: podcasts, podcast-episodes.

lookupIds (type: array):

Optional list of Apple Podcasts collection IDs to resolve through the iTunes Lookup API. Add these when you want recurring watchlist refreshes for known shows.

country (type: string):

Default ISO country code for search and lookup requests (us, gb, jp, etc). Chart requests can override this per item.

limit (type: integer):

Maximum number of podcasts returned for search, and the default limit for chart requests that omit their own limit. Keep the first run small, then scale up only after the quickstart output is already useful.

includeEpisodes (type: boolean):

Also fetch recent episodes for each resolved podcast (slower). Leave this off unless episode-level context materially improves the workflow.

delivery (type: string):

How to deliver results. Start with 'dataset' for reviewable output, then move to 'webhook' after the buyer approves the payload shape.

webhookUrl (type: string):

Webhook URL to send results to when delivery is 'webhook'. Works with Slack, Discord, Zapier, or any HTTP endpoint.

dryRun (type: boolean):

If true, runs without saving results or sending webhooks. Useful for testing a new watch setup or validating a webhook endpoint before going live.

Actor input object example

{
"searchTerm": "technology",
"chartRequests": [],
"lookupIds": [],
"country": "us",
"limit": 3,
"includeEpisodes": false,
"delivery": "dataset",
"dryRun": false
}

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

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 = {
"searchTerm": "technology",
"chartRequests": [],
"lookupIds": [],
"limit": 3
};
// Run the Actor and wait for it to finish
const run = await client.actor("taroyamada/apple-podcast-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

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 = {
"searchTerm": "technology",
"chartRequests": [],
"lookupIds": [],
"limit": 3,
}
# Run the Actor and wait for it to finish
run = client.actor("taroyamada/apple-podcast-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

echo '{
"searchTerm": "technology",
"chartRequests": [],
"lookupIds": [],
"limit": 3
}' |
apify call taroyamada/apple-podcast-scraper --silent --output-dataset

MCP server setup

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com/?tools=fetch-actor-details,taroyamada/apple-podcast-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/82cKuLhJJl9vLKVec/builds/8K4VbesCg53YWCEoC/openapi.json