Apple Podcasts Reviews Scraper
Pricing
from $1,500.00 / 1,000 podcast review summary reports
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
Maintained by CommunityActor 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:
- Generate sponsor evidence for source-linked public evidence and a research export.
- Build a media buyer shortlist for topic, country, cadence, and public fit signals.
- Return to Apple Podcasts discovery when a broader show set is needed.
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-monitorrowType:podcast_reviewsourceUrl: the official iTunes Customer Reviews RSS URL used for the rowfetchedAt: UTC run timestampbillingEventName: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 pairtotalReviewCountlowRatingSourceLinkedSamples: up to ten rating-1 or rating-2 samples with their source URLssourceUrls,generatedAt, andfetchedAtbillingEventName: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. maxChargeUsddefaults to2. 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
- Apple Podcasts Scraper for broad discovery.
- Podcast Category Network Benchmark Report for comparison.
- Podcast Sponsor Evidence Report for the next source-linked deliverable.