Review intelligence for an app - top issues with trends and samples, topics per version, weekly sentiment.
Built from the AI tags on every review (sentiment, intent, severity, topic). top_issues are topics carried
by negative / bug / crash / UX / pricing reviews, with last_30d vs prev_30d counts and sample reviews;
versions shows what each release changed in sentiment and topics; sentiment_over_time is weekly. Use it
for "what do users complain about since v2.3?" or a reviews → GitHub issues playbook. Reviews not tagged yet
only count in the totals (tagged < reviews, see meta.warnings).
Request
curl "https://api.appgoat.ai/v1/apps/com.spotify.music/insights" \
-H "x-api-key: $APPGOAT_API_KEY"const res = await fetch("https://api.appgoat.ai/v1/apps/com.spotify.music/insights", {
headers: {
"x-api-key": process.env.APPGOAT_API_KEY,
},
});
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.appgoat.ai/v1/apps/com.spotify.music/insights",
headers={"x-api-key": os.environ["APPGOAT_API_KEY"]}
)
body = res.json()Path parameters
appstringrequiredAny app identifier: App Store id (
284882215, id284882215), Play package (com.spotify.music), Apple bundle id (com.spotify.client), store URL (URL-encoded), apple:<id> / play:<id>, or a name (spotify).Query parameters
store"apple" | "play"Disambiguates
{app} (a bundle id vs a Play package, or a name).countrystringOne storefront; omit for every storefront we hold reviews for.
since_daysintegerDefault 180
versionsintegerHow many of the latest versions to break down.
Default 6
Response
200 with data: Insights. See the envelope for meta.
windowobjectwindow.sincestringwindow.untilstringreviewsintegertaggedintegerReviews with AI tags (the breakdowns below cover these).
avg_ratingnumber | nullsentimentobjectsentiment.positiveintegersentiment.neutralintegersentiment.negativeintegerintentsobjecttopicsobject[]topics[].labelstringtopics[].reviewsintegertopics[].negativeintegertopics[].avg_ratingnumber | nulltop_issuesobject[]top_issues[].topicstringtop_issues[].reviewsintegertop_issues[].sharenumbertop_issues[].avg_severitynumber | null0 none - 3 critical.
top_issues[].intentsobjecttop_issues[].last_30dintegertop_issues[].prev_30dintegertop_issues[].versionsstring[]top_issues[].samplesobject[]versionsobject[]versions[].versionstringversions[].first_review_atstringversions[].reviewsintegerversions[].avg_ratingnumber | nullversions[].sentimentobjectversions[].intentsobjectversions[].topicsobject[]sentiment_over_timeobject[]sentiment_over_time[].weekstringsentiment_over_time[].reviewsintegersentiment_over_time[].positiveintegersentiment_over_time[].neutralintegersentiment_over_time[].negativeintegersentiment_over_time[].avg_ratingnumber | nullExample
{
"data": {
"window": {
"since": "2026-10-22T10:00:00Z",
"until": "2026-10-22T10:00:00Z"
},
"reviews": 1,
"tagged": 1,
"avg_rating": 4.5,
"sentiment": {
"positive": 1,
"neutral": 1,
"negative": 1
},
"intents": {},
"topics": [
{
"label": "string",
"reviews": 1,
"negative": 1,
"avg_rating": 4.5
}
],
"top_issues": [
{
"topic": "string",
"reviews": 1,
"share": 4.5,
"avg_severity": 4.5,
"intents": {},
"last_30d": 1,
"prev_30d": 1,
"versions": [],
"samples": []
}
],
"versions": [
{
"version": "string",
"first_review_at": "2026-10-22T10:00:00Z",
"reviews": 1,
"avg_rating": 4.5,
"sentiment": {},
"intents": {},
"topics": []
}
],
"sentiment_over_time": [
{
"week": "2026-10-22",
"reviews": 1,
"positive": 1,
"neutral": 1,
"negative": 1,
"avg_rating": 4.5
}
]
},
"meta": {
"credits_used": 25,
"credits_remaining": 9981,
"request_id": "req_123"
}
}Status codes
200
Insights.
Missing or invalid API key.
insufficient_credits (the call costs more than you have left; nothing was done) or plan_limit (a feature of a higher plan).Nothing matches
{app}, or the store does not have it.429
rate_limitedToo many requests per second for your plan.