App Store Developer Replies — Google Play Reviews avatar

App Store Developer Replies — Google Play Reviews

Pricing

$0.50 / 1,000 app review scrapeds

Go to Apify Store
App Store Developer Replies — Google Play Reviews

App Store Developer Replies — Google Play Reviews

App Store developer replies and Google Play developer replies for one app: stars, text, version, thumbs-up, and developer reply. Sort newest, most relevant, or by rating, and filter by star. $0.50 per 1,000 reviews. No browser.

Pricing

$0.50 / 1,000 app review scrapeds

Rating

0.0

(0)

Developer

Joel Smith

Joel Smith

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

App Store developer replies and Google Play developer replies for one app: stars, text, app version, and the developer reply when the store publishes one. Sort by newest, most relevant, or rating, and optionally keep a single star rating.

$0.50 per 1,000 reviews (review-scraped at $0.0005). Ten reviews cost $0.005. The app summary row is not billed. Pure HTTP, 256 MB, no browser.

Use this Actor when you need:

  • the newest Google Play reviews, including thumbs-up count and the developer reply
  • Apple App Store reviews with title, vote sum, and vote count
  • one run that can cover both stores
  • a star filter so you only pay for the ratings you asked for

Run on Apify

Start here

The Store example is 10 newest Spotify reviews on Google Play. Leave it and click Start.

{
"store": "google",
"appId": "com.spotify.music",
"country": "us",
"language": "en",
"sort": "NEWEST",
"maxReviews": 10,
"includeAppSummary": true
}

Open the dataset view Reviews and developer replies. The first row is the unbilled app summary (recordType: "app"). The rest are reviews.

Google Play reviews

store: "google" calls Play's public oCPfdb batchexecute endpoint. appId is the package name (com.spotify.music) or a Play Store URL.

Each review row includes reviewId, author, stars, text, publishedAt, thumbsUpCount, appVersion, developerReplyText, and developerReplyAt. Play reviews do not have a separate title, so title is null.

sort maps to Play's own order: NEWEST, MOST_RELEVANT, or RATING. stars is sent with the request, so other ratings are not downloaded.

Apple App Store reviews

store: "apple" resolves the app with https://itunes.apple.com/lookup, then reads https://itunes.apple.com/{country}/rss/customerreviews/page={page}/id={trackId}/sortby=mostrecent/json.

appId can be a track id (324684580), a bundle id (com.spotify.client), or an App Store URL. Review rows include reviewId, author, stars, title, text, publishedAt, appVersion, voteSum, and voteCount.

NEWEST uses sortby=mostrecent. MOST_RELEVANT and RATING use sortby=mosthelpful, which is the other sort that feed publishes. The feed stops after 10 pages (about 500 reviews). A star filter is applied after download, and rows that do not match are not billed.

store: "both" needs appId (Play package) and appleAppId (Apple id). maxReviews is applied per store.

Developer replies

On Google Play, developerReplyText and developerReplyAt are the public reply under that review. They are null when the developer has not replied. The App Store customer-reviews feed does not include a developer reply, so those two fields are null on app_store rows. voteSum and voteCount are the App Store usefulness votes.

Set includeAppSummary to false for a dataset of review rows only. The summary row (recordType: "app", score, rating count, current version) is never charged.

Pricing

Eventreview-scraped
Price$0.0005 per review ($0.50 / 1,000)
Charged whenA review row is written
Not chargedThe app summary row, reviews excluded by the star filter, or a run that returns no reviews
Compute256 MB HTTP. A 10-review sample is a fraction of a cent in platform compute

Example output item

Google Play review:

{
"recordType": "review",
"store": "google_play",
"appId": "com.spotify.music",
"reviewId": "gp-review-1",
"author": "Ada",
"stars": 4,
"title": null,
"text": "Playback is solid. The new queue still drops a track.",
"publishedAt": "2026-10-18T15:04:00+00:00",
"thumbsUpCount": 12,
"appVersion": "8.9.46.456",
"developerReplyText": "Thanks, we are looking at the queue.",
"developerReplyAt": "2026-10-19T09:00:00+00:00",
"voteSum": null,
"voteCount": null,
"country": "us",
"language": "en"
}

App Store review:

{
"recordType": "review",
"store": "app_store",
"appId": "324684580",
"reviewId": "11928374651",
"author": "Sam",
"stars": 5,
"title": "Daily driver",
"text": "Still the one I open first.",
"publishedAt": "2026-10-17T12:31:22-07:00",
"thumbsUpCount": null,
"appVersion": "8.9.78",
"developerReplyText": null,
"developerReplyAt": null,
"voteSum": 4,
"voteCount": 1,
"country": "us"
}

Call it from code

Python:

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("drlipton/google-play-reviews-scraper").call(
run_input={
"store": "google",
"appId": "com.spotify.music",
"country": "us",
"sort": "NEWEST",
"maxReviews": 10,
"includeAppSummary": True,
},
max_total_charge_usd=0.05,
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

Apple sample: "store": "apple" and "appId": "324684580".

JavaScript:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<APIFY_TOKEN>" });
const run = await client.actor("drlipton/google-play-reviews-scraper").call(
{ store: "apple", appId: "324684580", country: "us", sort: "NEWEST", maxReviews: 10 },
{ maxTotalChargeUsd: 0.05 },
);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

MCP: point the client at https://mcp.apify.com with your Apify token and ask for drlipton/google-play-reviews-scraper. Pass store and appId. Leave maxReviews at 10 for the first call.

n8n: Apify node, Run actor and get dataset items, actor drlipton/google-play-reviews-scraper, input as in the sample.

FAQ

Do I pay for the app score row? No. recordType: "app" is written with a normal dataset push. Only recordType: "review" fires review-scraped.

Why did an App Store run stop near 500? Apple's public customer-reviews feed publishes 10 pages. The run succeeds with what that feed returned.

What if a later page is blocked? Rows already saved stay in the dataset and the run still succeeds. The run fails only when it could not save any review.