> ## 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 SERP API MCP (Google, Bing, AI Overviews, Maps)

> Google SERP API MCP: live Google, Bing, AI Overview and Google Maps results as JSON. Pay per call.

Live search engine results pages as structured JSON: Google organic results with SERP features and AI Overview sources, Bing results, Google Maps local results, and live Google rank checks for a domain across up to 10 keywords.

| | |
| - | - |
| Endpoint | `https://crakseo.com/mcp/serp-api` |
| Intended registry name | `com.crakseo/serp-api` |
| 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 an agent needs what a searcher sees for a keyword in a given country, language and device.

## Connect

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

Use `crakseo-serp-api` as the server name and `https://crakseo.com/mcp/serp-api` 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_google_serp` | Google SERP results | TBD (placeholder) |
| `get_bing_serp` | Bing SERP results | TBD (placeholder) |
| `get_ai_overview_sources` | Google AI Overview sources | TBD (placeholder) |
| `check_google_maps_rankings` | Google Maps rankings | 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_google_serp`

**Google SERP results.** Google SERP API: live Google search results for any keyword, country and device, with organic positions, titles, URLs, SERP features and AI Overview sources. 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` | 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 many results to fetch, 10 to 100. Each extra page of 10 costs more. Default `10`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_google_serp",
    "arguments": {
      "keyword": "seo mcp server",
      "country": "US",
      "depth": 10
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "keyword": "seo mcp server",
    "totalResults": 0,
    "features": [
      "organic",
      "people_also_ask"
    ],
    "organic": [
      {
        "position": 1,
        "title": "Example result title",
        "url": "https://example.com/page",
        "domain": "example.com",
        "description": "Snippet text as shown on the results page."
      }
    ],
    "aiOverview": {
      "present": false,
      "text": null,
      "references": []
    }
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_bing_serp`

**Bing SERP results.** Bing SERP API: live Bing search results for any keyword and country, with organic positions, titles and URLs. Bing results also power DuckDuckGo and other engines. 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` | 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 many results to fetch, 10 to 100. Default `10`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_bing_serp",
    "arguments": {
      "keyword": "keyword research api",
      "country": "US"
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "keyword": "keyword research api",
    "features": [
      "organic"
    ],
    "organic": [
      {
        "position": 1,
        "title": "Example result title",
        "url": "https://example.com/page",
        "domain": "example.com",
        "description": "Snippet text."
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_ai_overview_sources`

**Google AI Overview sources.** AI Overview sources: whether Google shows an AI Overview for a keyword, its text, every page it cites, and whether a given domain is cited. 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` | 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`. |
| `domain` | `string` | No | Optional domain to check for a citation, for example example.com. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ai_overview_sources",
    "arguments": {
      "keyword": "how to submit a sitemap to google",
      "country": "US",
      "domain": "example.com"
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "keyword": "how to submit a sitemap to google",
    "present": true,
    "text": "AI Overview text, truncated.",
    "references": [
      {
        "title": "Example source title",
        "url": "https://example.com/guide",
        "domain": "example.com"
      }
    ],
    "domainCited": true
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

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