Search the catalog (~5M apps in both stores) by app name or id.
Exact title matches first, then prefix, then substring; most ratings first within each group.
Request
curl "https://api.appgoat.ai/v1/search?q=photo+editor&store=apple" \
-H "x-api-key: $APPGOAT_API_KEY"const res = await fetch("https://api.appgoat.ai/v1/search?q=photo+editor&store=apple", {
headers: {
"x-api-key": process.env.APPGOAT_API_KEY,
},
});
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.appgoat.ai/v1/search?q=photo+editor&store=apple",
headers={"x-api-key": os.environ["APPGOAT_API_KEY"]}
)
body = res.json()Query parameters
qstringrequiredApp name (≥ 2 characters) or exact id.
store"apple" | "play"categorystringStore category name, e.g.
Photo & Video (App Store) or PHOTOGRAPHY (Play).limitintegerDefault 20
cursorstringmeta.next_cursor from the previous page.fieldsstringComma list of top-level fields to return (identifiers are always kept), e.g.
title,rating,version.Response
200 with data: AppCard[]. See the envelope for meta.
storeStoreapp_idstringtitlestring | nulldeveloper_namestring | nullicon_urlstring | nullcategorystring | nullratingnumber | nullratings_countinteger | nullinstalls_mininteger | nullPlay install bucket lower bound.
pricenumber | nullExample
{
"data": [
{
"store": "apple",
"app_id": "324684580",
"title": "Spotify: Music and Podcasts",
"developer_name": "string",
"icon_url": "string",
"category": "string",
"rating": 4.5,
"ratings_count": 1,
"installs_min": 1,
"price": 4.5
}
],
"meta": {
"credits_used": 1,
"credits_remaining": 9981,
"request_id": "req_123"
}
}Status codes
200
Matching apps.
A parameter is missing or invalid (
error.param names it).Missing or invalid API key.
insufficient_credits (the call costs more than you have left; nothing was done) or plan_limit (a feature of a higher plan).429
rate_limitedToo many requests per second for your plan.