Apple Podcasts · iTunes search

Apple Podcasts Scraper — Search, Charts & Episodes to CSV (No API Key)

Scrape Apple Podcasts charts, episodes, and search results through iTunes and RSS. Export CSV or JSON from the Dataset - no API key.

First paid run: set searchTerm, keep limit at 3, leave episodes off. That try run is about $0.0125. From $2.50 / 1,000 results.

Actor: taroyamada/apple-podcast-scraper. Official iTunes Search / Lookup plus RSS for recent episodes when you turn them on. No proxy. No API key. Not a chart-movement monitor and not a reviews collector.

Open Console → leave defaults → Start (limit 3 ≈ $0.0125)

Suggested Input for the first run:

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

After the dataset writes three rows, export CSV from the default Dataset. Then raise limit, add chartRequests, or set includeEpisodes true.

Demo

Watch a short walkthrough of a search run on Apify. Then follow How to start a run with the search + limit 3 input below.

Open the demo on YouTube

Search versus charts and reviews

Use this page when the job is finding shows by keyword, snapshotting a chartRequests ranking, refreshing known collection IDs, or attaching recent episode titles. Use Apple Podcasts Chart Scraper for Top Podcasts ranks and optional movement reports. Use Apple Podcasts Reviews Scraper for public ratings and review text on IDs you already have.

Apple Podcasts Scraper Chart Scraper Reviews Scraper
Intent Search, chart snapshot, watchlist lookup, optional episodes Top Podcasts chart rows and optional rank movement Public review rows, optional rating report, delta monitor
Primary input searchTerm, lookupIds, chartRequests countries, optional genreId, limit podcastIds, countries, maxPagesPerPair
Default row Search / lookup / chart snapshot rows chart_rank podcast_review
Optional report None; chart path is a snapshot only One movement report when a monitorKey sees new, changed, or dropped ranks One podcast_review_report when generateReport is true

None of these Actors is affiliated with or endorsed by Apple. Rank and search results are public catalog metadata, not download counts, audience estimates, or advertising guarantees.

Use cases

For keyword discovery and collection-ID refresh, go to Shortlist podcasts for outreach. For joining scraper chart snapshots yourself, see Track Apple Podcasts charts over time. For a source-linked movement report, use Apple Podcasts Chart Scraper.

Search quickstart

Keyword search is the lowest-friction first paid run. Set searchTerm. At least one of searchTerm, chartRequests, or lookupIds is required. country is the ISO storefront for the search (default us). limit is the maximum number of podcasts returned (1–200; live default and Store prefill 3). Keep the first run at limit 3. Leave chartRequests empty and includeEpisodes false until search output is useful. Full cheapest-run math: iTunes podcast scraper: cheapest Apple Podcasts first paid run.

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

Apple Podcasts / iTunes Scraper Input JSON: searchTerm technology, country us, limit 3, includeEpisodes false

Sample rowType is podcast_search_result. Published fields include collectionId, showName, publisher, country, sourceUrl, and fetchedAt. rank is null on search rows. README discovery-row example (placeholder show data):

{
  "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": 290783428,
      "showName": "Example Podcast",
      "publisher": "Example Network",
      "country": "us",
      "rank": null,
      "sourceUrl": "https://podcasts.apple.com/us/podcast/planet-money/id290783428",
      "fetchedAt": "2026-05-06T00:00:00.000Z"
    }
  ],
  "warnings": []
}

This Actor does not document genre filters, review text, contact emails, or pagination beyond limit. After a search run, pass collection IDs into a iTunes Lookup watchlist refresh. See Apple Podcasts search discovery (iTunes Search API).

If that first run writes 3 result rows and charges one Actor Start event, the estimate is $0.005 + (3 × $0.0025) = $0.0125. Then add chartRequests for Apple Podcasts / iTunes charts, or set includeEpisodes true for recent episode titles.

Run this search + limit 3 input on Apify

Chart snapshot

Use chartRequests for official Apple rankings. Each item can set country, feedType, and limit. Supported feedType values are podcasts and podcast-episodes. If an item omits limit, the top-level limit applies. Per-item country overrides the default storefront.

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

Each chart row can include rank, collectionId, show identifiers, sourceUrl, and fetchedAt. This is a snapshot: the Actor does not compute rank movement between runs. For new, changed, or dropped positions on a saved monitor, use Apple Podcasts Chart Scraper. See How to get Apple Podcasts chart metadata from Apple/iTunes endpoints.

Run a chart snapshot on Apify Input

Watchlist refresh

Pass known Apple Podcasts collection IDs as lookupIds. Lookup uses the official iTunes Lookup API. You can take an ID from an Apple Podcasts URL (id290783428 → 290783428).

{
  "lookupIds": ["290783428"],
  "country": "us",
  "includeEpisodes": false
}

Empty or no-change watchlist polls are described as avoiding payable default-dataset writes when nothing is saved. See Refresh Apple Podcasts watchlists (iTunes Lookup API) and One-time export vs iTunes watchlist lookup.

Run a watchlist refresh on Apify Input

How is Apple Podcasts Scraper different from Chart Scraper and Reviews Scraper?

Apple Podcasts Scraper is the search, episode, and watchlist actor. It finds public shows through official Apple/iTunes endpoints: searchTerm, chartRequests snapshots, lookupIds, and optional recent episodes. It does not emit rank movement reports or review rows. Apple Podcasts Chart Scraper is storefront Top Podcasts ranks and optional movement reports. Apple Podcasts Reviews Scraper reads public Customer Reviews RSS for collection IDs you already have.

What input is required to start a run?

The published input schema has no required array. Runtime and schema description still require at least one of searchTerm, chartRequests, or lookupIds. additionalProperties is false. Live input schema fields:

Field Type Default Notes
searchTerm string — iTunes Search API keyword. Schema prefill is technology.
chartRequests array [] Items can set country, feedType (podcasts or podcast-episodes), and limit.
lookupIds array [] Numeric Apple Podcasts collection IDs for iTunes Lookup.
country string us Default ISO storefront for search and lookup. Charts can override per item.
limit integer 3 1–200. Caps search and chart items that omit their own limit. Live default and Store prefill is 3. Empty falls back to 3.
includeEpisodes boolean false Fetch recent episodes for each resolved podcast (slower).
delivery string dataset Enum: dataset or webhook.
webhookUrl string — Used when delivery is webhook.
dryRun boolean false Runs without saving results or sending webhooks.

Do not send unpublished aliases such as an RSS feed URL field, genreId, maxEpisodesPerShow, or webhook as a delivery value. Keep the first run at limit 3, then raise limit after the output is useful.

Start a run on Apify Input

What does a result row contain?

Output is source-linked dataset rows. The published README field list is rowType, collectionId, showName, publisher, country, rank, episodeTitle, sourceUrl, and fetchedAt. Sample search rowType is podcast_search_result. rank is null on search rows. Rows also include warnings when a source is partial, and stable IDs when the workflow supports recurring checks. There is no separate output schema on the Store page. See Apple Podcasts dataset fields.

How do I export episode metadata?

Set includeEpisodes to true to fetch recent episodes for each resolved podcast. That path is slower. For official episode rankings, use chartRequests with feedType podcast-episodes. After a dataset run, export the default dataset (JSON or CSV from the dataset view). The published input does not expose a per-show episode count, a date window, or a full-catalog dump; for a known show’s complete feed, read public RSS. See the episode metadata export workflow, RSS vs Apple Podcasts Scraper, and RSS & Atom Feed Extractor when you already have public feed URLs to parse into item lists.

Export episode rows on Apify

Can I pull charts or search for more than one country?

Charts can. chartRequests is an array; each item can set its own country (ISO codes such as us, gb, jp). Search and lookup use a single default country per run. Rankings and search results differ by storefront, so compare rows by the country field instead of mixing ranks. This Actor’s chartRequests path is a rank snapshot and does not emit movement reports. See charts and search by country.

Run a country-specific request on Apify

How is Apple Podcasts Scraper priced?

Billing is pay-per-event. The live Store card is from $2.50 / 1,000 results. Published events are Actor Start at $0.005 (charged when the Actor starts; number of events charged depends on Actor memory, one event per GB, minimum one event) and result at $0.0025 (single result in the default dataset). You are not charged for Apify platform usage, only the fixed event price. The cheapest useful first paid run is search + limit 3 with includeEpisodes false: if 3 result rows and one Actor Start event charge, the estimate is $0.005 + (3 × $0.0025) = $0.0125. Empty no-change watchlist polls are described as avoiding payable default-dataset writes when nothing is saved. Dry runs do not save results or send webhooks. The default dataset is the billable surface.

Open Input → Start. Search + limit 3 ≈ $0.0125 (Start $0.005 + result $0.0025 × 3). From $2.50 / 1,000 results.

Open Apple Podcast Scraper Apify Input → Start

See Apple Podcasts Scraper pricing on Apify

How does Apple Podcasts Scraper deliver dataset, webhook, and dry-run output?

delivery defaults to dataset for reviewable output. Set delivery to webhook and provide webhookUrl after the payload shape is approved (Slack, Discord, Zapier, or any HTTP endpoint). The published enum is dataset or webhook. dryRun true runs without saving results or sending webhooks, which is useful before a live watch or webhook. See Deliver Apple Podcasts results with webhooks.

The Actor uses public Apple and RSS endpoints. It does not require account sessions, browser automation, or private podcast dashboards. No proxy is required. It is not affiliated with or endorsed by Apple.

Open Apple Podcasts Scraper on Apify

Do I need a proxy or an Apple ID to run Apple Podcasts Scraper?

No. The Actor uses public Apple and RSS endpoints. It does not require account sessions, browser automation, or private podcast dashboards. No proxy is required. It is not affiliated with or endorsed by Apple.

Run without a proxy on Apify

Does keyword search return chart rank or review text?

No. rank is null on search rows. This Actor does not document review text on the search path. For official rankings use chartRequests on this Actor, or Apple Podcasts Chart Scraper when you need a movement report. For public ratings on IDs you already have, use Apple Podcasts Reviews Scraper.

Can I pass a public RSS feed URL into Apple Podcasts Scraper?

No. Published inputs are searchTerm, chartRequests, and lookupIds. additionalProperties is false, so an unpublished RSS URL field is not accepted. RSS is used internally when includeEpisodes is true. If you already have a public feed URL and need that show’s published catalog, read the feed directly or use RSS & Atom Feed Extractor. See RSS vs Apple Podcasts Scraper and RSS feed vs iTunes Search.

Does includeEpisodes dump a show's full episode catalog?

No. includeEpisodes fetches recent episode context for each resolved podcast and is slower. The published input does not expose a per-show episode count, a date window, or a full-catalog dump. For official episode rankings, use chartRequests with feedType podcast-episodes. For a known show’s complete published history, read public RSS. See the episode metadata export workflow.

What happens on an empty or no-change watchlist poll?

Empty no-change watchlist polls are described as avoiding payable default-dataset writes when nothing is saved. Result events are charged per default-dataset item ($0.0025 each; $2.50 per 1,000). Actor Start is a separate $0.005 event charged when the Actor starts (one event per GB, minimum one event). Dry runs do not save results or send webhooks. See iTunes Lookup watchlist refresh.

Can I filter Apple Podcasts search results by genre?

No. This Actor does not document genre filters on searchTerm. Apple Podcasts Chart Scraper accepts an optional genreId for Top Podcasts charts. This Actor’s search and lookup paths use country plus searchTerm or lookupIds only. Pagination beyond limit is not documented.

What should I do with collection IDs after a search run?

Pass collection IDs into lookupIds for a watchlist refresh through the iTunes Lookup API. You can take an ID from an Apple Podcasts URL (id290783428 → 290783428). Use those IDs as podcastIds on Apple Podcasts Reviews Scraper if you need public ratings. This Actor does not emit review rows or rank-movement reports from a search run.

How to start a run

  1. Open taroyamada/apple-podcast-scraper Input on the Apify Store.
  2. Paste the search JSON above: searchTerm technology, country us, limit 3, includeEpisodes false.
  3. Leave chartRequests empty on the first paid run. Leave delivery on dataset.
  4. Start the run. Review the default dataset (JSON or CSV). Then raise limit, add charts, episodes, or a watchlist.

Open Apple Podcast Scraper Apify Input → Start

Related actors

Related pages