---
title: "Followed Apps and Competitors"
method: GET
path: "/user/followed_apps_and_competitors"
tags: ["Followed Apps and Competitors"]
---

# Followed Apps and Competitors

`GET /user/followed_apps_and_competitors`

## Request

- Base URL: `https://public-api.apptweak.com/api/public/apptweak`
- URL: `https://public-api.apptweak.com/api/public/apptweak/user/followed_apps_and_competitors`
- Auth: API key in header `x-apptweak-key`

Get the applications followed in the selected workspaces, with the competitors tracked against each of them, one entry per store, country, language and device the application is followed in. <br/><br/> <b>Price</b> <table> <thead><tr><th>Datapoint</th><th>Description</th><th>Credits/request</th></tr></thead> <tbody> <tr><td><b>followed application object</b></td><td>Hash containing the application id and name, the store, country, language and device it is followed in, and its competitors.</td><td>0</td></tr> </tbody> </table> <br/><br/> In AppTweak an application is followed in a context, not in the absolute: the same app can be followed on the App Store in the United States and on Google Play in France, and each of those is a separate entry with its own competitors. The response keeps that structure, one entry per context, grouped by workspace. <br/><br/> The filters are all optional and all narrow the same list: `application_ids`, `stores`, `country_codes`, `language_codes` and `devices`. `metadata.response.filters` echoes the ones that were applied. Applications whose metadata can no longer be resolved are omitted.

## Query parameters

- `workspace_ids` integer[], required
- `application_ids` string[]
- `stores` string[]
- `country_codes` string[]
- `language_codes` string[]
- `devices` string[]

## Response `200`

Successful response.

- object
  - `result` object
    - `workspaces` object[]
      - `id` integer
      - `name` string
      - `followed_applications` object[]
        - `application_id` string
        - `application_name` string, nullable
        - `store` string
        - `country_code` string
        - `language_code` string
        - `device` string
        - `competitors` object[]
          - `application_id` string
          - `application_name` string, nullable
  - `metadata` ResponseMetadata: Standard response envelope: the request as the API parsed it, the credits actually charged (`cost`), and what the call could have cost had every datapoint been available (`max_credit_cost`). Every endpoint of this API returns it unchanged.
    - `request` object
      - `path` string: The path that was called.
      - `params` object, nullable: The query as the API parsed it, with defaults applied.
      - `cost` integer: Credits actually charged for this call.
      - `max_credit_cost` integer: Credits the call could have cost if every datapoint requested had been available.
      - `status` integer: HTTP status of the response.
    - `response` object, nullable: Endpoint-specific notes; null when there are none.

## Other responses

- `401`: Unauthorized. Unknown or missing API token.
- `403`: Forbidden. Not enough credits to perform the request.
- `422`: Validation error. Returned when a parameter is invalid.
- `429`: Rate limit exceeded: 20 requests per minute on this endpoint, 60 per 10 seconds across the API. Retry with backoff.

---

[API](https://skmtc.dev/apptweak/apis/apptweak-api.md) - [All operations](https://skmtc.dev/apptweak/apis/apptweak-api/llms.txt) - [OpenAPI document](https://skmtc.dev/apptweak/apis/apptweak-api/revisions/76dfd41ade5d?raw)
