Mine App Store reviews for bugs and feature requests by country
Pull App Store reviews for any app ID and country as JSON, then sort them into bugs, feature requests and complaints for your product roadmap.
Your support queue shows the loud problems, but the App Store reviews hold the rest: the crash on one iPhone model, the feature everyone asks for in one country, the competitor feature people mention by name. Reading them by hand does not scale past a few dozen. Lovely Router fetches them for you. Send an app ID and a country, get one JSON object per review, pay per review from a prepaid balance.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Mine App Store reviews for bugs and feature requests by country. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Pick the apps and countries
Take the App Store ID from the end of the app's URL, without the
idprefix. Add your own app and two or three competitors, and decide which country stores matter to you.Run the tool with a cap
Send the IDs and a country to
POST /v1/tools/app-store-reviews/run. SetmaxItemsin the input andmax_resultsin the request body to the number of reviews you want to read. The run holds its maximum cost from your balance and returns the reviews as JSON.Classify and rank
Hand the reviews to a model with a short rubric: bug, feature request, pricing complaint, praise. Count each class per release and per country, and send the top items to your backlog.
Get App Store reviews with one request
App Store reviews takes a list of App Store IDs in appIds and a two-letter store in country. maxItems caps the number of reviews:
curl https://lovelyrouter.com/v1/tools/app-store-reviews/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"appIds": ["284882215"],
"country": "us",
"maxItems": 20
},
"max_results": 20
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll. One run can hold up to 500 reviews.
What each review holds
| Field group | What you get |
|---|---|
| Review | The review as posted on the App Store |
| App | The app ID it belongs to |
| Store | The country store you asked for |
Reviews come back in the language of the store. Ask a model to translate and classify them in the same job rather than reading them one by one.
Recipes
After each release, pull the newest reviews, ask a model to extract every reported bug, and group by symptom. A symptom that appears in many reviews within days of a release is your regression.
Run the same app ID with country set to us, de, jp and br. A feature request that shows up in one store only is a localization gap, not a global need.
Pull reviews for the two apps you lose users to, keep the lowest ratings, and list what their users complain about. Those are the gaps your next release can close.
Schedule a weekly run for your own app and post a summary of new complaints to the channel where support and engineering already talk.
Save a run before a redesign or pricing change and another after, then compare average rating and the share of complaints on the changed area.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Fetch 200 App Store reviews for app 284882215 in the US store, group them into bugs, feature requests and praise, and show the top five of each. Set max_results to 200."
Pair it with other review sources
An app lives in more than one store, and users complain in more than one place:
Apple App Store reviews for an app ID and country.
Google Play Store reviews for an Android app.
Reddit posts for a query or subreddit: title, body, score, comments count, author, date.
Trustpilot reviews of a company by domain: stars, text, date, reply.
G2 reviews of a software product.
google-play-reviewscovers the Android side of the same app.reddit-searchfinds the longer threads where users explain what is wrong.trustpilot-reviewscovers reviews of the company itself, such as billing and support.g2-reviewsadds business buyers' opinions if your app is also sold as software.
For the wider job of watching what customers say, see review monitoring.
What you pay
You pay per review: starting a run holds its maximum cost, the per-call fee plus the per-review fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the reviews it delivered, and a run refused at the start costs nothing.
There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
How do I find an app's ID?+
It is at the end of the app's App Store URL. Pass it without the id prefix, as in the example above.
Can I read reviews from several countries?+
Yes. country takes one store per request, so run once per country. The input accepts a long list of country codes, with us as the default.
Can I get reviews for several apps in one run?+
Yes. appIds is a list, so you can pass your own app and your competitors' in one request. Set maxItems and max_results with the total in mind.
How many reviews can one run return?+
Up to 500. Set maxItems in the input to the number you want.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Planning a roadmap from customer voice? See review monitoring, social listening, and the rest of the tool catalog.