List your watches (apps, competitor sets, keyword sets) with usage against your plan's limits.

GEThttps://api.appgoat.ai/v1/watches
FreeMCP tool list_watchesoperationId listWatches

meta.usage has watched apps and keyword slots used vs your plan (null limit = unlimited).

Request

curl "https://api.appgoat.ai/v1/watches" \
  -H "x-api-key: $APPGOAT_API_KEY"

Query parameters

kind"app" | "keyword" | "competitor_set"
appstring
Only watches that include this app (any {app} input).
store"apple" | "play"
Disambiguates {app} (a bundle id vs a Play package, or a name).

Response

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

idinteger
kindWatchKind
namestring | null
store"apple" | "play" | "both" | null
appany
competitorsWatchApp[]
competitor_set only.
termsstring[]
keyword only.
keywordsobject[]
keyword only: one slot per store × country × term (id = the tracked-keyword id).
keywords[].idinteger
keywords[].termstring
keywords[].storeStore
keywords[].countrystring
keywords[].ranked_atstring | null
countriesstring[]
event_typesEventType[]
settingsWatchSettings
activeboolean
created_atstring
updated_atstring
Example
{
  "data": [
    {
      "id": 1,
      "kind": "app",
      "name": "string",
      "store": "apple",
      "app": null,
      "competitors": [
        {}
      ],
      "terms": [
        "string"
      ],
      "keywords": [
        {}
      ],
      "countries": [
        "string"
      ],
      "event_types": [
        "new_version"
      ],
      "settings": {
        "significance": 0.5,
        "rank_move": 5,
        "keyword_top_n": 10,
        "chart_top_n": 100,
        "rating_drop": 0.1,
        "spike_factor": 3,
        "email_digest": true,
        "depth": 1,
        "cadence_minutes": 1
      },
      "active": false,
      "created_at": "2026-10-22T10:00:00Z",
      "updated_at": "2026-10-22T10:00:00Z"
    }
  ],
  "meta": {
    "credits_used": 0,
    "credits_remaining": 9981,
    "request_id": "req_123"
  }
}

Status codes

200
Watches, newest first.
A parameter is missing or invalid (error.param names it).
Missing or invalid API key.
Too many requests per second for your plan.