REST API quickstart
The GetAppNiche REST API lets you pull the same iOS App Store data you see in the app — app
search with revenue and download estimates, ASO keyword difficulty, and reviews — into your own
scripts, Google Sheets, n8n/Zapier-style automations, or anything else that can make an HTTP
request. You don’t need to be a full-time developer: if you can run a curl command or paste a
snippet into an automation tool, you can use it.
Base URL:
https://api.getappniche.com
1. Create an API key
Sign in (or
create an account), then go to Settings → API
Keys at app.getappniche.com/settings/api-keys.
Click Create key, name it, and copy the secret — it’s shown once. Keys look like
getappniche_... and can be rotated or revoked anytime.
2. Authenticate
Send your key as a Bearer token on every request:
Authorization: Bearer YOUR_API_KEY
3. Endpoints
| Endpoint | Credits | Use it for |
|---|---|---|
GET /api/v1/apps | 1 | Search and filter apps by category, keyword, revenue, downloads, rating, growth. |
GET /api/v1/apps/{app_id} | 1 | One app’s full detail record. app_id uses {store}:{store_id} format, e.g. apple:284882215. |
GET /api/v1/keywords/difficulty | 10 | Score one ASO keyword’s difficulty and opportunity. |
GET /api/v1/reviews | 1 | Fetch enriched review rows with sentiment and topic signals. |
Search apps
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.getappniche.com/api/v1/apps?search=habit%20tracker&min_revenue=3000&limit=10"
Useful query parameters: store, category, search, min_rating, min_reviews,
min_downloads, min_revenue, growth filters, limit (max 100), offset, sort_by,
sort_dir.
App detail
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.getappniche.com/api/v1/apps/apple:284882215"
Keyword difficulty
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.getappniche.com/api/v1/keywords/difficulty?keyword=habit%20tracker&store=apple&country=US&language=en"
Reviews
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.getappniche.com/api/v1/reviews?store=apple&store_id=284882215&limit=20"
Python example
import requests
API_KEY = "YOUR_API_KEY"
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(
"https://api.getappniche.com/api/v1/apps",
headers=headers,
params={"search": "habit tracker", "min_revenue": 3000, "limit": 10},
)
resp.raise_for_status()
data = resp.json()
for app in data["items"]:
print(app["title"], app["revenue_est_monthly"])
JavaScript example
const API_KEY = "YOUR_API_KEY";
const url = new URL("https://api.getappniche.com/api/v1/apps");
url.searchParams.set("search", "habit tracker");
url.searchParams.set("min_revenue", "3000");
url.searchParams.set("limit", "10");
const resp = await fetch(url, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (!resp.ok) throw new Error(`API error ${resp.status}`);
const data = await resp.json();
console.log(data);
Credits and rate limits
- Your plan includes 5,000 API credits per month, refreshed automatically each month.
- Every response includes
credits_charged, so you always know what a call cost. - Balance and per-request history live at app.getappniche.com/settings. Extra packs of 500 credits are available inside the app.
- Rate limit: 60 requests per minute per API key. Exceed it and you get HTTP 429 with a
Retry-Afterheader telling you how long to wait.
Errors and how to fix them
| Status | Meaning | Fix |
|---|---|---|
401 | Missing or invalid API key | Check the Authorization: Bearer ... header and that the full key (starting getappniche_) was pasted. |
402 | Plan doesn’t include API access, or you’re out of credits | Check your balance in Settings; buy a credit pack or wait for the monthly refresh. |
404 | App not found | Verify the app_id uses {store}:{store_id} format, e.g. apple:284882215. |
422 | Invalid parameters | Check parameter names and values against the endpoint docs above (e.g. limit max is 100). |
429 | Rate limited | Slow down to under 60 requests/minute and respect the Retry-After header. |
Using an AI assistant instead?
If you want Claude, Cursor, or another AI agent to query this data directly — no code at all — connect the MCP server instead: see Connect AI agents (MCP). For a summary of both options, see the API & MCP overview.