List what changed in an app's store listing (version, title, subtitle, screenshots, price, IAP, …).

GEThttps://api.appgoat.ai/v1/apps/{app}/changes
1+ credits1 + 1 if the US listing is refreshedMCP tool get_app_changesoperationId listAppChanges

Typed change feed, newest first: one entry per changed field with old and new values. Fields include version, release_notes, title, subtitle, description, screenshots, icon, price, iap, iap_range, privacy, in_app_events, badges, featured, editors_choice, installs, content_rating, developer. Ideal for competitor monitoring ("what did X change this month?").

Request

curl "https://api.appgoat.ai/v1/apps/com.spotify.music/changes?field=version%2Ctitle%2Csubtitle" \
  -H "x-api-key: $APPGOAT_API_KEY"

Path parameters

appstringrequired
Any 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).
countrystring
Only changes seen in these storefronts (comma list). Default all storefronts.
fieldstring
Only these fields (comma list), e.g. version,title,subtitle.
sincestring
Only items at or after this ISO date / datetime.
max_ageinteger
Refresh from the store when our data is older than this many seconds (0 = always). Default 604800 (7 days).

Default 604800

waitboolean
Block up to ~25 s for a refresh (default). false = answer immediately from cache with a job id.

Default true

limitinteger

Default 50

cursorstring
meta.next_cursor from the previous page.

Response

200 with data: Change[]. See the envelope for meta.

idstring
countrystring
fieldstring
oldany
Previous value (null = absent).
newany
New value (null = removed).
detected_atstring
Example
{
  "data": [
    {
      "id": "string",
      "country": "us",
      "field": "version",
      "old": null,
      "new": null,
      "detected_at": "2026-10-22T10:00:00Z"
    }
  ],
  "meta": {
    "credits_used": 1,
    "credits_remaining": 9981,
    "request_id": "req_123"
  }
}

Status codes

200
Changes, newest first.
A parameter is missing or invalid (error.param names it).
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.
Too many requests per second for your plan.