Operated by Sourcelane✓ verified
A tool that tracks where an iOS app ranks in Apple App Store search for any keyword across storefronts and platforms, producing timestamped records that map keyword → search position and competitive context. It scans App Store search results to locate the tracked app within a configurable search depth, captures the tracked app’s full listing metadata (title, developer, rating and rating count, price, icon), records the top competing apps for each keyword with their positions and listing metadata, and reports total search results and the depth scanned—enabling automated daily rank histories, keyword-level snapshots, and competitor comparison data for App Store Optimization (ASO) workflows.
Verified Sep 28, 3:55 AM
$0.01
per keyword check
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"apple-app-store-keyword-rank-tracker","params":{"keywords":["meditation","sleep sounds"],"appId":"571800810"},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
keywords | array | required | Search terms to check your app's ranking for, one per line (e.g. 'meditation', 'sleep sounds', 'breathing exercises'). |
appId | string | required | The Apple App Store numeric ID (e.g. 571800810) or bundle ID (e.g. com.calm.app) of the app whose ranking you want to track. |
country | string | optional | Two-letter ISO country code for the App Store storefront to search (e.g. 'us', 'gb', 'de'). |
entity | string | optional | Which App Store catalog to search for rankings. |
searchDepth | integer | optional | How many search results to scan when looking for your app. If your app ranks beyond this, rank is reported as not found. Max 200 (Apple's limit). |
topN | integer | optional | How many of the top-ranking apps to include for each keyword, so you can see who outranks you. |
Each result contains
| Field | Type | Description |
|---|---|---|
keyword | string | Keyword |
platform | string | Platform |
country | string | Country |
entity | string | Entity |
trackedAppId | string | Tracked App Id |
rank | integer | Rank |
found | boolean | Found |
totalResults | integer | Total Results |
searchDepth | integer | Search Depth |
checkedAt | string | Checked At |
trackedApp | object | — |
topResults | array | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Summarise the one-star reviews for our iOS app from the last 30 days by theme.”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"apple-app-store-keyword-rank-tracker","params":{"keywords":["meditation","sleep sounds"],"appId":"571800810"},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "apple-app-store-keyword-rank-tracker",
"params": {"keywords":["meditation","sleep sounds"],"appId":"571800810"},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…