Apple Podcasts Reviews Scraper avatar

Apple Podcasts Reviews Scraper

Pricing

from $1,500.00 / 1,000 podcast review summary reports

Go to Apify Store
Apple Podcasts Reviews Scraper

Apple Podcasts Reviews Scraper

Collect public Apple Podcasts review rows with rating, storefront, source links, and an optional aggregate rating report for reputation research.

Pricing

from $1,500.00 / 1,000 podcast review summary reports

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

6 days ago

Last modified

Categories

Share

Podcast networks, reputation teams, agencies, and research teams provide Apple Podcasts collection IDs and storefronts. This actor returns public review rows and, optionally, one source-linked rating summary report. Input a collection ID, country codes, and a bounded page count. The output contains the existing review fields plus source, fetch, row-type, and billing metadata.

Run the next report

Use the review report as a proven signal, then choose a higher-value follow-on:

Store Quickstart

Low-cost raw review check

The raw path keeps the existing review behavior and a small page cap:

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

High-value review report

Set generateReport to true when you need one aggregate podcast_review_report row. This report is the handoff to sponsor evidence or media buyer shortlist work above.

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

See docs/value-path-sample.json for the raw-to-report input pair and follow-on routes.

Input examples

Existing raw review workflow

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

Review summary report

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

Webhook plus canonical dataset delivery

{
"podcastIds": ["1535809341"],
"countries": ["us"],
"maxPagesPerPair": 1,
"generateReport": true,
"reportMode": "summary",
"maxChargeUsd": 2,
"delivery": "webhook",
"webhookUrl": "https://example.invalid/review-hook",
"dryRun": false
}

Output

The runtime envelope contains meta, the backward-compatible raw reviews array, optional report, canonical delivery rows, delivery, and deliveryAudit. When generateReport=false, rows is the existing raw review array. When generateReport=true, rows contains exactly one report row; raw reviews remain in reviews and are not sent to the dataset.

Raw rows preserve the existing fields (podcastId, country, page, reviewerName, rating, title, content, version, voteCount, updated, and reviewId) and add:

  • actorName: apple-podcast-reviews-monitor
  • rowType: podcast_review
  • sourceUrl: the official iTunes Customer Reviews RSS URL used for the row
  • fetchedAt: UTC run timestamp
  • billingEventName: apify-default-dataset-item

When requested, the single report row contains:

  • 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 their source URLs
  • sourceUrls, generatedAt, and fetchedAt
  • billingEventName: podcast-review-report

Example row shapes. In raw mode the first shape is delivered; in report mode only the second shape is delivered while the raw shape remains in the runtime reviews array:

{
"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"
}
{
"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"
}

Limits and failure behavior

  • Up to 25 unique podcast IDs, 10 unique country codes, and 10 pages per show/country pair are accepted. 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.
  • maxChargeUsd defaults to 2. For report runs, the actor fails closed before dataset write when fetched raw rows plus the report price contract would exceed the cap.
  • Empty output does not issue a dataset POST. A non-2xx dataset response or dataset network failure throws and fails the actor run; partial success is not reported as success.

Pricing and delivery

The existing raw event remains apify-default-dataset-item. The report row is delivered with Actor.pushData(report, "podcast-review-report"), so the platform must return chargedCount >= 1 or the actor fails closed. This change does not modify Cloud pricing; the custom event must already be configured in Apify for a report run to succeed. maxChargeUsd is checked against the rows actually delivered: raw rows in default mode, or the single report row in report mode.

delivery=dataset sends non-empty rows through Actor.pushData; delivery=webhook sends the complete runtime envelope to the supplied webhook and still sends only the canonical rows through Actor.pushData. dryRun=true performs no external write. deliveryAudit is written to output/phase89-delivery-audit.json and, in Apify, to PHASE89_DELIVERY_AUDIT and PHASE87_DELIVERY_AUDIT when available.

Compliance guardrails

  • Uses public Apple/iTunes Customer Reviews RSS JSON only.
  • Does not claim Apple endorsement or infer private reviewer identity.
  • Review text is public source material; use it for reputation and market research.
  • Do not use the output to target individual reviewers.
  • No login, cookie, API key, CAPTCHA bypass, or private endpoint is used.

See also