Built-in tool
Search App Stores
Search Google Play or Apple App Store listings by keyword/category and compare ratings, reviews, installs, price, developer, and release/update dates.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| keywordstring · required | string | required | Keyword expected in the app title or description. |
| limitnumber · optional | number | optional | Maximum records to return (1-1000). Defaults to 100. Default: |
| matchstring · optional | string | optional | Fields to search. Defaults to both title and description. One of: |
| storestring · optional | string | optional | App marketplace to search. One of: Default: |
| categorystring · optional | string | optional | Optional exact store category name. |
| minimum_ratingnumber · optional | number | optional | Optional minimum rating from 0 to 5. |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elements"
],
"properties": {
"elements": {
"type": "array",
"items": {
"type": "object",
"required": [
"store"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"free": {
"type": [
"boolean",
"null"
]
},
"price": {
"type": [
"number",
"null"
]
},
"store": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"app_id": {
"type": [
"string",
"null"
]
},
"rating": {
"type": [
"number",
"null"
]
},
"reviews": {
"type": [
"number",
"null"
]
},
"version": {
"type": [
"string",
"null"
],
"description": "Current app version as a bare string, e.g. \"1.3.50\" — the store's \"Version \" display label is removed. Google Play may report \"Varies with device\" for per-device builds, which is passed through as-is."
},
"category": {
"type": [
"string",
"null"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"installs": {
"type": [
"number",
"null"
]
},
"developer": {
"type": [
"string",
"null"
]
},
"updated_at": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"released_at": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
"returned": {
"type": "number",
"description": "How many rows this run returned, after any Limit was applied."
},
"truncated": {
"type": "boolean"
},
"suggestion": {
"type": "string"
},
"totalCount": {
"type": "number",
"description": "How many records the provider says MATCH in total, independent of Limit — routinely in the millions (spotify.com has 2,583,327 ranking pages). It is a match count, NOT how many this endpoint will serve: Limit caps what one call returns, so do not compare it against the row count to judge completeness and do not paginate towards it. Absent when the provider sent no count."
},
"totalElements": {
"type": "number",
"description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your Limit on a limited run. Kept at that value deliberately: ENG-17058 asked for depth 5 to report 5, and it is a live number in existing flows. Use `returned` for this number or `totalCount` for how many records match."
}
},
"additionalProperties": true
}