Gripeline — App Store & Google Play Reviews Scraper
Pricing
Pay per event
Gripeline — App Store & Google Play Reviews Scraper
App Store and Google Play reviews scraper: both stores in one clean schema, plus a per-app summary agents can read (star mix, % negative, top complaints, worst app versions). Monitor mode returns only new reviews for daily alerts. $0.0002 per review, $0.003 per app summary.
Pricing
Pay per event
Rating
0.0
(0)
Developer
CyberMax
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Know what users hate about any app in one call. Give Gripeline an app name, link or id. It reads the newest reviews from the App Store and Google Play, puts them into one schema, and adds a summary record per app that an AI agent or an analyst can use straight away:
Threads (App Store): 500 newest reviews (2026-08-30 to 2026-09-22), average 3.43★, 38.2% negative (1–2★). Top complaints: "people" (28), "account" (24), …
Why this one
- Both stores, one schema.
"Duolingo"is looked up in the App Store and Google Play, and every review has the same fields: stars, title, text, date, app version, country, helpful votes and developer reply. You don't need two scrapers and a merge step. - A summary that saves reading 500 reviews. Each app gets star mix, % negative and % positive, top complaint phrases (from 1–2★ reviews), top praise phrases, worst app versions (≥5 reviews, lowest average first) and the Google Play developer reply rate.
- Agent-friendly. Names, links or ids all work. Compact JSON, a one-sentence
summary, andincludeReviews: falsereturns only the summaries (about 2 KB per app). - Reliable on the App Store. Apple's review feed often answers a valid page with nothing. Gripeline retries each page with a fresh cache key and skips gaps, so you get the full 500 newest reviews per country instead of 50. Tested 2026-09-23: 500 of 500 for Threads and Duolingo in about 7 seconds.
- Filters are free. Stars (
maxRating: 2= complaints only), date (since) andkeyword("crash", "subscription"). You pay only for reviews that pass. - Daily new-review alerts.
monitor: truereturns only reviews you haven't received yet, so a daily schedule to Slack or Google Sheets costs cents.
First try: the prefilled input (Duolingo, 5 reviews per store) finishes in about 10 seconds and costs about $0.008 (2 summaries + 10 reviews).
Input
{"apps": ["Duolingo", "https://apps.apple.com/us/app/threads/id6446901002", "com.spotify.music"],"stores": "both","maxReviewsPerApp": 200,"countries": ["us"],"maxRating": 2}
| Field | Default | What it does |
|---|---|---|
apps | – | App names, App Store links/ids (id570060128), Google Play links/package names (com.duolingo). |
stores | both | both, apple or google. Names are searched in the stores selected; links and ids go to their own store. |
maxReviewsPerApp | 200 | Newest first, per store and country. The App Store feed stops at 500 per country; Google Play goes up to 5,000. 0 = store metadata only. |
includeReviews | true | false = summary records only. The summary always covers the reviews that pass your filters. |
countries | ["us"] | Up to 10 two-letter App Store countries; each is read separately. Google Play shows the same reviews in every country (they vary by language), so Play is read once per app and its records carry language instead of country. |
language | en | Google Play review language. |
minRating / maxRating | 1 / 5 | Keep only reviews in this star range. |
since | – | Keep only reviews on or after this date. |
keyword | – | Keep only reviews that mention this word. |
monitor | false | Only reviews not returned by an earlier monitor run (see below). |
monitorKey | – | Optional name for the monitor's saved state, to keep several watchlists apart. |
Monitor mode: only new reviews since the last run
Turn on monitor for scheduled runs. Gripeline remembers, per app, store and country, which reviews it already returned (by review id) and outputs only the new ones, each marked "change": "new". An app's summary is returned only when it has new reviews, and then it summarizes just those.
Shape of a monitor run's records (values shortened):
{ "type": "app-summary", "store": "apple", "title": "Duolingo: Language Lessons", "change": "changed", "changedFields": ["reviews"], "newReviews": 3, "summary": "Duolingo: Language Lessons (App Store): 3 new reviews since the last run (…), average …★, …" }{ "type": "review", "store": "apple", "appTitle": "Duolingo: Language Lessons", "reviewId": "…", "rating": 1, "text": "…", "change": "new" }
- The first monitor run returns everything (
"change": "new"), like a normal run. A run with no new reviews returns an empty dataset and costs nothing. - Edited reviews keep their id and aren't sent again. Filters (
maxRating,keyword,since) apply to the new reviews, somaxRating: 2+monitor: true= "new complaints only". - Set
maxReviewsPerAppabove the number of reviews an app gets between two runs (e.g. 100 for a daily run on a popular app); only new ones are charged. - State lives in your named key-value store
app-reviews-monitor, one record per watchlist (monitorKey, or derived from the apps, stores, countries and language). Delete the record to start over.
Ready-made inputs (first try in one click)
No account yet? See real results first on the free demo page: 24 popular apps ranked by share of angry reviews.
Paste one into the JSON tab of the input form (or send it to the API) and press Start. Each is sized so the first run is quick and cheap; you pay only for results (Apify's compute is included in the price).
| Preset | What you get | Cost |
|---|---|---|
| Summary + 5 newest reviews (both stores) | 1 summary per store (star mix, top complaints, worst version) + 5 reviews each | $0.008 |
| Only angry reviews (1–2★, App Store) | up to 10 of the newest 1–2★ reviews + a summary | $0.005 or less |
| Complaint summary only (no review rows) | 1 summary per app from its 100 newest reviews | $0.006 |
Summary + 5 newest reviews (both stores)
{"apps": ["Duolingo"], "maxReviewsPerApp": 5}
Only angry reviews (1–2★, App Store)
{"apps": ["Spotify"], "stores": "apple", "maxRating": 2, "maxReviewsPerApp": 10}
Complaint summary only (no review rows)
{"apps": ["Airbnb", "Uber"], "stores": "google", "includeReviews": false, "maxReviewsPerApp": 100}
Same thing from a script (returns the results directly):
curl -s -X POST "https://api.apify.com/v2/acts/cybermax~app-reviews/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'content-type: application/json' -d '{"apps": ["Duolingo"], "maxReviewsPerApp": 5}'
Output
One app-summary record per app and store (and per country on the App Store):
{"type": "app-summary","store": "apple","appId": "6446901002","title": "Threads","developer": "Instagram, Inc.","rating": 4.64,"ratingCount": 2252093,"currentVersion": "447.0","country": "US","summary": "Threads (App Store): 500 newest reviews …, average 3.43★, 38.2% negative (1–2★). Top complaints: …","sample": { "reviews": 500, "avgRating": 3.43, "stars": { "1": 176, "2": 15, "3": 18, "4": 22, "5": 269 }, "negativeShare": 38.2, "positiveShare": 58.2, "developerReplyRate": null },"topComplaints": [{ "phrase": "account", "reviews": 24 }],"topPraise": [{ "phrase": "twitter", "reviews": 12 }],"worstVersions": [{ "version": "447.0", "reviews": 156, "avgRating": 3.12, "negativeShare": 46.2 }]}
…followed by its review records:
{ "type": "review", "store": "google", "appId": "com.spotify.music", "appTitle": "Spotify: Music and Podcasts", "reviewId": "…", "rating": 1, "title": null, "text": "…", "date": "2026-09-22T10:11:42.000Z", "appVersion": "9.1.84.2231", "helpfulVotes": 0, "country": null, "language": "en", "developerReply": { "text": "…", "date": "…" }, "author": "…" }
Apps that aren't found come back as type: "not-found" and are free. The Store output tab has two views: App summaries and Reviews.
Pricing
- $0.003 per app summary (one app in one store; App Store: per country)
- $0.0002 per review ($0.20 per 1,000)
- Apps that aren't found and reviews dropped by your filters: free. No start fee.
Example: 3 apps in both stores, 200 reviews each = 6 × $0.003 + 1,200 × $0.0002 = $0.258. Summaries only (includeReviews: false) for the same apps = $0.018.
Good to know
- Data comes from Apple's public iTunes lookup/search APIs and review feed, and Google Play's public web pages. No login needed, and no personal data beyond the public reviewer display name.
- App Store reviews don't include developer replies in Apple's feed, so
developerReplyis alwaysnullthere. - Complaint phrases are word and two-word counts from 1–2★ reviews, with the app's own name and filler words removed. They show themes; they aren't sentiment analysis.
Run it on a schedule
Daily "new reviews" digest in two minutes: Apify Console → Schedules → Create new → cron 0 8 * * * (8:00 every day) → Add Actor → cybermax/app-reviews with your input (or a saved task) including "monitor": true. Or with the API:
POST https://api.apify.com/v2/schedules?token=YOUR_TOKEN{"name": "daily-app-reviews","cronExpression": "0 8 * * *","timezone": "America/New_York","isEnabled": true,"actions": [{"type": "RUN_ACTOR","actorId": "cybermax/app-reviews","runInput": { "body": "{\"apps\": [\"Duolingo\", \"com.spotify.music\"], \"maxReviewsPerApp\": 100, \"monitor\": true}", "contentType": "application/json" }}]}
With monitor mode a daily run only pays for that day's new reviews. To get notified, add a webhook, Slack or email notification on Run succeeded in the Actor's Integrations tab.
Integrations
Make: Apify app → "Run an Actor" (cybermax/app-reviews, input JSON as above, "Run synchronously" on) → "Get dataset items" → Slack / Google Sheets module.
Zapier: Apify app → "Finished Actor Run" trigger (for your schedule) or "Run Actor" action → "Find dataset items" → Slack "Send channel message" with {{title}}: {{rating}}★ {{text}}.
n8n: Apify node ("Run actor and get dataset"), or an HTTP Request node:
POST https://api.apify.com/v2/acts/cybermax~app-reviews/run-sync-get-dataset-items?token=YOUR_TOKEN{"apps": ["Duolingo"], "maxRating": 2, "monitor": true}
Google Sheets: Apify's Google Sheets integration (Actor → Integrations), or paste into a cell to pull the last run as CSV:
=IMPORTDATA("https://api.apify.com/v2/acts/cybermax~app-reviews/runs/last/dataset/items?format=csv&view=reviews&token=YOUR_TOKEN")
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("cybermax/app-reviews").call(run_input={"apps": ["Duolingo"], "maxReviewsPerApp": 50, "maxRating": 2})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["type"], item.get("rating"), item.get("summary") or item.get("text"))
JavaScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('cybermax/app-reviews').call({ apps: ['Duolingo'], includeReviews: false });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => i.summary));
AI agents (MCP): Gripeline is a tool in any MCP client via Apify's hosted MCP server, https://mcp.apify.com/?tools=cybermax/app-reviews (header Authorization: Bearer <your Apify token>). Claude Desktop / Cursor config:
{ "mcpServers": { "gripeline": { "url": "https://mcp.apify.com/?tools=cybermax/app-reviews", "headers": { "Authorization": "Bearer YOUR_TOKEN" } } } }
A good agent prompt: "Use app-reviews with includeReviews=false and maxRating=2 to tell me the top 3 complaints about
Also from CyberMax
- Keyfern — Keyword ideas: real search phrasing from Google, YouTube and Amazon autocomplete for content and ASO around the complaints you find.
- Swellmeter — Google Trends: is interest in your app or a competitor rising or falling?
- DomainDNA — Tech stack & domain intel: what the developer's website is built with.
- SnapScout — Website screenshots: snapshot competitors' landing and pricing pages.
- Logolark — Logos by domain: app developer logos for your reports and dashboards.
All tools: Boardroom Buys · HireHeat · HireHeat Jobs · Hollerdex · Linkheft · Printwren
Changelog
- 2026-09-23: Monitor mode (
monitor,monitorKey: only new reviews since the last run, deduped by review id), schedule & integration recipes.
Made by CyberMax.