The Mine Works
← All posts
tutorial October 8, 2026 · 7 min read Updated October 8, 2026

Monitor New App Store Reviews for Your App Every Day

Get each day's new App Store reviews of your app in several countries with App Store Reviews Scraper, plus an alert for every 1 and 2 star review.

Try the scraper

The actor referenced in this article. Pay only for results delivered.

View the scraper →

Most app teams read their App Store reviews when someone remembers to, which means a bad release can collect a week of one-star reviews before anyone connects them to the build that caused them. Each country’s App Store keeps its own reviews, so checking five markets by hand every morning is five lists to scroll, and the habit rarely survives the second week.

Try it live: App Store Reviews Scraper: iOS Reviews from 174 Countries. Pay per result delivered. Failed and empty results are never charged.

This guide schedules the App Store Reviews Scraper to read your app’s newest reviews in your main countries every morning, return only reviews it has not given you before, and alert you to every 1 and 2 star review.

What you get and who it is for

One row per review. For a daily alert, these fields carry the signal:

FieldWhy it matters here
ratingStars, 1 to 5; the alert filter
title, textWhat went wrong, in the reviewer’s words
app_versionThe build the review was written on, to tie a spike to a release
countryWhich App Store the review came from
reviewed_atReview date, ISO 8601 UTC
review_idApple’s own id, stable across runs
app_rating, app_ratings_countThe app’s average and rating count in that country
sortmostRecent for live reviews, featured for the fallback described below

Product managers use it to catch a broken release early, support teams to find users who need a reply, and agencies to send clients a morning digest without logging in to anything.

The input

{
  "apps": ["324684580"],
  "countries": ["us", "gb", "ca", "au", "in"],
  "maxReviewsPerCountry": 500,
  "sort": "mostRecent",
  "onlyNewReviews": true
}
  • apps takes the numeric App Store id (the number at the end of the app’s App Store link) or the link itself. Spotify’s id stands in for yours here.
  • countries are two letter codes, each read separately. A country where the app is not sold is skipped and never charged.
  • maxReviewsPerCountry at 500 is the whole most recent list Apple’s feed offers for one country. With onlyNewReviews on, reading stops at the first page of reviews you already have, so a high cap costs nothing on a quiet day.
  • sort set to mostRecent is the order to use for monitoring.
  • onlyNewReviews skips every review an earlier run of this actor in your Apify account already delivered, and does not charge for it.

What the output looks like

Two rows, trimmed, from our run on October 7, 2026: WhatsApp and Spotify in the US, 100 most recent reviews each, with onlyNewReviews off. Reviewer names are masked here; the dataset has them in full.

[
  {
    "app_id": "324684580",
    "app_name": "Spotify: Music and Podcasts",
    "country": "US",
    "review_id": "14632280511",
    "user_name": "H**********",
    "rating": 2,
    "title": "Ads",
    "text": "Absolutely way too many ads it used to be 2 and now it’s 5",
    "app_version": "9.1.88",
    "reviewed_at": "2026-10-05T22:55:45.000Z",
    "vote_sum": 0,
    "vote_count": 0,
    "app_rating": 4.77,
    "app_ratings_count": 42454826,
    "sort": "mostRecent",
    "position": 11,
    "scraped_at": "2026-10-07T11:13:00.726Z"
  },
  {
    "app_id": "310633997",
    "app_name": "WhatsApp Messenger",
    "country": "US",
    "review_id": "14630614023",
    "user_name": "G***********",
    "rating": 1,
    "title": "HORRIBLE APP BANNED ME FOR NO REASON",
    "text": "I got banned after only 1 week of using the app they didn’t say why or what I did just banned me and said I can’t appeal",
    "app_version": "26.39.73",
    "reviewed_at": "2026-10-05T13:29:50.000Z",
    "app_rating": 4.68,
    "app_ratings_count": 18723283,
    "sort": "mostRecent",
    "position": 27
  }
]

The recent stream is much harsher than the store average. In that run, 41 of WhatsApp’s 100 newest US reviews had 1 or 2 stars, while its US average stood at 4.68 across 18,723,283 ratings. Spotify had 20 of 100 against a 4.77 average. app_version splits the damage by release: 14 of WhatsApp’s 30 reviews on 26.39.73 were low, against 27 of 70 on 26.38.74. And Spotify’s 100 reviews were all written in under six hours on October 5, the newest about 36 hours old when the run started, which is the delay to expect from Apple’s feed.

Run it in Apify Console

  1. Open https://apify.com/themineworks/app-store-reviews-scraper and click Try for free.
  2. In Apps, enter your app’s id or App Store link, one per line.
  3. In Countries, enter your markets, one two letter code per line.
  4. Set Max reviews per app in each country to 500 and Sort to Most recent first.
  5. In the Schedules section of the form, switch on Only reviews not delivered before.
  6. Click Start, read the rows in the Output tab, then click Export for CSV, JSON or Excel.

A test run in the same Apify account counts as an earlier run: reviews it delivered will not come back in the scheduled run.

Run it from Python

pip install apify-client, then:

import csv
import json
import os
import urllib.request
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("themineworks/app-store-reviews-scraper").call(run_input={
    "apps": ["324684580"],
    "countries": ["us", "gb", "ca", "au", "in"],
    "maxReviewsPerCountry": 500,
    "sort": "mostRecent",
    "onlyNewReviews": True,
})

new_reviews, alerts = [], []
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if item.get("_type") == "info":
        continue  # the run summary row, never billed
    if item.get("sort") == "featured":
        continue  # store page fallback: old helpful reviews, not new ones
    new_reviews.append(item)
    if item["rating"] <= 2:
        alerts.append(item)

print(f"{len(new_reviews)} new reviews, {len(alerts)} with 1 or 2 stars")

fields = ["reviewed_at", "country", "rating", "app_version", "title", "text", "review_id"]
with open("low_star_reviews.csv", "a", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=fields, extrasaction="ignore")
    if f.tell() == 0:
        writer.writeheader()
    writer.writerows(alerts)

webhook = os.environ.get("SLACK_WEBHOOK_URL")
if webhook and alerts:
    lines = [f"{a['rating']}/5 {a['country']} v{a.get('app_version', '')}: {a['title']}"
             for a in alerts[:25]]
    body = json.dumps({"text": "\n".join(lines)}).encode("utf-8")
    req = urllib.request.Request(webhook, data=body,
                                 headers={"Content-Type": "application/json"})
    urllib.request.urlopen(req)

The script appends every low-star review to low_star_reviews.csv, so the file becomes a running log you can chart by app_version or country. If a SLACK_WEBHOOK_URL environment variable holds a Slack incoming webhook, the first 25 alerts of the day are posted as one message. Swap that block for email or a ticket in your support tool if you prefer.

Run it every morning

In Apify Console, save the input above as a task, open Schedules, create a schedule with the cron expression 0 7 * * * (every day at 07:00) and pick the task. onlyNewReviews makes each run deliver only what arrived since the last one. To get the rows out without your own script, Apify’s Google Sheets integration can add each run’s rows to a sheet, a webhook on a successful run can call your own endpoint, and Make, Zapier or n8n can forward 1 and 2 star reviews to Slack or email. If you run the Python script instead, a daily cron line on any machine does the same job.

What it costs

$0.10 per 1,000 reviews on the Bronze plan, and the same $0.10 on Silver, Gold and the higher plans, plus a flat $0.005 per run. Say your app collects 200 new reviews a day across the five countries: 6,000 reviews a month cost $0.60, plus 30 start fees of $0.005, $0.15, for $0.75 a month. The first run brings the backlog, at most 500 reviews in each of five countries, 2,500 reviews for $0.25. A day with nothing new costs the $0.005 start fee and nothing else.

Limits worth knowing

  • Apple’s feed holds the 500 most recent reviews per country. Spotify’s US pace on October 5 was 100 reviews in under six hours, so an app that busy is close to the 500 cap with one run a day and safer with two in its largest market.
  • Expect about a day between a review being written and it reaching the feed.
  • Apple sometimes answers with an empty feed. If it stays empty for a country, the actor delivers the 10 featured reviews from the App Store page, marked featured, without app_version or votes. Three of our seven runs from October 5 to 7, 2026 got this fallback for at least one app and country. Reviews missed that day were never delivered, so the next run still picks them up while they are within the latest 500.
  • Developer responses only appear on the 10 featured reviews, so a most recent run will not show whether your team has replied.
  • App Store only. Google Play reviews need a different actor, such as https://apify.com/themineworks/app-reviews-monitor.
Related Actor

Explore the scraper referenced in this article: inputs, outputs, and pricing, then run it on Apify.

Frequently asked questions

What does a day with no new reviews cost? +

Only the $0.005 run start fee. With onlyNewReviews on, reviews you already received are skipped and never charged, and each country stops at the first page that holds nothing new.

What happens on the first run with onlyNewReviews on? +

Nothing has been delivered to your account yet, so the first run returns the full recent list, up to maxReviewsPerCountry in each country. From the second run on, you get only reviews that earlier runs did not deliver.

How soon after it is written does a review show up? +

Expect about a day. In our runs the newest review in Apple's public feed was roughly 24 to 36 hours old, so each run mostly brings reviews written one to two days earlier.

Can I watch several apps in one run? +

Yes. List up to 200 apps, by id or App Store link, and each one is read in every country you list. Every row carries app_id and app_name, so one alert script can cover them all.

Apify Store

Find a ready-made scraper for your job

Apify has over 80,000 scrapers and automations, ours included. Start free with $5 of platform credit every month.