AppstoreSpy Suggestions API
The Suggestions API from AppstoreSpy — 1 operation(s) for suggestions.
The Suggestions API from AppstoreSpy — 1 operation(s) for suggestions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/appstorespy:appstorespy-suggestions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AppstoreSpy Suggestions API
description: '# Authentication
The Appstorespy API uses API-KEY authentication.
If you do not have an API Key token, you can get it on your account page https://appstorespy.com/account.
An API Key is required to be sent as part of every request in request header.
```
-H ''accept: application/json''
-H ''API-KEY: ''
```
# Agents and MCP
AI agents can call the same endpoints as MCP tools at https://api.appstorespy.com/mcp, with the same API-KEY header and the same credits per call.
https://api.appstorespy.com/agentic-access lists what each operation costs and whether it reads, queues or writes; https://api.appstorespy.com/skills/ holds one agent skill per capability; https://api.appstorespy.com/llms.txt links every agent document.
# Fields
Use the fields parameter to specify which fields should be returned.
Example:
```
Request: fields=name,developer_name,ipd,downloads,...
Response: {name: ..., developer_name: ..., ipd: ..., downloads: ..., ...}
```
Don`t use fields parameter if you need to get all fields.
# Sort
When you use search, you can add a sort parameter.
```
Request: sort=ratingCount
Response: [{name: app1, ratingCount: 4.2}, {name: app2, ratingCount: 4.4}, ...]
```
If you need DESC sorting add "-" before sort parametr.
```
Request: sort=-ratingCount
Response: [{name: app2, ratingCount: 4.4}, {name: app1, ratingCount: 4.2}, ...]
```
# County & Language params
...
# Status codes / Error codes
* 200 OK.
* 202 Accepted - The app was not present in our databases and has been submitted for crawling. If the app is available anywhere, it will be available soon.
* 204 No Content - No data for requested country.
* 403 Forbidden - Your access token is not valid.
* 429 Too Many Requests - Your request rate is over the limit.'
termsOfService: https://appstorespy.com/agreement
contact:
name: AppstoreSpy Support
url: https://appstorespy.com/support
email: support@appstorespy.com
license:
name: Proprietary
url: https://appstorespy.com/agreement
version: 1.1.1
tags:
- name: Suggestions
description: Google Play search autocomplete suggestions for a term, country and language.
externalDocs:
description: Quickstart examples
url: https://github.com/romamo/appstorespy-api-docs
paths:
/play/suggestions:
get:
tags:
- Suggestions
summary: Get Google Play keyword suggestions
description: Returns Google Play search autocomplete suggestions for a term in one country and language. Responds 202 with a partial result while a fresh crawl is in progress; `freshness` sets how old a cached result may be before it is recrawled.
operationId: get_suggests_play_suggestions_get
parameters:
- required: true
schema:
type: string
title: Q
name: q
in: query
- required: false
schema:
allOf:
- $ref: '#/components/schemas/AppCountries'
default: US
name: country
in: query
- required: false
schema:
allOf:
- $ref: '#/components/schemas/AppLanguages'
default: en_US
name: lang
in: query
- required: false
schema:
allOf:
- $ref: '#/components/schemas/CacheTime'
default: 7d
name: freshness
in: query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Suggest'
example:
id: VX-6ooYBp4wlolkdJehv
term: spotify
country: US
added: '2023-03-02T14:29:13+00:00'
lang: en_US
store: play
crawled: '2023-03-02T14:29:42+00:00'
results:
- spotify
- spotify lite
- spotify downloader
- spotify for artists
- spotify kids
headers:
X-Cost:
description: 'Credits this call cost, after any refund: 0 for a 422, a 429 or a 5xx response, except on job endpoints (the recrawl, liveops and suggestions operations), which are still billed; see https://github.com/romamo/as-rest/issues/99'
schema:
type: integer
X-Remaining-Credits:
description: Credits left on the account after this call
schema:
type: integer
X-Receipt:
description: Id of this call's billing receipt
schema:
type: string
'202':
description: Response in progress
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestLite'
example:
id: VX-6ooYBp4wlolkdJehv
term: spotify
country: US
added: '2023-03-02T14:29:13+00:00'
lang: en_US
store: play
headers:
X-Cost:
description: 'Credits this call cost, after any refund: 0 for a 422, a 429 or a 5xx response, except on job endpoints (the recrawl, liveops and suggestions operations), which are still billed; see https://github.com/romamo/as-rest/issues/99'
schema:
type: integer
X-Remaining-Credits:
description: Credits left on the account after this call
schema:
type: integer
X-Receipt:
description: Id of this call's billing receipt
schema:
type: string
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
headers:
X-Cost:
description: 'Credits this call cost, after any refund: 0 for a 422, a 429 or a 5xx response, except on job endpoints (the recrawl, liveops and suggestions operations), which are still billed; see https://github.com/romamo/as-rest/issues/99'
schema:
type: integer
X-Remaining-Credits:
description: Credits left on the account after this call
schema:
type: integer
X-Receipt:
description: Id of this call's billing receipt
schema:
type: string
'401':
description: The `API-KEY` header is missing or holds an unknown key
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
type: integer
required:
- message
- code
example:
message: Wrong key
code: 401
'402':
description: The credit balance does not cover this call's price; nothing was charged
content:
application/json:
schema:
type: string
example: Insufficient credits in your balance
headers:
X-Cost:
description: Price of the call that did not fit; nothing was charged
schema:
type: integer
X-Remaining-Credits:
description: Credits on the account when the call was refused
schema:
type: integer
security:
- APIKeyHeader: []
x-cost-credits: 1
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
Suggest:
properties:
id:
type: string
title: Id
term:
type: string
title: Term
country:
type: string
title: Country
added:
type: string
format: date-time
title: Added
lang:
type: string
title: Lang
store:
type: string
title: Store
crawled:
type: string
format: date-time
title: Crawled
app:
type: string
title: App
results:
items:
type: string
type: array
title: Results
type: object
required:
- id
- term
- country
- added
- lang
- store
title: Suggest
CacheTime:
type: string
enum:
- 1d
- 7d
- 30d
title: CacheTime
description: An enumeration.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
SuggestLite:
properties:
id:
type: string
title: Id
term:
type: string
title: Term
country:
type: string
title: Country
added:
type: string
format: date-time
title: Added
lang:
type: string
title: Lang
store:
type: string
title: Store
type: object
required:
- id
- term
- country
- added
- lang
- store
title: SuggestLite
AppLanguages:
type: string
enum:
- en_US
- ar
- en_GB
- fr_FR
- es_419
- de_DE
- pt_BR
- it_IT
- ja_JP
- ko_KR
- tr_TR
- ru_RU
- vi
title: AppLanguages
description: An enumeration.
AppCountries:
type: string
enum:
- US
- CA
- AT
- BE
- CY
- CZ
- DK
- FI
- FR
- DE
- GR
- HU
- IE
- IT
- NL
- 'NO'
- PL
- PT
- RU
- ES
- SE
- CH
- TR
- UA
- GB
- EG
- IN
- IL
- MA
- NG
- SA
- ZA
- AE
- AU
- HK
- ID
- JP
- KZ
- KR
- MY
- NZ
- PK
- PH
- SG
- TW
- TH
- VN
- AR
- BR
- MX
title: AppCountries
description: An enumeration.
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: API-KEY
externalDocs:
description: Guides, examples, a Postman collection and the Spectral ruleset
url: https://github.com/romamo/appstorespy-api-docs
x-provenance:
method: harvested
publisher: AppstoreSpy
source: https://api.appstorespy.com/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)