Competitor Complaint Miner: App Store & Google Play Reviews avatar

Competitor Complaint Miner: App Store & Google Play Reviews

Pricing

Pay per event

Go to Apify Store
Competitor Complaint Miner: App Store & Google Play Reviews

Competitor Complaint Miner: App Store & Google Play Reviews

Turn competitor reviews from the App Store, Google Play, Chrome Web Store and Hacker News into ranked complaint themes, feature requests and short quotes with links. Reviewer names removed. Offline analysis or your own LLM key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Damodaran Dhanusuraman

Damodaran Dhanusuraman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Competitor Complaint Miner

Competitor review analysis API: App Store, Google Play and Chrome Web Store reviews (plus Hacker News mentions) turned into ranked complaint themes, feature requests and short quotes with links. $0.0015 per review + $0.30 per competitor report. No AI key needed.

Find out what users complain about in your competitors' products. This Actor collects public reviews from the Apple App Store, Google Play, the Chrome Web Store and Hacker News. It turns them into a ranked list of complaint themes with counts, share of reviews, severity, trend, requested features, and short quotes with links. It also compares competitors side by side.

Reviewer names, avatars and user IDs are never read or stored. You get only the review text, stars, date, helpful votes, app version and a link.

What you get

For each competitor:

  • Review rows: source, stars, date, title, text, helpful votes, app version, link, sentiment, and matched themes.
  • Insight report: ranked complaint themes, each with the number of reviews, share of reviews, average stars, severity (low/medium/high), trend (rising/falling/stable when dates allow), matched keywords, and up to 10 quotes (each 200 characters max) with links.
  • Feature requests: sentences like "I wish…", "please add…", "would be great if…", "no way to…", grouped by keyword, with quotes.
  • Per-source status: ok, empty, blocked, not-found or failed, with a message, so you can see what worked.

Across competitors:

  • Comparison table: each theme's share of reviews for every competitor, which competitor has the highest share, and which pain points all competitors share.
  • Readable report: a Markdown summary (REPORT_MD) and the full JSON (REPORT) in the key-value store.

Sources

SourceHow to add itWhat it reads
Apple App StoreApp Store URL or appstore:<app id>Apple's public customer-review RSS feed (about the 500 most recent reviews per country)
Google PlayPlay URL or play:<package>The public reviews feed of the Google Play web page, filtered by stars
Chrome Web StoreExtension URL or cws:<extension id>The public reviews feed of the extension page, filtered by stars
Hacker Newshn:<term>The official HN Algolia search API (comments). HN has no stars, so only comments with complaint or request words near your term are kept
Trustpilot (experimental)Trustpilot URL or trustpilot:<domain>Public review pages. In our tests (Nov 2026), Trustpilot showed an anti-bot check to both our test machine and Apify's servers, so this source returned blocked. It is kept in case access works for you. A blocked source is never charged.

G2, Capterra and similar sites are not supported on purpose because of their terms and anti-bot protection.

The Actor uses only public pages you can open without logging in. It uses no cookies or logins, waits between requests, and backs off when a site slows it down. Sites can change their pages or block access at any time. When that happens the source shows blocked or failed, the run continues with the other sources, and you are not charged for it.

Input

FieldDefaultNotes
competitorsrequiredOne per line: Name | source, source, …. Example: Todoist | https://apps.apple.com/us/app/todoist-to-do-list-planner/id572688855, play:com.todoist, hn:Todoist
maxReviewsPerCompetitor2001–500, shared fairly across that competitor's sources. If one source is blocked or small, the others fill the gap.
minRating / maxRating1 / 3Focus on complaints (1–3 stars). Set max to 5 for all reviews.
dateFrom / dateTononeYYYY-MM-DD or relative like 90 days, 6 months.
languagenonee.g. en, de. Used by Google Play, the Chrome Web Store and Trustpilot.
countryusApp Store and Google Play country.
analysisModeofflineoffline or llm (see below).
llmProvider, llmApiKey, llmModelOnly for LLM mode. Your own key, stored as a secret input.
includeReviewRowstrueTurn off to get only the reports. You then pay only for the reports.
hnComplaintsOnlytrueTurn off to keep every HN mention.
maxQuotesPerTheme31–10.

Example API input:

{
"competitors": [
"Todoist | https://apps.apple.com/us/app/todoist-to-do-list-planner/id572688855, play:com.todoist, hn:Todoist",
"TickTick | appstore:626144601, play:com.ticktick.task",
"Grammarly | cws:kbfnbcaeplbcioakkpcpgfkobkghlhen"
],
"maxReviewsPerCompetitor": 200,
"dateFrom": "6 months"
}

Offline mode vs LLM mode

Offline (default). No AI model is used and there is no AI cost. Themes come from a fixed keyword list: bugs and crashes, speed, pricing and billing, ads, support, login and account, sync and data loss, UI, bad updates, privacy, notifications, compatibility, outages, quality, orders and delivery. Frequent phrases in reviews that match none of these are added as extra themes. Sentiment comes from the stars (word lists for Hacker News). Feature requests come from phrase patterns. This is a heuristic. It counts keyword and phrase matches and does not understand context, so a review can land in the wrong theme or in more than one. Ambiguous words are matched only in complaint phrases (for example "my order never arrived", not "sorted in the order created"; "servers are down", not "write down"), and these cases are covered by regression tests. Read the quotes before you act on a theme.

LLM mode (bring your own key). Choose OpenAI, Anthropic, Google Gemini, xAI or OpenRouter and add your own API key. Up to 150 review snippets per competitor go to your provider, which groups them into themes. The Actor then rebuilds the counts, shares and quotes from the real reviews, so quotes are never written by the AI. If the AI call fails, the run falls back to offline mode and says so in the report. Your provider bills you for this usage. The key is used only for the run and is never logged or written to the output. Default models: gpt-4.1-mini, claude-haiku-4-5, gemini-2.5-flash, grok-4.7, openai/gpt-4.1-mini (OpenRouter). You can change the model with llmModel. Honest note: the LLM adapters follow each provider's public API docs, but they have only been tested with sample responses, not with live API calls. Please report any problem in the Issues tab.

Output sample (from a real run on Apify, 3 Nov 2026)

Input: Todoist (App Store, Google Play, HN), TickTick (App Store, Google Play), Grammarly (Chrome Web Store, Trustpilot), 30 reviews each, 1–3 stars. The run took 12 seconds. Trustpilot returned blocked, and the other sources returned reviews.

One complaint theme (insights dataset, view Complaint themes):

{
"competitor": "TickTick",
"rank": 1,
"theme": "Pricing, subscriptions and billing",
"reviews": 9,
"share": 0.3,
"severity": "medium",
"trend": "rising",
"olderShare": 0.2,
"newerShare": 0.32,
"avgRating": 1.89,
"keywords": ["pay", "expensive", "subscription", "premium", "free version", "price"],
"quotes": [
{
"quote": "This is now more expensive than Todoist. Not worth it.",
"rating": 1,
"date": "2026-10-26T18:05:37.000Z",
"source": "googleplay",
"url": "https://play.google.com/store/apps/details?id=com.ticktick.task&reviewId=6312bc5d-df2d-40e8-ad88-fe91face4690&hl=en"
}
]
}

One feature request:

{ "competitor": "TickTick", "request": "unlimited habits", "mentions": 1,
"quotes": [{ "quote": "Wish you could just do unlimited habits, but it’s still pretty good", "rating": 3, "source": "appstore", "url": "https://apps.apple.com/us/app/id626144601?see-all=reviews" }] }

One comparison row:

{ "theme": "Pricing, subscriptions and billing", "worstCompetitor": "TickTick", "averageShare": 0.211, "competitorsAffected": 3,
"byCompetitor": { "Todoist": { "share": 0.067, "reviews": 2 }, "TickTick": { "share": 0.3, "reviews": 9 }, "Grammarly": { "share": 0.267, "reviews": 8 } } }

A blocked source in the per-source status:

{ "source": "trustpilot", "ref": "grammarly.com", "status": "blocked", "reviewsReturned": 0, "message": "Blocked by the site (HTTP 403, anti-bot challenge). Not retried." }

Pricing (pay per event)

EventPriceWhen it is charged
review-collected$0.0015 per reviewFor each review row actually returned in your dataset
insight-report$0.30 per competitorOnce for each competitor that has at least one collected review. One report covers up to 500 reviews.

Example: 3 competitors × 200 reviews = 600 × $0.0015 + 3 × $0.30 = $1.80.

  • Failed, blocked and empty sources are not charged. A competitor with no reviews gets no report and no charge.
  • A run with no valid competitors stops with a clear message and charges nothing.
  • With includeReviewRows off, you pay only $0.30 per report.
  • The run respects your maximum cost per run. Before each competitor, the Actor keeps enough budget for its report, collects only what fits, and then stops.
  • Apify platform usage for this Actor is small (HTTP requests only, no browser).

Limits and good practice

  • Apple's RSS feed shows only about the 500 most recent reviews per country. Google Play and the Chrome Web Store return up to 500 reviews per star level in this Actor.
  • The App Store feed has no link to a single review, so App Store quotes link to the app's reviews page.
  • Hacker News results are mentions, not reviews. A word like "notion" is also a normal English word, so use a capitalised name (hn:Notion, matched case-sensitively) or a distinctive term.
  • Themes, severity and trend are computed signals, not human analysis. Trend needs at least 10 dated reviews spanning 4+ weeks; otherwise it says insufficient-data.
  • Reviews are public text written by real people. Quote them briefly with a link, as this Actor does, and follow the source sites' terms and your local privacy rules when you use the data.

How it compares

  • vs. a raw review scraper: a scraper gives you thousands of rows to read. This Actor also groups them into ranked themes with counts, severity, trend, feature requests and quotes, and compares competitors side by side. If you only want raw rows, a plain scraper may be cheaper.
  • vs. a review-analytics SaaS: no subscription; you pay per review and per report. Offline mode is keyword-based, not AI. LLM mode uses your own key and has only been tested with sample responses so far.
  • Coverage, honestly: App Store, Google Play and the Chrome Web Store work. Hacker News gives mentions, not reviews. Trustpilot is currently blocked by an anti-bot check in our tests. G2 and Capterra are not supported.

Schedule it (monthly complaint digest)

  1. Save your competitor list as a Task in Apify Console, with dateFrom: "30 days".
  2. Add a monthly Apify Schedule.
  3. Send the insights dataset or the REPORT_MD record to Notion, Slack or Google Docs. Set includeReviewRows: false if you only want the reports ($0.30 per competitor).

Use in n8n, Make, Clay or any HTTP tool

POST https://api.apify.com/v2/acts/damodaran_dhanuauraman~competitor-complaint-miner/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>
Content-Type: application/json
{ "competitors": ["Todoist | play:com.todoist, appstore:572688855"], "maxReviewsPerCompetitor": 50 }

This returns the review rows. For the ranked themes, read the insights dataset or the REPORT key-value record of the run (both are linked in the run's Output tab). In n8n or Make, use the Apify "Run Actor" module on a schedule, then fetch the insights dataset and create a Notion page or Slack message with the top themes and quotes.

FAQ

Do I need an AI key? No. Offline mode works without one. LLM mode is optional and uses your own key. Are reviewer names included? No. Names, avatars and user IDs are never read or stored. What does a run cost? 3 competitors × 200 reviews ≈ $1.80. Blocked, failed and empty sources are free. How accurate are the themes? They are keyword signals, not human analysis. Always read the quotes before you act on a theme. Can I add other sources? Open an issue with the source you need. Shopify App Store and WordPress.org are on the list.

Feedback

Found a wrong theme, a source that stopped working, or a missing source (Shopify App Store and WordPress.org are on the list)? Please open an issue in the Issues tab.