---
title: "Search apps by name"
method: GET
path: "/user/resolve_app_id_by_app_name"
tags: ["App search"]
---

# Search apps by name

`GET /user/resolve_app_id_by_app_name`

## Request

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

Get the application ids matching an app name, or part of one, on the App Store and on Google Play in a single call, ranked by store relevance. <br/><br/> <b>Price</b> <table> <thead><tr><th>Datapoint</th><th>Description</th><th>Credits/request</th></tr></thead> <tbody> <tr><td><b>candidate object</b></td><td>Hash containing the application id, the title and the icon of each candidate, for both stores.</td><td>11</td></tr> </tbody> </table> <br/><br/> The price does not change with `limit`. A rejected parameter costs 1 credit. A request that reaches neither store costs nothing. <br/><br/> Every endpoint of the AppTweak API takes an application id: a numeric id on the App Store, a package name on Google Play. This endpoint is the way in when all you have is a name: it searches both stores in one call and returns the candidates side by side, so you can pick the right app before spending credits on data endpoints. The response will be a JSON which contains one array of candidates per store, ranked by store relevance, without pagination. <br/><br/> <b>Good to know</b> <br/><br/> &bull; This is a store search and not an exact lookup: candidates come back ranked by store relevance, and the first one is not necessarily the app you meant. Check `title` before using an id.<br/>&bull; If one store is unavailable the request still succeeds, with that store's array empty, and still costs 11 credits.<br/>&bull; Each store applies its own default language for the requested `country`, and the two are not always the same: for `in`, the App Store is searched in `en` and Google Play in `in`.

## Query parameters

- `query` string, required
- `limit` integer
- `country` string

## Response `200`

Candidates per store. A store that could not be reached comes back as an empty array.

- object
  - `result` object
    - `ios` object[]: App Store candidates, ranked by store relevance. Empty when the App Store could not be reached
      - `application_id` string: The ID to pass to every other endpoint: a numeric ID on iOS, a package name on Android
      - `title` string: App title as the store returns it for that storefront
      - `icon` string, nullable: Icon URL as the store serves it, null when the store returned none
    - `android` object[]: Google Play candidates, ranked by store relevance. Empty when Google Play could not be reached
      - `application_id` string: The ID to pass to every other endpoint: a numeric ID on iOS, a package name on Android
      - `title` string: App title as the store returns it for that storefront
      - `icon` string, nullable: Icon URL as the store serves it, null when the store returned none
  - `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`: Missing or invalid `x-apptweak-key`.
- `403`: The credit balance is too low for the 11 credits this call costs (`NotEnoughCreditsError`). Nothing is charged.
- `422`: A parameter is missing, empty or out of range. `error.parameter` names it. Charged 1 credit.
- `429`: Rate limit exceeded: 10 requests per minute on this endpoint, 60 per 10 seconds across the API. Retry with backoff.
- `503`: Neither store could be reached (`ServiceUnavailableError`). Uncharged: `metadata.request.cost` is 0.

---

[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)
