App Store + Google Play Review Export / Theme Miner
Pricing
Pay per usage
App Store + Google Play Review Export / Theme Miner
Exports public App Store reviews and deterministic theme rows, with safe best-effort Google Play handling.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Brian Keefe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Production-ready Apify Actor for exporting public Apple App Store customer reviews and deterministic theme rows. Google Play handling is intentionally safe and explicit: this MVP parses public URLs and package IDs, then emits an unsupported_source status row instead of faking or scraping unstable private review access.
What it does
- Accepts Apple App Store URLs, Google Play URLs, Apple app IDs, and Google Play package IDs.
- Fetches Apple public customer review RSS pages by app ID and country.
- Parses JSON first and falls back to XML when needed.
- Filters by rating,
since, andmaxReviews. - Emits raw review rows and separate theme rows.
- Uses deterministic local theme mining only. No LLMs or external AI APIs.
- Pushes rows to the default Apify dataset when run as an Actor.
- Exposes pure functions for deterministic tests.
Public data and limitations
- Apple reviews are fetched only from public App Store RSS endpoints.
- No login, cookies, private APIs, mobile app reverse engineering, or bypass behavior is used.
- Apple RSS review availability is limited by Apple's public feed behavior and paging. This actor caps paging at 10 public RSS pages per app.
- Google Play review retrieval is not implemented here because this MVP avoids depending on unstable or unsupported public review access. If Google Play targets are provided and
includeGooglePlayistrue, the actor outputs explicitsource_statusrows withunsupported_source.
Input
Compatible with .actor/input_schema.json.
Example:
{"apps": ["https://apps.apple.com/us/app/slack/id618783545","https://play.google.com/store/apps/details?id=com.Slack"],"country": "us","language": "en-US","maxReviews": 25,"ratings": [1, 2, 3, 4, 5],"since": "2024-01-01","includeGooglePlay": true}
Output rows
The dataset contains multiple row types.
review: raw Apple review row with parsed metadata, source URL, and evidence text.theme: one row per matched deterministic theme.source_status: explicit unsupported-source row for Google Play targets.
Important fields:
rowTypesourcestatusappIdappKeycountrylanguagereviewIdtitletextratingreviewedAtthemesthemeEvidencetextSentimentsentimentShiftfeatureRequestcompetitorMentionedcompetitorNamessourceUrlevidence
See examples/sample-output.json.
Deterministic theme mining
The actor uses local keyword and rule-based classification for:
- Complaint themes like crashes, performance, notifications, billing, login/auth, ads, and UI/UX.
- Feature requests like dark mode, tablet support, export, and offline mode.
- Sentiment classification from text-only heuristics.
- Sentiment shift flags when rating and text disagree.
- Competitor-comparison-ready fields from explicit competitor name mentions.
Local development
npm installnpm testnpm run smoke
Run the actor locally:
$npm start
Apify publish and run
Create a build on Apify when ready:
$apify push
Run locally with Apify input:
$apify run --input-file=examples/sample-input.json
Project structure
.actor/actor.json.actor/input_schema.jsonsrc/index.jssrc/lib/*.jstests/tests/smoke/examples/
Notes for Hermes
- Repo is ready for publish, but intentionally not published from this workspace.
- Tests use static fixtures and mocked fetch only, so they do not depend on live App Store availability.