---
title: "Keywords Overview"
method: GET
path: "/apps/keywords/overview.json"
tags: ["Keywords Overview"]
---

# Keywords Overview

`GET /apps/keywords/overview.json`

## Request

- Base URL: `https://public-api.apptweak.com/api/public/store`
- URL: `https://public-api.apptweak.com/api/public/store/apps/keywords/overview.json`
- Auth: API key in header `x-apptweak-key`

Returns ranked keyword data for an app over a date range. <br/><br/> <b>Price</b> <table> <thead><tr><th>Datapoint</th><th>Description</th><th>Credits per keyword and per day</th></tr></thead> <tbody> <tr><td><b>keyword dictionary</b></td><td>Object containing `keyword`, `date`, `rank`, `volume`, `installs` &amp; `branded_application_id`</td><td>1</td></tr> </tbody> </table> <br/><br/> <b>Good to know</b> <br/><br/> &bull; Available only for apps followed in the AppTweak ASO tool under an Enterprise plan; an app tracked through the API alone answers 404.<br/>&bull; The data is refreshed every 7 days.<br/>&bull; Available only in the Apple Ads countries, for both stores.<br/>&bull; Returns up to the 10,000 most relevant keywords over one year, in no particular order.

## Query parameters

- `app` string, required
- `country` string
- `language` string
- `device` 'iphone' | 'ipad' | 'android'
- `start_date` string, date
- `end_date` string, date
- `keyword_limit` integer
- `keyword_offset` integer

## Response `200`

Successful response.

- object
  - `result` object[]: One element per keyword and day, ordered by keyword then by date ascending. Can be empty on a 200: the requested range is clamped down to the report's coverage, so a range entirely after the report's last day returns nothing.
    - `keyword` string: The keyword.
    - `date` string, date: The day this row describes.
    - `rank` integer, nullable: The app's rank on the keyword that day, capped at 250 — both "not ranked" and any deeper position come back as 250. Null when the report has no datapoint for that day.
    - `volume` integer: AppTweak Volume Estimate for the keyword that day, on the same scale as `volume` in Keyword Metrics.
    - `installs` integer, nullable: Estimated installs the app received from that keyword that day.
    - `branded_application_id` union: The app owning the brand the keyword refers to, or null when the keyword is generic. Despite the report calling this field `is_branded`, it carries an ID and not a flag.
      - integer, nullable: Numeric App Store ID, returned for device iphone or ipad.
      - string: Package name, returned for device android.
  - `metadata` ResponseMetadata: Standard response envelope, identical on every endpoint.
    - `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.
- `404`: Not found. No overview data available for the given app/country/language/device combination.
- `422`: Validation error. Returned when a parameter is invalid.

## Changes

- **2026-11-03** `a4af4000f1e3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apptweak/apis/apptweak-store-api/changes/apps/keywords/overview.json/get.md)

---

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