Documentation Index
Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
Use this file to discover all available pages before exploring further.
GET /v1/ai-visibility/:appId/competitors
Across all your tracked prompts, this endpoint returns the apps that ChatGPT, Gemini, Claude, or Perplexity surfaces — ranked by how often they appear. It’s the “you should know about these competitors” list: every app the assistants think a user with your tracked intents might pick instead of yours.
Use it to:
- Identify competitors you didn’t realise the AI consistently mentions in your space.
- Quantify how often a known competitor is recommended versus you.
- Find ASO benchmarking targets — the apps with the highest visibility in your prompts are the ones to study.
Path parameters
| Name | Type | Required | Description |
|---|
| appId | string | Yes | Apple App ID (numeric) |
Query parameters
| Name | Type | Default | Description |
|---|
| country | string | us | ISO country code |
| model | string | chatgpt | One of chatgpt, claude, gemini, perplexity |
| windowDays | int | 14 | Lookback window for the rollup. Min 1, max 90. |
Response
{
"data": [
{
"trackId": "571800810",
"name": "Calm",
"iconUrl": null,
"appearancesTotal": 38,
"intentsCovered": 7,
"positionAvg": 1.4,
"visibilityPct": 79.2
},
{
"trackId": "493145008",
"name": "Headspace",
"iconUrl": null,
"appearancesTotal": 31,
"intentsCovered": 6,
"positionAvg": 2.1,
"visibilityPct": 64.6
},
{
"trackId": "337472899",
"name": "Insight Timer",
"iconUrl": null,
"appearancesTotal": 18,
"intentsCovered": 4,
"positionAvg": 3.6,
"visibilityPct": 37.5
}
]
}
Returned sorted by appearancesTotal desc. Up to 20 rows.
| Field | Description |
|---|
trackId | Canonical App Store ID. null if AI Visibility couldn’t confidently match the assistant’s spelling against the App Store (rare, usually web-only products). |
name | The app name as the assistant most recently spelled it. |
iconUrl | Reserved — currently null. Will be populated in a future release; use GET /apps/:id with trackId to fetch the icon today. |
appearancesTotal | Total number of times this app appeared across every (prompt × model × day) within the window. One assistant mentioning it in 3 prompts on 5 days counts as 15. |
intentsCovered | Number of distinct intents (out of your tracked set) where this app appeared at least once. A high number means a broad competitor; a low number means a niche one. |
positionAvg | Average rank in the assistants’ lists when this app was mentioned. Lower is better. null if the assistants only mentioned the app in non-list prose. |
visibilityPct | % of distinct prompts (in the window) where this app appeared. The closest single number to your own overview visibilityScore for direct comparison. |
Reading the table
The most useful comparison is your own visibilityPct (from GET /overview) versus the competitors here:
Your AI Visibility Score: 38 ← from /overview
─────────────────────────────────────
Calm visibilityPct: 79.2 ← appears in 79% of your prompts
Headspace visibilityPct: 64.6
Insight Timer visibilityPct: 37.5 ← about even with you
Reading the row for Insight Timer: it appears in roughly the same share of your tracked prompts as your own app, but at average position 3.6 (vs. probably 1–2 for Calm). This means Insight Timer is a comparably-known alternative AI surfaces with you, not above you.
A row where intentsCovered is high and positionAvg is low is a competitor that’s actively winning the same buyer journeys you target. That’s where your ASO effort and any AI-assistant-targeted content (review-rich blogs, listicles in major publications) will move the needle the most.
Code examples
# 14-day window, ChatGPT
curl "https://api.appeeky.com/v1/ai-visibility/1234567890/competitors?country=us&model=chatgpt" \
-H "X-API-Key: YOUR_API_KEY"
# 30-day window, Perplexity
curl "https://api.appeeky.com/v1/ai-visibility/1234567890/competitors?country=us&model=perplexity&windowDays=30" \
-H "X-API-Key: YOUR_API_KEY"
The endpoint returns trackId for resolved competitors. To get icons, ratings, and developer info for the dashboard:
const competitors = (
await fetch(
"https://api.appeeky.com/v1/ai-visibility/1234567890/competitors?model=chatgpt",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
).then((r) => r.json())
).data;
const enriched = await Promise.all(
competitors
.filter((c) => c.trackId)
.slice(0, 5)
.map(async (c) => {
const meta = await fetch(
`https://api.appeeky.com/v1/apps/${c.trackId}`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
).then((r) => r.json());
return { ...c, iconUrl: meta.data.iconUrl, rating: meta.data.averageUserRating };
})
);
Or use the dedicated Similar Apps endpoint if you want App Store algorithm-derived competitors instead of AI-derived ones — the two sets are often different in interesting ways.
Credits
Errors
| Status | Code | When |
|---|
| 400 | INVALID_APP_ID | Missing or non-numeric app ID |
| 401 | — | Missing or invalid API key / JWT |
| 429 | — | Insufficient monthly credits |
See also
- Overview endpoint — your own visibility, comparable side-by-side
- Intents — per-intent
topApps breakdown drives this benchmark
- Get app — fetch icons + ratings for the resolved
trackIds
- Similar Apps — App Store algorithm’s view of “similar” apps