KPIs that are specific to a keyword and an app.
Improved Keyword Installs starting July 17, 2025Starting July 17, 2025, we're updating our keyword installs estimates. This change will make keyword performance trends even more precise, especially when looking at historical data.
Keyword Metrics by App are KPIs that AppTweak has been able to gather or estimate about keywords. See below for a list of available metrics.
| Metric name | Description | Origin | Historical Data Available? |
|---|---|---|---|
| rank | The position of the queried app in the search result list when a specific keyword is searched for. | Gathered directly from the stores | ✅ |
| installs | Number of users that search for this keyword and then install the queried app | AppTweak estimates | ✅ |
| chance | A score between 1 and 100 that indicates how likely your app is to rank in the top 10 search results for the selected keyword. | AppTweak-defined KPI | ➖ |
| kei | KEI (Keyword Efficiency Index): A score that indicates the visibility potential of a keyword, taking into account keyword volume and chance score. | AppTweak-defined KPI | ➖ |
| relevancy | The relevancy score is an indicator between 0 and 100, indicating how relevant a keyword is for your app. A higher score indicates higher relevancy. The relevancy score is based on the app store ranking algorithm, hence targeting highly relevant keywords ensures that your app shows up when users search for the solution you offer. | AppTweak-defined KPI | ➖ |
How are Keyword Installs computed?Keyword Installs are an estimated number of organic installed received by an app from a keyword. They are based on:
- current or historical app ranking on a keyword
- current keyword volume
App Keyword Ranking Current takes into account the today's app ranking and today's keyword volume to provide a keyword install estimation.
App Keyword Ranking Historical takes into account the historical app ranking and today's keyword volume to provide a keyword install estimation. This means that the historical keyword installs may vary if your keyword volume evolve through time. Therefore we recommend fetching data regularly and save it to have a more accurate picture.
This information is exposed through two endpoints:
- The Current endpoint which returns the latest - most recent - data available
- The History endpoint which returns the historical daily values over a given period of time
Rules for missing data in historical endpoints
When we don't have historical data for some days, we try to come up with our best estimate for that day. This estimate is exposed in a field called effective_value. It's useful because it's guaranteed to always return a number, so it won't break a dashboard or pipeline you might have built expecting a value every day. The same logic is used in the AppTweak tool itself.
effective_valuecan differ between requests for the same day
effective_valueis estimated using the other days within the date range you queried — it never looks outside yourstart_date/end_date. This means that querying the same day with a wider or narrower range can return a differenteffective_valuefor that same day, if it changes which neighboring days are available to estimate from.If you need a number for a given day that's stable regardless of the range you query, use
valueinstead, and treat null as "no estimate available" rather than defaulting it to 0 yourself.
The exact estimation logic differs slightly by metric — see the examples below.
Ranked, unranked or no data{ "date": "2024-03-11", "value": null, "fetch_performed": true, "effective_value": 501 }To know whether your app is ranked on a keyword or not, you can refer to the following logic in the response data:
value= non-null andfetch_performed = true➔ rankedvalue= null andfetch_performed = true➔ unrankedvalue=nullandfetch_performed = false➔ no dataIn addition to
value, you can useeffective_value, that corresponds to a value that is guaranteed to be non-null. The logic to computeeffective_valueis:
- If
valueis notnull,effective_value = value- Otherwise
- If
fetch_performed = true, theneffective_value = 501, corresponding to the numeric representation ofunranked- Otherwise
- If there is at least one non-null value in the date range, take the closest day to the missing day and use that
valuefor theeffective_value(use an average if 2 days are at the same distance to the missing day)- Otherwise, defaults to
501
Installs & estimates{ "date": "2024-03-11", "value": null, "effective_value": 8234 }
fetch_performedis not returned forinstalls— it only applies to rank. For installs, value is simply null on any day where we have no ranking data for that keyword (since installs are derived from rank), with no "ranked/unranked" distinction.The logic to compute effective_value for installs is:
- If value is not null,
effective_value=value- Otherwise, look at the other days within the date range you queried. If at least one of them has a non-null
value,effective_valueis set to the value of the closest such day (averaging the two closest days if they're equidistant).- If no day in the queried range has a non-null value, effective_value defaults to 0.
Note: because the neighbor lookup in step 2 only considers days inside the
start_date/end_dateyou queried,effective_valuefor a given day can differ between two requests that use the same start_date but a different end_date (or vice versa) — widening the range can surface a real data point that a narrower range wouldn't have found. value is unaffected by this and is always the same for a given day regardless of the range queried.