# AI SEO & GEO MCP Server: SERP API and keywords (`mrbridge/seo-geo-mcp`) Actor

Connect Claude, ChatGPT and Cursor to live SERP, keyword, backlink and site audit data through one MCP endpoint. No separate SEO data account or API key is required. Compare classic Google rankings with generative engine visibility to see where a brand stands in search and AI answers.

- **URL**: https://apify.com/mrbridge/seo-geo-mcp.md
- **Developed by:** [MrBridge](https://apify.com/mrbridge) (community)
- **Categories:** AI, Agents, SEO tools
- **Stats:** 1 total users, 1 monthly users, 37.5% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.50 / 1,000 tool reads

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🔎 SEO & GEO MCP

Give Claude, ChatGPT, Cursor, VS Code, and other compatible AI clients live SEO research and generative-engine optimization capabilities through one hosted MCP endpoint.

SEO & GEO MCP combines search-result analysis, keyword intelligence, backlink research, technical audits, domain and content analysis, local-business research, e-commerce intelligence, and AI visibility workflows. It runs in Apify Standby mode, so your AI can discover and call the tools directly during a conversation.

You only need an Apify API token. The Actor owner manages the underlying data-service account, and usage is passed through as simple Apify Pay-per-Event billing. You do not need another API login, password, OAuth client ID, or OAuth client secret.

### Quick Start: connect in under a minute

Get your personal token from [Apify Integrations](https://console.apify.com/account/integrations?fpr=mrbridge). Then copy this exact URL and replace the uppercase placeholder with your token:

```text
https://mrbridge--seo-geo-mcp.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN
```

If your token begins with `apify_api_`, replace the complete `YOUR_APIFY_API_TOKEN` text—not just the word `TOKEN`. Keep the URL on one line and keep `https://` at the beginning.

#### Claude

In Claude, open **Settings → Connectors**, choose the option to add a custom connector, and paste the completed URL. If the advanced form displays **OAuth Client ID** and **OAuth Client Secret**, leave both fields empty: authentication is already handled by the Apify token in the URL.

After saving, ask Claude:

> List the SEO & GEO tools available through this connector.

A cold start after inactivity typically takes 5–15 seconds while the Standby server starts, although platform load can occasionally add more time.

#### ChatGPT

If custom MCP connectors are enabled for your ChatGPT plan or workspace, open connector settings, add a remote MCP server, and paste the same completed URL. No separate OAuth application is required.

#### Cursor

Add the server in Cursor's MCP settings, or use this structure in `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "seo-geo": {
      "url": "https://mrbridge--seo-geo-mcp.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN"
    }
  }
}
```

#### VS Code

Add a remote HTTP MCP server through the MCP settings, or use this structure in `.vscode/mcp.json`:

```json
{
  "servers": {
    "seo-geo": {
      "type": "http",
      "url": "https://mrbridge--seo-geo-mcp.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN"
    }
  }
}
```

#### Claude Code and other MCP clients

Choose **Streamable HTTP** or **remote HTTP** as the transport and use the same `/mcp?token=...` URL. If a client supports custom authorization headers, you can instead connect to:

```text
https://mrbridge--seo-geo-mcp.apify.actor/mcp
```

and send:

```text
Authorization: Bearer YOUR_APIFY_API_TOKEN
```

Do not send the token both ways. Never share your completed connection URL, because it contains access to your Apify account.

### What you can ask your AI

The complete catalog is always available; there is no module-selection setup.

| Module | Typical work | Example prompt |
| --- | --- | --- |
| `SERP` | Search-engine result pages and ranking features | “Show the current organic results for this query in France and summarize the competing page types.” |
| `KEYWORD_DATA` | Search demand, trends, CPC, and keyword metrics | “Compare demand and seasonality for these product keywords.” |
| `SEO_LABS` | Keyword ideas, rankings, competitors, and domain opportunities | “Find low-difficulty topics that three competitors rank for but my site does not.” |
| `BACKLINKS` | Links, referring domains, anchors, and authority signals | “Audit this domain's backlink profile and flag risky anchor concentration.” |
| `ON_PAGE` | Technical crawling and page-level diagnostics | “Audit this site and prioritize the technical issues most likely to affect organic visibility.” |
| `LOCAL_BUSINESS` | Listings, reviews, locations, and local-market research | “Compare highly rated independent cafés around Lyon Part-Dieu.” |
| `DOMAIN_ANALYTICS` | Technology and domain intelligence | “Identify this site's technology stack and notable domain signals.” |
| `CONTENT_ANALYSIS` | Mentions, sentiment, topics, and content research | “Find recent brand mentions and group them by topic and sentiment.” |
| `ECOMMERCE` | Products, sellers, pricing, and shopping research | “Compare visible sellers and prices for this product category.” |
| `AI_VISIBILITY` | LLM responses, mentions, citations, and GEO research | “Measure which brands and sources are cited in AI answers for this topic.” |

Be specific about country, language, search engine, date range, and result limit. Focused prompts are faster, easier to verify, and less likely to trigger several tool calls.

### Authentication and privacy

Your MCP client authenticates to Apify with your personal Apify API token. The managed upstream account remains inside the Actor configuration and cannot be replaced through request headers or query parameters.

The Actor forwards each tool request in memory, returns the result over MCP, and does not persist live research results to a dataset. It also masks managed credentials in errors and logs. Save any result you need in your own project or workflow.

For least-privilege operation, create a dedicated Apify token for this connector and revoke it when it is no longer needed. A token embedded in a URL should be treated like a password.

### Input

Connect your AI assistant with the Streamable HTTP endpoint shown above instead of starting a conventional Actor run. The optional `target`, `location`, `language`, and `examplePrompt` fields in the Input form exist only to render published Example pages. They do not configure the Standby MCP server or get forwarded to tool calls; each tool receives its actual parameters through the MCP conversation.

### Pricing

SEO & GEO MCP uses Pay per Event. The primary billable event is **Tool Read**. One Tool Read represents one non-empty scalar data point read from the useful SEO or GEO payload returned to your MCP client. A tool call is the request; a Tool Read is one returned value, so a single tool call can produce zero, one, or many Tool Reads. For example, one keyword, search-volume value, CPC value, ranking position, backlink field, business attribute, product price, or AI-visibility metric counts as one Tool Read. JSON containers, response bookkeeping, `null` or empty values, errors, and MCP protocol traffic do not count.

The Free-plan rate is **$0.005 per Tool Read ($5 per 1,000 data points read)**. See the live [Pricing tab](https://apify.com/mrbridge/seo-geo-mcp/pricing?fpr=mrbridge) for the full table and automatic Apify-plan discounts.

A successful tool response with no data points is not charged. Initialization, tool discovery, malformed requests, authentication failures, upstream errors, timeouts, rate limits, and usage-limit rejections are also not charged. One AI prompt can cause several tool calls and return many Tool Reads, so use focused prompts, result limits, and an Apify spending limit when you need a hard cost ceiling.

### Results and error handling

Tool output is returned directly to the connected LLM. The Actor's Output tab links to the connection guide, MCP endpoint, OpenAPI document, and health check. Public Task pages can display schema-based response examples, but the Actor does not store your live MCP results.

Upstream failures are converted into readable MCP tool errors instead of crashing the server. A successful result that reaches the Apify charge limit is still returned; subsequent tool calls receive a usage-limit message until the spending limit is increased.

### Troubleshooting

- **Unable to connect:** verify that the URL begins with `https://`, ends at `/mcp` before the query string, and contains a current Apify token in place of the full uppercase placeholder.
- **Opening `/mcp` stays open or shows no page:** this is expected. The endpoint keeps a lightweight compatibility event stream open for MCP clients; JSON-RPC requests still use `POST` automatically.
- **Claude asks for OAuth details:** leave OAuth Client ID and OAuth Client Secret empty. The token in the URL is the authentication method.
- **The first request is slow:** allow 5–15 seconds for a cold Standby container to start, then retry once.
- **Usage limit reached:** increase the Apify run spending limit before making another call.

The URL `https://mcp.apify.com?tools=mrbridge/seo-geo-mcp` is not the direct endpoint for this product's internal tool catalog. That gateway can expose an Actor as an Actor-running tool, but it does not proxy this dedicated Standby `/mcp` server. Use the `mrbridge--seo-geo-mcp.apify.actor/mcp` URL documented above.

For support, use the Actor's [Issues tab](https://apify.com/mrbridge/seo-geo-mcp/issues?fpr=mrbridge).

### Frequently asked questions

#### Do I need a separate SEO data account?

No. The Actor owner manages the underlying service account. You connect with your Apify API token and pay for Tool Reads through Apify.

#### What counts as a Tool Read?

Each non-empty scalar data point inside the useful returned research payload counts as one Tool Read. A keyword, URL, search volume, CPC, ranking position, referring-domain value, review field, product price, or AI citation is one Tool Read. Structural JSON objects and arrays, response metadata, `null` values, and empty strings do not count.

#### Are failed calls charged?

No. Tool Read events are recorded only for useful values inside a confirmed successful result. MCP initialization, discovery, malformed requests, empty results, upstream failures, and rejected calls do not create a Tool Read charge.

#### Do I need to select or configure tools?

No. The complete catalog is exposed automatically. Your AI client discovers the available tools and chooses the appropriate one for each request.

#### Where are my results stored?

They are returned directly to your MCP client and are not saved to an Actor dataset. Save important results in your own workflow.

### Responsible use

Use the tools only for lawful research and follow the terms that apply to Apify and the underlying data sources. Data coverage, freshness, regional availability, and individual endpoint limits can vary. Avoid placing personal, confidential, or regulated information in prompts unless your workflow is authorized to process it.

Built and maintained by [MrBridge](https://mr-bridge.com).

# Actor input Schema

## `target` (type: `string`):

Add the domain, URL, or keyword represented by the published example, such as apify.com or best crm software. This field only renders Example pages; MCP tool calls pass their own target.

## `location` (type: `string`):

Set the country or city represented by the published example, such as United States. Rankings differ by location; MCP tool calls pass their own location.

## `language` (type: `string`):

Set the two-letter language code represented by the published example, such as en or fr. MCP tool calls pass their own language.

## `examplePrompt` (type: `string`):

Add the question a user would ask an AI assistant to trigger this use case. It appears on the Example page and is not sent to the MCP server.

## Actor input object example

```json
{
  "target": "apify.com",
  "location": "United States",
  "language": "en",
  "examplePrompt": "Find keyword opportunities for apify.com in the United States."
}
```

# Actor output Schema

## `connectionGuide` (type: `string`):

Open the live setup guide for connecting an MCP client.

## `mcpEndpoint` (type: `string`):

Streamable HTTP endpoint used by MCP clients.

## `openApiSchema` (type: `string`):

Machine-readable OpenAPI 3.1 schema for the public web endpoints.

## `healthCheck` (type: `string`):

Check whether the Standby server is running.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/seo-geo-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/seo-geo-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call mrbridge/seo-geo-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrbridge/seo-geo-mcp"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uncBWJUgB5Vqsc0zk/builds/lBprwbv55YooR4Fzv/openapi.json
