CrakSEO Google SERP API MCP
Live Google and Bing results, AI Overview sources, Google Maps results and live rank checks for AI assistants. Hosted Streamable HTTP with OAuth or a scoped API key; SEO data calls use API credits.
Hosted MCP Server
npx add-mcp 'https://crakseo.com/mcp/serp-api'Installs into Claude Code, Codex, Cursor and more
Documentation
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/. 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 |
| 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
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.
Other clients: ChatGPT, Cursor, Codex, VS Code, Cline, Gemini CLI, Grok and Muse.
Connect using the URL above; no registry ID or marketplace listing is required.
Verify without spending
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/listresponse, which stays authoritative. Example values are placeholders, not real measurements. Prices marked TBD are set at launch on API credits.
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. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_google_rankings",
"arguments": {
"domain": "example.com",
"keywords": [
"best running shoes"
],
"country": "US"
}
}
}
{
"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. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_google_serp",
"arguments": {
"keyword": "seo mcp server",
"country": "US",
"depth": 10
}
}
}
{
"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. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_bing_serp",
"arguments": {
"keyword": "keyword research api",
"country": "US"
}
}
}
{
"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. |
{
"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"
}
}
}
{
"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. |
{
"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"
}
}
}
{
"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 |
|---|
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_api_credit_balance",
"arguments": {}
}
}
{
"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, 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. |
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. |
Technical registry details
Intended MCP Registry ID:
com.crakseo/serp-api.The namespace
com.crakseois the reverse-domain form ofcrakseo.com, used to identify the publisher. It is not a website address, product name or connection URL. You do not need it to connect.This identifier is recorded in our publishing drafts, not a claim of registry acceptance or directory approval.
This documentation is built and hosted on Mintlify, a developer documentation platform.