Read your own app's reviews from App Store Connect / Play Console with reply status; their ids feed review.reply.
unanswered=true keeps reviews without a developer reply (the "reply to every review" playbook). Play only
returns reviews written or edited in the last 7 days (Google API limit); App Store Connect returns all.
Request
curl "https://api.appgoat.ai/v1/connections/123/reviews?app=value" \
-H "x-api-key: $APPGOAT_API_KEY"const res = await fetch("https://api.appgoat.ai/v1/connections/123/reviews?app=value", {
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/connections/123/reviews?app=value",
headers={"x-api-key": os.environ["APPGOAT_API_KEY"]}
)
body = res.json()Path parameters
idstringrequiredConnection id (
con_…).Query parameters
appstringrequiredA linked app (App Store id or package name).
unansweredbooleanDefault false
ratingstring1, 1,2 or 1-3.countrystringApp Store territory filter (ISO alpha-2).
limitintegerDefault 100
cursorstringmeta.next_cursor from the previous page.Response
200 with data: ProviderReview[]. See the envelope for meta.
idstringThe provider's review id (use in review.reply).
ratinginteger | nulltitlestring | nullbodystring | nullauthorstring | nullcountrystring | nulllanguagestring | nullversionstring | nullcreated_atstring | nullresponseobject | nullresponse.idstring | nullresponse.bodystringresponse.updated_atstring | nullresponse.statestring | nullASC: PENDING_PUBLISH or PUBLISHED.
Example
{
"data": [
{
"id": "string",
"rating": 1,
"title": "Spotify: Music and Podcasts",
"body": "string",
"author": "string",
"country": "us",
"language": "string",
"version": "string",
"created_at": "2026-10-22T10:00:00Z",
"response": {
"id": "string",
"body": "string",
"updated_at": "2026-10-22T10:00:00Z",
"state": "string"
}
}
],
"meta": {
"credits_used": 1,
"credits_remaining": 9981,
"request_id": "req_123"
}
}Status codes
200
One page of reviews.
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).404
not_foundNot found.
429
rate_limitedToo many requests per second for your plan.
502
App Store Connect / Google Play / Apple Ads answered with an error (message passed through).