App Review Intelligence Scraper avatar

App Review Intelligence Scraper

Pricing

from $0.20 / 1,000 reviews

Go to Apify Store
App Review Intelligence Scraper

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

Winterly Fly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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 review event per output review and one ai-report or competitor-ai-report event 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

FieldDescription
platformapple or google
appKeyStable internal app key, e.g. apple:310633997
appNameStore app name when available
appStoreIdApple numeric ID
packageNameGoogle Play package name
countryCountry/region code used for the request
languageRequested language
reviewIdPlatform review ID or stable fallback hash
rating1-5 star score
sentimentBucketnegative, neutral, or positive
isNegativeWhether the rating is in negativeRatings
titleReview title when available
textReview body
versionApp version when available
dateISO review date
dateOnlyDate-only value
daysSinceReviewAge of the review in days
developerReplyTextDeveloper reply when available
developerReplyDateDeveloper reply date when available
helpfulCountPlatform helpful/upvote count when available
priorityScore0-100 support/operations priority score
priorityReasonsSignals behind the priority score
issueCategoriesRule-based issue categories such as crash, login, payment, ads, performance
criteriaRatingsGoogle Play feature criteria ratings when available
reviewUrlPlatform review URL when available
keywordMatchesMatched 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 install
npm test
npm run lint
npm 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:

EventLaunch 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 aiMaxReviews to control token usage.
  • DeepSeek generation can take longer than store page requests. Use aiRequestTimeoutMs if a larger report needs more time.

Example Inputs

See:

  • examples/apple-20.json
  • examples/google-20.json
  • examples/batch-competitive-ai.json
  • examples/filters-negative-keyword.json