> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crakseo.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For SEO data and indexing, start with /seo-mcp/overview.md and /seo-mcp/connect.md, then read the focused server reference.
> The documentation search MCP at https://docs.crakseo.com/mcp searches documentation only. Product tools use https://crakseo.com/mcp/<server>.
> Check tool availability and API credit balance before paid calls. Request owner approval for paid indexing. Never invent prices, indexing guarantees or directory approval.

# Google Rank Tracker MCP: Ranked Keywords and Competitor Domains

> Google rank tracker MCP: live rank checks, ranked keywords, competitor domains and keyword gaps.

Live Google positions of a domain for up to 10 keywords, every keyword a domain ranks for, the domains it competes with in organic search, and the keywords a competitor ranks for that you don't.

| | |
| - | - |
| Endpoint | `https://crakseo.com/mcp/rank-tracker` |
| Intended registry name | `com.crakseo/rank-tracker` |
| Transport | Streamable HTTP |
| Sign-in | OAuth, or an API key as a bearer token |
| Scopes | `seo-data:read` |
| Billing | Pay as you go (API credits) |

## When to use

Use when checking positions, finding a competitor's best keywords or building a keyword gap list.

## Connect

```bash Claude Code theme={null}
claude mcp add --transport http crakseo-rank-tracker https://crakseo.com/mcp/rank-tracker
```

Use `crakseo-rank-tracker` as the server name and `https://crakseo.com/mcp/rank-tracker` as the URL. Run `/mcp` in Claude Code to authenticate. For OAuth, scoped API keys and a free test, follow [Connect and test](https://docs.crakseo.com/seo-mcp/connect.md).

Other clients: [ChatGPT](https://docs.crakseo.com/quickstarts/chatgpt.md), [Cursor](https://docs.crakseo.com/quickstarts/cursor.md), [Codex](https://docs.crakseo.com/quickstarts/codex.md), [VS Code](https://docs.crakseo.com/quickstarts/vscode.md), [Cline](https://docs.crakseo.com/quickstarts/cline.md), [Gemini CLI](https://docs.crakseo.com/quickstarts/gemini-cli.md), [Grok](https://docs.crakseo.com/quickstarts/grok.md) and [Muse](https://docs.crakseo.com/quickstarts/muse.md).

A remote connection does not require a marketplace listing. Registry names are distribution identifiers, not a claim of directory approval.

## Verify without spending

```text theme={null}
Use CrakSEO get_api_credit_balance to report my balance and dataCallsEnabled. Do not buy credits or make a paid call.
```

## Tools

| Tool | What it does | Price per call |
| - | - | - |
| `check_google_rankings` | Check Google rankings for a domain | TBD (placeholder) |
| `get_ranked_keywords` | Ranked keywords for a domain | TBD (placeholder) |
| `find_competitor_keywords` | Find competitor keywords (keyword gap) | TBD (placeholder) |
| `find_competitor_domains` | Find competitor domains | TBD (placeholder) |
| `get_api_credit_balance` | API credit balance | Free |

> [!NOTE]
>
> Tool names, titles and parameters on this page match the server's `tools/list` response, which stays authoritative. Example values are placeholders, not real measurements. Prices marked TBD are set at launch on [API credits](https://docs.crakseo.com/pricing/api-credits.md).

### `check_google_rankings`

**Check Google rankings for a domain.** Check Google rankings: the live Google position and ranking URL of a domain for up to 10 keywords in one country, with the top competing domains. Costs API credits per keyword.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `domain` | `string` | Yes | Domain or URL, for example example.com. Protocol and www are ignored. |
| `keywords` | `string[]` | Yes | Up to 10 keywords to check, one live Google search each. |
| `country` | `string` | No | Two-letter country code of the search market, for example US, GB, DE or IN. Default `US`. |
| `language` | `string` | No | Language code of the search market, for example en, de or pt-BR. Default `en`. |
| `location` | `string` | No | Optional exact DataForSEO location name for city-level results, for example "Austin,Texas,United States". Overrides country. |
| `device` | `"desktop" \| "mobile"` | No | Device to emulate. Default `desktop`. |
| `depth` | `integer` | No | How deep to look for the domain, 10 to 100 results. Default `30`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "check_google_rankings",
    "arguments": {
      "domain": "example.com",
      "keywords": [
        "best running shoes"
      ],
      "country": "US"
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "domain": "example.com",
    "rankings": [
      {
        "keyword": "best running shoes",
        "position": 7,
        "url": "https://example.com/running-shoes/",
        "topDomains": [
          "competitor.example"
        ]
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_ranked_keywords`

**Ranked keywords for a domain.** Ranked keywords: every Google keyword a domain or URL ranks for in one country, with position, ranking URL, search volume, difficulty and estimated traffic, highest traffic first. Costs API credits per call.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `target` | `string` | Yes | Domain (example.com) or full page URL ([https://example.com/page](https://example.com/page)) to analyze. |
| `country` | `string` | No | Two-letter country code of the search market, for example US, GB, DE or IN. Default `US`. |
| `language` | `string` | No | Language code of the search market, for example en, de or pt-BR. Default `en`. |
| `limit` | `integer` | No | How many keywords to return, 10 to 1000. Default `100`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranked_keywords",
    "arguments": {
      "target": "example.com",
      "country": "US",
      "limit": 10
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "target": "example.com",
    "totalCount": 0,
    "keywords": [
      {
        "keyword": "example keyword",
        "position": 3,
        "url": "https://example.com/page",
        "searchVolume": 0,
        "keywordDifficulty": 0,
        "estimatedTraffic": 0
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `find_competitor_keywords`

**Find competitor keywords (keyword gap).** Competitor keywords: keywords a competitor domain ranks for in Google that your domain does not, with search volume, difficulty and the competitor's position. Costs API credits per call.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `competitor` | `string` | Yes | Competitor domain, for example competitor.com. |
| `yourDomain` | `string` | Yes | Your domain, for example example.com. |
| `country` | `string` | No | Two-letter country code of the search market, for example US, GB, DE or IN. Default `US`. |
| `language` | `string` | No | Language code of the search market, for example en, de or pt-BR. Default `en`. |
| `limit` | `integer` | No | How many keywords to return, 10 to 1000. Default `100`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "find_competitor_keywords",
    "arguments": {
      "competitor": "competitor.example",
      "yourDomain": "example.com",
      "limit": 10
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "competitor": "competitor.example",
    "yourDomain": "example.com",
    "keywords": [
      {
        "keyword": "example keyword",
        "searchVolume": 0,
        "keywordDifficulty": 0,
        "competitorPosition": 4,
        "competitorUrl": "https://competitor.example/page"
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `find_competitor_domains`

**Find competitor domains.** Competitor domains: the domains competing with a domain in Google organic search, with shared keywords, average position and estimated traffic. Costs API credits per call.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `domain` | `string` | Yes | Domain or URL, for example example.com. Protocol and www are ignored. |
| `country` | `string` | No | Two-letter country code of the search market, for example US, GB, DE or IN. Default `US`. |
| `language` | `string` | No | Language code of the search market, for example en, de or pt-BR. Default `en`. |
| `limit` | `integer` | No | How many competitors to return, 5 to 100. Default `20`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "find_competitor_domains",
    "arguments": {
      "domain": "example.com",
      "country": "US",
      "limit": 5
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "domain": "example.com",
    "competitors": [
      {
        "domain": "competitor.example",
        "sharedKeywords": 0,
        "avgPosition": 0,
        "organicKeywords": 0,
        "estimatedTraffic": 0
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_api_credit_balance`

**API credit balance.** API credit balance: prepaid credits left for SEO data calls, amount spent, whether spending is suspended, and the per-call pricing rule. Free; no supplier call.

* Price per call: Free
* Annotations: read-only, idempotent
* Limits: Free; reads the wallet only.

| Parameter | Type | Required | Description |
| - | - | - | - |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_api_credit_balance",
    "arguments": {}
  }
}
```

```json structuredContent theme={null}
{
  "availableMicros": 0,
  "availableUsd": 0,
  "spentMicros": 0,
  "frozen": false,
  "dataCallsEnabled": true,
  "pricing": {
    "creditMarkup": 0,
    "minimumPerCallUsd": 0
  }
}
```

## Errors

| Code | Meaning | What to do |
| - | - | - |
| `insufficient_credits` | The API credits wallet can't cover the call's maximum price. | Add credits at [https://crakseo.com/app/indexing/credits](https://crakseo.com/app/indexing/credits), then retry the same call. The failed call isn't charged. |
| `forbidden` | The connection doesn't have the scope this tool needs, for example `seo-data:read` or `console:write`. | Reconnect and grant the scope named in the message, or use an API key that has it. |
| `not_connected` | Google Search Console or Bing Webmaster Tools isn't connected, or no connected property covers the URL. | Open the connect link in the message and sign in with the account that owns the property. |
| `invalid_input` | A parameter is missing or out of range. | Read the message, which names the field, fix the argument and retry. |
| `confirmation_required` | A paid indexing submission doesn't have the account owner's approval for this exact quote. | `submit_indexing_urls` returns `status: "needs_confirmation"` with a `confirmationUrl`. Send the owner there to approve, then retry with the same `quoteId` and `idempotencyKey`. The agent can't approve spend. |
| `wallet_frozen` | API credit spending is suspended on this account after a refund or dispute. | Contact [support@crakseo.com](mailto:support@crakseo.com). |
| `budget_exceeded` | The account's daily API credit spending limit, or the service's daily data budget, is used up. | Retry tomorrow. |
| `disabled` | SEO data calls aren't switched on for this deployment yet. | Use the free Search Console and URL indexing tools meanwhile. `get_api_credit_balance` reports `dataCallsEnabled`. |
| `supplier_unavailable` | The data supplier couldn't be reached or is rate limiting. | Retry later. Failed data calls are free. |
| `supplier_unknown` | The data supplier didn't answer in time or sent an unreadable response. | Retry later. Failed data calls are free. |
| `supplier_error` | The data supplier refused the request or returned no data. | Check the arguments (for example the location name) and retry. Failed data calls are free. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.