App Review Intelligence Scraper
Pricing
from $0.20 / 1,000 reviews
App Review Intelligence Scraper
Scrape public Apple App Store and Google Play reviews, then generate statistics and DeepSeek AI product intelligence reports.
Pricing
from $0.20 / 1,000 reviews
Rating
0.0
(0)
Developer
Winterly Fly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Scrape public Apple App Store and Google Play reviews, normalize the fields, and generate ready-to-read product intelligence reports.
This Actor is built for product, growth, support, and competitive intelligence teams that need more than a raw review export. Every run writes normalized review data plus a Markdown report, HTML report, JSON statistics, JSON AI analysis, and CSV/JSON review exports.
What It Does
- Scrapes Apple App Store public reviews by App Store URL or numeric Apple App ID.
- Scrapes Google Play public reviews by Google Play URL or package name.
- Supports one app or many apps in the same run.
- Supports country/region, language, max review count, date filters, rating filters, keyword filters, negative-review-only mode, and deduplication.
- Supports recent-review shortcuts, unanswered-review queues, helpful-count filters, issue tagging, and priority scoring for support/operations workflows.
- Captures platform-available metadata such as developer replies, app version, helpful/upvote count, review URL, reviewer name, country, and language.
- Generates deterministic statistics without AI.
- Optionally calls DeepSeek to produce an AI product intelligence report.
- Keeps scraping and base statistics successful when DeepSeek is unavailable or returns an error.
- Supports pay-per-event monetization: one
reviewevent per output review and oneai-reportorcompetitor-ai-reportevent for successful AI analysis.
Input
The main input field is apps.
{"apps": [{"platform": "apple","appId": "310633997","label": "WhatsApp iOS"},{"platform": "google","packageName": "com.duolingo","label": "Duolingo Android"}],"countries": ["us", "gb", "ca"],"language": "en","maxReviewsPerApp": 100,"maxRawReviewsPerApp": 500,"sinceDays": 30,"onlyNegative": false,"ratings": [],"unansweredOnly": false,"minHelpfulCount": 0,"keywords": [],"deduplicate": true,"enableAiAnalysis": true,"aiReportLanguage": "English"}
You can also use compatibility fields such as appUrl, appUrls, appleAppId, appleAppIds, googlePlayUrl, googlePlayUrls, googlePlayPackageName, and googlePackageNames.
maxRawReviewsPerApp is optional. If you leave it empty, the Actor fetches roughly the target output count for normal runs and automatically expands to 5x the target when strict filters such as date, rating, keyword, unanswered-only, or helpful-count filters are enabled.
DeepSeek API Key
This Actor is designed for platform-provided AI analysis. Configure DEEPSEEK_API_KEY as an Apify secret/environment variable on the Actor. The public input schema does not ask users to paste their own DeepSeek key, model, or API base URL. DeepSeek requests default to https://api.deepseek.com; owner-only overrides must be set through Actor environment variables.
Output
Dataset: one normalized review per item.
Key-value store records:
REPORT.md: Markdown report.REPORT.html: HTML report.analysis.json: AI status and AI/fallback analysis.statistics.json: deterministic statistics.reviews.json: normalized review array.reviews.csv: normalized review CSV.negative-reviews.json/negative-reviews.csv: negative review subset.unanswered-reviews.json/unanswered-reviews.csv: reviews without captured developer replies.priority-reviews.json/priority-reviews.csv: highest-priority support/operations queue.run-summary.json: compact run summary.
Normalized Review Fields
| Field | Description |
|---|---|
platform | apple or google |
appKey | Stable internal app key, e.g. apple:310633997 |
appName | Store app name when available |
appStoreId | Apple numeric ID |
packageName | Google Play package name |
country | Country/region code used for the request |
language | Requested language |
reviewId | Platform review ID or stable fallback hash |
rating | 1-5 star score |
sentimentBucket | negative, neutral, or positive |
isNegative | Whether the rating is in negativeRatings |
title | Review title when available |
text | Review body |
version | App version when available |
date | ISO review date |
dateOnly | Date-only value |
daysSinceReview | Age of the review in days |
developerReplyText | Developer reply when available |
developerReplyDate | Developer reply date when available |
helpfulCount | Platform helpful/upvote count when available |
priorityScore | 0-100 support/operations priority score |
priorityReasons | Signals behind the priority score |
issueCategories | Rule-based issue categories such as crash, login, payment, ads, performance |
criteriaRatings | Google Play feature criteria ratings when available |
reviewUrl | Platform review URL when available |
keywordMatches | Matched filter keywords |
AI Report Sections
When enableAiAnalysis is true and DEEPSEEK_API_KEY is available, the AI report includes:
- Management summary
- Main negative issues
- Main positive points
- Bug/crash/login/payment/ads/performance category analysis
- Version impact
- Priority review queue
- Google Play feature criteria when available
- Country/region differences
- Competitive comparison when multiple apps are provided
- Product improvement recommendations
- Customer support / operations reply priorities
- Action items
If DeepSeek fails, the Actor writes a fallback analysis based on deterministic statistics and marks analysis.json.status as failed or missing_api_key. If no reviews remain after filters, the Actor skips DeepSeek and marks the status as skipped_no_reviews.
Local Development
npm installnpm testnpm run lintnpm run test:live -- apple-20 google-20
For local PPE simulation:
$ACTOR_TEST_PAY_PER_EVENT=true ACTOR_USE_CHARGING_LOG_DATASET=true npm start
The live scenario runner writes isolated storage under:
D:\Codex\apify-app-review-intelligence\storage\scenario-runs
Pay-Per-Event Design
Configured launch events:
| Event | Launch price |
|---|---|
review | $0.0002 per output review |
ai-report | $0.15 per successful single-app AI report |
competitor-ai-report | $0.35 per successful multi-app competitive AI report |
The Actor calls:
Actor.pushData(review, 'review')for each output review.Actor.charge({ eventName: 'ai-report' })after a successful single-app AI report.Actor.charge({ eventName: 'competitor-ai-report' })after a successful multi-app AI report.
These PPE events are configured on the private Actor. The Actor remains private until Store publication is explicitly approved.
Limitations
- Apple reviews use the current public Apple web reviews API first, with legacy public RSS as a fallback.
- Apple web reviews currently do not expose version, developer reply, or helpful vote fields. Those Apple fields are filled only when the RSS fallback provides them.
- Apple and Google Play public endpoints can change over time. The Actor uses retries, hard timeouts, fallback diagnostics, and a current Google Play review data RPC with legacy fallback.
- Google Play review retrieval is capped at 1000 reviews per app/country in this version.
- No private, authenticated, or paid store data is scraped.
- DeepSeek costs depend on review sample size. Use
aiMaxReviewsto control token usage. - DeepSeek generation can take longer than store page requests. Use
aiRequestTimeoutMsif a larger report needs more time.
Example Inputs
See:
examples/apple-20.jsonexamples/google-20.jsonexamples/batch-competitive-ai.jsonexamples/filters-negative-keyword.json