App Store + Google Play Review Export / Theme Miner avatar

App Store + Google Play Review Export / Theme Miner

Pricing

Pay per usage

Go to Apify Store
App Store + Google Play Review Export / Theme Miner

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

Brian Keefe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

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, and maxReviews.
  • 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 includeGooglePlay is true, the actor outputs explicit source_status rows with unsupported_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:

  • rowType
  • source
  • status
  • appId
  • appKey
  • country
  • language
  • reviewId
  • title
  • text
  • rating
  • reviewedAt
  • themes
  • themeEvidence
  • textSentiment
  • sentimentShift
  • featureRequest
  • competitorMentioned
  • competitorNames
  • sourceUrl
  • evidence

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 install
npm test
npm 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.json
  • src/index.js
  • src/lib/*.js
  • tests/
  • 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.