Apple Podcasts Reviews Scraper

Collect public Apple Podcasts review rows with rating, storefront, and source links, then optionally emit one source-linked rating summary report. This Actor fetches the official Apple/iTunes Customer Reviews RSS JSON for the collection IDs and storefronts you pass. It is not a keyword search, episode catalog, or Top Podcasts rank tool — those jobs belong on Apple Podcasts Scraper and Apple Podcasts Chart Scraper.

Open Apple Podcasts Reviews Scraper on Apify

Reviews versus search and charts

Use this page when the job is reputation: public ratings and review text for known shows, a bounded snapshot, a summary report, or a scheduled delta of new or changed reviews. Use Apple Podcasts Scraper to find collection IDs by keyword or refresh a watchlist. Use Apple Podcasts Chart Scraper for storefront Top Podcasts ranks and movement.

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

None of these Actors is affiliated with or endorsed by Apple. Review text is public source material for reputation and market research. Do not use the output to target individual reviewers. The Actor does not infer private reviewer identity.

Use cases

Get collection IDs first with search discovery or a watchlist refresh. Storefronts differ: see charts and search by country.

Low-cost raw review check

The default path keeps raw review behavior and a small page cap. mode defaults to snapshot. generateReport stays false so canonical rows are the raw review array.

{
  "podcastIds": ["1535809341"],
  "countries": ["us"],
  "maxPagesPerPair": 1,
  "generateReport": false,
  "maxChargeUsd": 0.5,
  "delivery": "dataset",
  "dryRun": false
}

Published raw fields: podcastId, country, page, reviewerName, rating, title, content, version, voteCount, updated, and reviewId, plus actorName, rowType, sourceUrl, fetchedAt, and billingEventName. README sample (placeholder review data):

{
  "actorName": "apple-podcast-reviews-monitor",
  "rowType": "podcast_review",
  "billingEventName": "apify-default-dataset-item",
  "podcastId": "1535809341",
  "country": "us",
  "page": 1,
  "reviewerName": "public-reviewer",
  "rating": 1,
  "title": "A critical review",
  "content": "Public review text.",
  "version": "1.0",
  "voteCount": 0,
  "updated": "2026-07-31T00:00:00Z",
  "reviewId": "review-1",
  "sourceUrl": "https://itunes.apple.com/us/rss/customerreviews/id=1535809341/sortby=mostrecent/json",
  "fetchedAt": "2026-08-01T00:00:00.000Z"
}

sourceUrl is the official iTunes Customer Reviews RSS URL used for the row. Up to 25 unique podcast IDs, 10 unique country codes, and 10 pages per pair are accepted. Over-limit input fails instead of being silently truncated. A failed pair is reported in meta.warnings; successful pairs remain available.

Run a raw review check on Apify

High-value review report

Set generateReport to true when you need one aggregate podcast_review_report row. Raw reviews remain in the runtime reviews array and are not sent to the dataset. reportMode is summary.

{
  "podcastIds": ["1535809341", "1641234567"],
  "countries": ["us", "gb"],
  "maxPagesPerPair": 1,
  "generateReport": true,
  "reportMode": "summary",
  "maxChargeUsd": 2,
  "dryRun": false
}

The single report row includes showCountrySummaries (review count, average rating, five-point rating distribution, and latest review date for every show/country pair), totalReviewCount, lowRatingSourceLinkedSamples (up to ten rating-1 or rating-2 samples with source URLs), sourceUrls, generatedAt, fetchedAt, and billingEventName podcast-review-report. README sample:

{
  "actorName": "apple-podcast-reviews-monitor",
  "rowType": "podcast_review_report",
  "billingEventName": "podcast-review-report",
  "reportMode": "summary",
  "showCountrySummaries": [
    {
      "podcastId": "1535809341",
      "country": "us",
      "reviewCount": 2,
      "averageRating": 3,
      "ratingDistribution": { "1": 1, "2": 0, "3": 0, "4": 0, "5": 1 },
      "latestReviewDate": "2026-07-31T00:00:00Z"
    }
  ],
  "totalReviewCount": 2,
  "lowRatingThreshold": 2,
  "lowRatingSourceLinkedSamples": [
    {
      "podcastId": "1535809341",
      "country": "us",
      "reviewId": "review-1",
      "rating": 1,
      "title": "A critical review",
      "content": "Public review text.",
      "updated": "2026-07-31T00:00:00Z",
      "sourceUrl": "https://itunes.apple.com/us/rss/customerreviews/id=1535809341/sortby=mostrecent/json"
    }
  ],
  "sourceUrls": ["https://itunes.apple.com/us/rss/customerreviews/id=1535809341/sortby=mostrecent/json"],
  "generatedAt": "2026-08-01T00:00:00.000Z",
  "fetchedAt": "2026-08-01T00:00:00.000Z"
}

The published README treats this report as the handoff to source-linked sponsor evidence or a media-buyer shortlist. Those follow-on Actors are listed on the Store page; this landing stays on review monitoring.

Generate a review summary report on Apify

Scheduled delta monitor

Use a stable monitorKey on every scheduled run. The first baseline_only run stores the current feed with zero dataset rows and zero charge. Later runs emit only new or changed reviews; an unchanged poll remains zero rows and zero charge when emitUnchanged is false.

{
  "mode": "monitor",
  "monitorKey": "network-show-1535809341-us",
  "initialRunMode": "baseline_only",
  "emitUnchanged": false,
  "podcastIds": ["1535809341"],
  "countries": ["us"],
  "maxPagesPerPair": 1,
  "generateReport": true,
  "maxChargeUsd": 2,
  "dryRun": false
}

In mode=monitor, the runtime reviews array still holds the current fetched snapshot for diagnostics, while canonical rows contain only the new or changed delivery. State advances only after canonical pay-per-event delivery succeeds; partial source failures do not advance it. emit_backfill delivers the first snapshot instead of storing it with zero rows.

Configure a review monitor on Apify

How is Apple Podcasts Reviews Scraper different from the search and chart actors?

Reviews Scraper reads the public Apple/iTunes Customer Reviews RSS JSON for collection IDs you already have. It delivers podcast_review rows or one podcast_review_report, and can emit only new or changed reviews on a scheduled monitor. It does not search by keyword, attach episode catalogs, or snapshot Top Podcasts ranks. Apple Podcasts Scraper is search, episodes, and watchlists. Apple Podcasts Chart Scraper is storefront ranks and movement reports.

What does a raw review row contain?

Each delivered raw row has rowType podcast_review. Published fields are podcastId, country, page, reviewerName, rating, title, content, version, voteCount, updated, and reviewId, plus actorName apple-podcast-reviews-monitor, sourceUrl (the official iTunes Customer Reviews RSS URL), fetchedAt, and billingEventName apify-default-dataset-item. Review text is public source material for reputation and market research. The Actor does not infer private reviewer identity or claim Apple endorsement.

When does a review summary report emit, and what does it include?

Set generateReport to true. Canonical delivery then contains exactly one podcast_review_report row; raw reviews stay in the runtime reviews array and are not sent to the dataset. The report includes showCountrySummaries (review count, average rating, five-point rating distribution, latest review date per show/country pair), totalReviewCount, up to ten rating-1 or rating-2 lowRatingSourceLinkedSamples with source URLs, sourceUrls, generatedAt, fetchedAt, and billingEventName podcast-review-report. reportMode is summary.

How does scheduled delta monitoring work?

Set mode to monitor and pass a stable monitorKey on every scheduled run. The default initialRunMode baseline_only stores the first snapshot with zero dataset rows and zero charge. Later runs emit only new or changed reviews. Leave emitUnchanged false so an unchanged poll stays zero rows and zero charge. State advances only after canonical pay-per-event delivery succeeds; partial source failures do not advance it. emit_backfill delivers the first snapshot.

How many shows, countries, and pages can I request?

The Actor accepts at most 25 unique iTunes collection IDs, 10 unique ISO-3166-1 alpha-2 country codes (lowercase), and 10 review pages per show/country pair (50 reviews each; iTunes cap). Over-limit input fails instead of being silently truncated. Each source request has a timeout and bounded retry for network and server errors. A failed pair is reported in meta.warnings; successful pairs remain available. Storefronts differ: see charts and search by country.

How is Apple Podcasts Reviews Scraper priced?

Billing is pay-per-event. The published Store price is $0.003 per delivered apify-default-dataset-item (raw review row) and $1.50 per delivered podcast-review-report event. That is $3.00 per 1,000 raw review rows. maxChargeUsd defaults to 2 and fails closed before dataset write when the estimate would exceed the cap. For report runs, the Actor checks fetched raw rows plus the report price contract before write; maxChargeUsd is then applied to the rows actually delivered (the single report row in report mode). A baseline_only first monitor run and later unchanged polls with emitUnchanged false emit zero rows and zero charge.

From $0.003 per raw review row; $1.50 per review report

See Apple Podcasts Reviews Scraper pricing on Apify

How do delivery, webhooks, and dry runs work?

delivery defaults to dataset and sends non-empty canonical rows through Actor.pushData. webhook sends the complete runtime envelope to webhookUrl and still sends only the canonical rows to the default dataset. Empty output does not issue a dataset POST. A non-2xx dataset response or dataset network failure fails the run; partial success is not reported as success. dryRun performs no external write. After the payload shape is useful, see webhooks for delivery patterns used on the related Apple Podcasts actors.

The Actor uses public Apple/iTunes Customer Reviews RSS JSON only. No login, cookie, API key, CAPTCHA bypass, or private endpoint is used.

Open Apple Podcasts Reviews Scraper on Apify

Related pages