Connect AI agents and your code to RankShark.
Track and Enhance each have an MCP server for AI apps such as Claude and ChatGPT, and a REST API for your scripts. Check rankings, run a scan or start a campaign without opening the panel.
RankShark Track
- MCP server
https://panel.rankshark.io/mcp/track - REST API
https://panel.rankshark.io/v1/track
Keys start with rstk_
RankShark Enhance
- MCP server
https://panel.rankshark.io/mcp - REST API
https://panel.rankshark.io/api/v1
Keys start with rsen_
What your agents and scripts can do.
What you do in the panel, within your plan’s limits. Each product has its own connection.
RankShark Track
- Campaigns. Create, change and delete them, and find the business on Google Maps first.
- Scans. Run a scan and follow it, or leave it to the schedule.
- Results. The rank at every grid point, competitors, changes since the last scan and AI visibility.
- Businesses and reports. Group campaigns by business, then save reports and email them.
- Usage. Points left this month and what your plan allows.
RankShark Enhance
- Campaigns. Create, edit, copy, archive and delete them, as a step list or a flow.
- Run them. Start, stop or restart one campaign or all of them.
- Watch them. Visits sent, daily totals and notifications.
- Locations. Pick the country, region, city or ZIP code visits come from.
- Reports. Visit totals and CSV reports for any campaign.
Connect an AI app.
Claude, ChatGPT and other apps that support MCP connect with a URL and your RankShark sign-in. No code needed.
Turn it on
In the panel, open Settings, then API & MCP, and switch on Track or Enhance.
Add the URL
In your AI app, add a custom connector or MCP server with the URL below.
Sign in and approve
Sign in to RankShark, pick the workspace and tick what the app may do.
Ask
“Which keywords lost ground for Harbor Dental this month?”
https://panel.rankshark.io/mcp/trackhttps://panel.rankshark.io/mcpAn app that cannot sign in can send your API key instead, as a bearer token. The docs show how to connect Claude, ChatGPT, Cursor and VS Code.
Call the REST API.
Send your key with each request and get JSON back. Pick an example to see the request and what comes back.
- Get your key
- In Settings, then API & MCP, turn on the product and copy its key. Track and Enhance each have their own.
- Send it
- Add it to every request as
Authorization: Bearerfollowed by the key. - Keep it safe
- Use it from your server, never in a web page or a link. Anyone with the key can act in your workspace.
curl https://panel.rankshark.io/v1/track/campaigns \
-H "Authorization: Bearer $RANKSHARK_TRACK_KEY"[
{
"id": "gt_8fK2mQ9xLp3s",
"name": "Harbor Dental · Austin",
"mode": "grid",
"keywords": [
"dentist near me",
"emergency dentist",
"teeth whitening austin"
],
"engines": [
"maps"
],
"grid": {
"size": 7,
"radiusM": 4828,
"shape": "square",
"unit": "mi"
},
"points": 49,
"schedule": {
"freq": "weekly",
"hour": 9,
"dow": 1,
"dom": 1,
"tz": "America/Chicago"
},
"clientId": "tc_5Rw8Jn3Ys2QeLk",
"latest": [
{
"keyword": "dentist near me",
"engine": "maps",
"scanId": "gs_3Hq7Vt2NwR8cYp",
"finishedAt": "2026-11-02T15:06:12.000Z",
"metrics": {
"points": 49,
"total": 49,
"found": 44,
"foundPct": 89.8,
"top3": 27,
"top10": 39,
"arp": 4.18,
"atrp": 5.9,
"solv": 55.1
},
"delta": {
"arp": 0.84,
"atrp": 1.81,
"solv": 12.24,
"foundPct": 8.17
}
}
]
}
]Shortened: each campaign also carries its business, location, running scans and a summary per keyword.
curl https://panel.rankshark.io/v1/track/scans/gs_3Hq7Vt2NwR8cYp \
-H "Authorization: Bearer $RANKSHARK_TRACK_KEY"{
"id": "gs_3Hq7Vt2NwR8cYp",
"campaignId": "gt_8fK2mQ9xLp3s",
"keyword": "dentist near me",
"engine": "maps",
"status": "done",
"finishedAt": "2026-11-02T15:06:12.000Z",
"progress": {
"done": 49,
"failed": 0,
"total": 49
},
"metrics": {
"points": 49,
"total": 49,
"found": 44,
"foundPct": 89.8,
"top3": 27,
"top10": 39,
"arp": 4.18,
"atrp": 5.9,
"solv": 55.1
},
"points": [
{
"i": 0,
"row": 0,
"col": 0,
"st": "ok",
"rank": 3
},
{
"i": 1,
"row": 0,
"col": 1,
"st": "ok",
"rank": 2
},
{
"i": 24,
"row": 3,
"col": 3,
"st": "ok",
"rank": 1
},
{
"i": 48,
"row": 6,
"col": 6,
"st": "ok",
"rank": null
}
],
"competitors": [
{
"name": "Bluebonnet Family Dentistry",
"isTarget": false,
"appearances": 46,
"solv": 61.22,
"atrp": 4.67
},
{
"name": "Harbor Dental",
"isTarget": true,
"appearances": 44,
"solv": 55.1,
"atrp": 5.9
},
{
"name": "Lakeline Smiles",
"isTarget": false,
"appearances": 31,
"solv": 18.37,
"atrp": 11.78
}
]
}Shortened: a scan lists all 49 points and every business seen there. A rank of null means not in the top 20.
curl https://panel.rankshark.io/mcp/track \
-H "Authorization: Bearer $RANKSHARK_TRACK_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "track_run_scan",
"arguments": { "campaignId": "gt_8fK2mQ9xLp3s", "keywords": ["dentist near me"] }
}
}'{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"scans\":[{\"id\":\"gs_4Pz8Qw2Er6TyUi\",\"keyword\":\"dentist near me\",\"engine\":\"maps\",\"tracks\":[\"maps\"]}],\"points\":49,\"topupPoints\":0}"
}
]
}
}Your AI app makes calls like this for you. The answer says which scans started and how many points they use.
curl https://panel.rankshark.io/api/v1/campaigns \
-H "Authorization: Bearer $RANKSHARK_ENHANCE_KEY"{
"total": 2,
"offset": 0,
"limit": 100,
"items": [
{
"Id": "3f6c2a9e-5b1d-4c7a-9e2f-8a4b6c1d2e3f",
"CampaignName": "Harbor Bakery - organic search",
"lastStatus": "Visit completed",
"Running": true,
"Stopped": false,
"TotalVisitorsSent": 412,
"DailyVisitorsSent": 18
},
{
"Id": "7d1e4b2a-9c3f-4e8d-a1b2-c3d4e5f6a7b8",
"CampaignName": "Harbor Bakery - maps",
"lastStatus": "Visit completed",
"Running": false,
"Stopped": true,
"TotalVisitorsSent": 96,
"DailyVisitorsSent": 0
}
]
}Shortened: each campaign also carries its full settings, so you can change one and send it back. Over MCP, the same list is enhance_list_campaigns.
curl -X POST https://panel.rankshark.io/api/v1/campaigns/start \
-H "Authorization: Bearer $RANKSHARK_ENHANCE_KEY" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"3f6c2a9e-5b1d-4c7a-9e2f-8a4b6c1d2e3f",
"7d1e4b2a-9c3f-4e8d-a1b2-c3d4e5f6a7b8"
]
}'{
"op": "start",
"count": 2
}Autopilot then runs the visits inside each campaign’s schedule. stop and restart work the same way.
You stay in control.
Nothing connects until you turn it on, and you can cut any connection off again.
- Off until you turn it on
- Each product’s API stays off until you switch it on. Switch it off and every key and connected app stops at once.
- Owners and managers
- Only the workspace owner and managers can turn access on, see the key or connect an app. Viewers cannot.
- You choose what apps may do
- An AI app asks for what it needs, such as reading results or running scans, and you tick what to allow.
- See and disconnect apps
- The panel lists every connected app. Disconnect one and its access ends right away.
- Replace the key
- Make a new key at any time and the old one stops working.
- One product per key
- A Track key works only on Track and an Enhance key only on Enhance.
Which plans include it.
Every paid plan includes the API and MCP. On Track Starter they are read-only.
- Track Free
- Not included.
- Track Starter
- Read-only: campaigns, scans, reports and usage, without changing anything or running scans.
- Track Pro
- Full access.
- Track Growth
- Full access, with a higher rate limit.
- Track Enterprise
- Full access, with a rate limit set with you.
- Every Enhance plan
- Solo, Agency, Scale and Enterprise: full access to Enhance and to the Track it includes.
The full reference is in the docs.
Every endpoint, MCP tool and field, with the errors and limits you may meet.
API and MCP questions.
Do I need to write code?
No. Add the MCP URL to an AI app such as Claude or ChatGPT, sign in and ask in plain words. The REST API is there when you want your own scripts.
Which AI apps can connect?
Any app that lets you add an MCP server by its URL, such as Claude and ChatGPT. Apps that cannot sign in to RankShark can use your API key instead.
Can an agent spend points or start visits on its own?
Only if you let it. When you connect an app you tick what it may do, so you can leave out running scans or starting campaigns. Scans use your monthly points and campaigns send real visits.
Do Track and Enhance share one connection?
No. Each has its own key and MCP URL, and a key works on its own product only. Every Enhance plan includes Track, so you can connect both.
Where should I keep my API key?
On your own server, in an environment variable or a secrets manager. Never put it in a web page, an app or a link. If it leaks, make a new key in the panel and the old one stops at once. Key safety in the docs.
Is there a rate limit?
Yes, high enough for everyday scripts and agents, and higher on Track Growth and Enterprise. The docs give the numbers. Rate limits in the docs.