> ## 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.

# Local SEO MCP: Google Maps Rankings and Reviews

> Local SEO MCP: Google Maps rankings, Google Business Profile ratings and review counts.

Google Maps positions for a keyword in a city with rating, review count, category and address, and a business's Google Business Profile with rating distribution and claimed status.

| | |
| - | - |
| Endpoint | `https://crakseo.com/mcp/local-seo` |
| Intended registry name | `com.crakseo/local-seo` |
| 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 for local businesses and agencies tracking map pack visibility city by city.

## Connect

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

Use `crakseo-local-seo` as the server name and `https://crakseo.com/mcp/local-seo` 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_maps_rankings` | Google Maps rankings | TBD (placeholder) |
| `get_google_business_profile` | Google Business Profile and reviews summary | 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_maps_rankings`

**Google Maps rankings.** Google Maps rankings: the local results for a keyword in a city, with rank, rating, review count, category and address, and the position of a given business. 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 |
| - | - | - | - |
| `keyword` | `string` | Yes | Search query exactly as a user would type it. |
| `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` | Yes | Exact DataForSEO location name of the city, for example "Austin,Texas,United States". |
| `business` | `string` | No | Optional business name or domain to find in the results. |
| `depth` | `integer` | No | How many map results to fetch, 10 to 100. Default `20`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "check_google_maps_rankings",
    "arguments": {
      "keyword": "plumber",
      "location": "Austin,Texas,United States",
      "business": "Example Plumbing"
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "keyword": "plumber",
    "location": "Austin,Texas,United States",
    "businessPosition": 4,
    "results": [
      {
        "position": 1,
        "title": "Competitor listing",
        "domain": "competitor.example",
        "rating": 4.8,
        "reviews": 0,
        "category": "Plumber",
        "address": "Example address"
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_google_business_profile`

**Google Business Profile and reviews summary.** Google Business Profile lookup: a business's Google profile with rating, review count, rating distribution, category, address, phone, website and whether it is claimed. 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 |
| - | - | - | - |
| `business` | `string` | Yes | Business name as it appears on Google, optionally with the city, for example "Joe's Pizza Brooklyn". |
| `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. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_google_business_profile",
    "arguments": {
      "business": "Example Plumbing Austin"
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "found": true,
    "business": {
      "title": "Example Plumbing",
      "category": "Plumber",
      "address": "Example address",
      "phone": null,
      "website": "https://example.com/",
      "rating": 4.7,
      "reviews": 0,
      "ratingDistribution": {
        "1": 0,
        "2": 0,
        "3": 0,
        "4": 0,
        "5": 0
      },
      "claimed": true
    }
  },
  "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.