# MCP Deep Web Search (`vojtech.kaiser/actor-deep-web-search-mcp`)

MCP Deep Search Server is a cloud-based tool for advanced research, combining real-time results from Google, Brave, Anthropic, OpenAI, Perplexity, and xAI. Now hosted in the cloud, it offers faster performance with no local installation needed.

- **URL**: https://beta-securitybyobscurity.apify.com/vojtech.kaiser/actor-deep-web-search-mcp.md
- **Developed by:** [Vojtech Kaiser](https://beta-securitybyobscurity.apify.com/vojtech.kaiser) (community)
- **Categories:** MCP servers
- **Stats:** 9 total users, 4 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

# README

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Apify MCP Deep Search

MCP Deep Search by Apify is a wrapper around MCP Deep Web Search provided by @just-every [GitHub](https://github.com/just-every/mcp-deep-search). It allows users to conduct complex research utilizing real time search across multiple search engines and models such as Google, Brave, Anthropic, OpenAI, Perplexity, and xAI. The MCP Deep Search Server now runs in a cloud environment and not locally on your computer.

[Click to see how](#how-to-use-it)

You can limit the search to a single search engine or utilize multiple.

## 🔧 Tools

- deep\_search \
  Perform deep web searches to find current information, research topics, or answer questions using real-time data from multiple search providers. Use this when you need up-to-date information beyond your knowledge cutoff.
  - query - Your prompt / question
  - provider - select none or one from these providers: anthropic, brave, brave-images, openai, google, xai, sonar. If you don't select any, the tool shall select one to yield the best results. It is recommended though to specify it.

- comprehensive\_research \
  Perform in-depth research on complex topics using AI agents that automatically search multiple sources, analyze findings, and compile comprehensive reports. Ideal for thorough investigations, market research, technical analysis, or any topic requiring deep understanding from multiple perspectives.
  - query - Your prompt / task / question
  - modelClass
    - default - reasoning\_mini
    - options - 'standard' | 'mini' | 'reasoning' | 'reasoning\_mini' | 'monologue' | 'metacognition' | 'code' | 'writing' | 'summary' | 'vision' | 'vision\_mini' | 'long' | 'image\_generation' | 'embedding' | 'voice' | 'transcription';

## ⚠️ Caveat

Tool comprehensive\_research runs LLM models and engines matching the provided API keys. If any of the API keys doesn't have enough credits, the task will fail and all the API calls will irreversibly burn your credits.

### Organization verification for OpenAI

The streaming ability is conditioned by verification of the organization which API key is being used. If the organization is not verified, the comprehensive research will never finish successfully as long as you provide your OPENAI\_API\_KEY on the actor start.

This happens for modelClasses: 'reasoning\_mini' and maybe some others. Try to set standard.

## How to use it

[Provide API keys](#environment-variables) and [start the standby actor](#how-to-start-actor-in-standby-mode).

Search in the logs for the URL on which the server is exposed.

Copy this URL and build the final URL for your client:

HTTP STREAMABLE:

```
{
    "mcpServers": {
        "apify-deep-search": {
            "type": "mcp",
            "url": "<URL>/mcp",
        }
    }
}
```

SSE (legacy):

```
{
    "mcpServers": {
        "apify-deep-search": {
            "type": "sse",
            "url": "<URL>/sse",
        }
    }
}
```

## How to start Actor in Standby mode

1. Provide input in the actor UI
2. Create a task by clicking the "Create Task" in the top-right corner
3. This should open the Task tab. If not, Tab > Standby Tasks > Your Task
4. Tab Standby
5. Click the "Test endpoint" button

If the request failed, check that the input contains all the required fields.

## Environment Variables

- \[Required]       Google search API Key - [makersuite.google.com](https://makersuite.google.com/)
- \[Optional]       Brave search API Key - [brave.com/search/api](https://brave.com/search/api/)
- \[Optional]       Anthropic search API Key - [console.anthropic.com](https://console.anthropic.com/)
- \[Optional]       OpenAI search API Key - [platform.openai.com](https://platform.openai.com/)
- \[Optional]       Perplexity searches (sonar, sonar-pro, sonar-deep-research) API Key - [openrouter.ai](https://openrouter.ai/)
- \[Optional]       X.AI search API Key - [x.ai](https://x.ai/)

## Chat with MCP using Inspector client

1. Install Inspector on your PC and start it

```bash
npx @modelcontextprotocol/inspector
```

2. Click the link with token which opens the Inspector in the browser. If Proxy Session Token is missing (Configuration > Proxy Session Token), copy it from the terminal manually.
3. Set inspector to Streamable HTTP
4. Provide URL
   `Example: <URL>/mcp`
5. Set request timeout to 300000ms - Configuration > Request Timeout
6. Connect
7. Start chatting

Note: The standby server gets shut down after about 10 minutes of inactivity. If that happens, send a message to wake the server up and reconnect the Inspector client.

## Billing

This actor doesn't charge for any calls. User only pays for the running server.

## Credits

All credits go to the creators of the MCP Deep Search server.

[GitHub](https://github.com/just-every/mcp-deep-search) \
[NPM](https://www.npmjs.com/package/@just-every/mcp-deep-search)

# Actor input Schema

## `GOOGLE_API_KEY` (type: `string`):

API Key for browser search and Gemini LLM Model. Create one at https://makersuite.google.com/

## `BRAVE_API_KEY` (type: `string`):

API Key for Brave Search. Create one at https://brave.com/search/api/

## `ANTHROPIC_API_KEY` (type: `string`):

API Key for Anthropic. Create one at https://console.anthropic.com/

## `OPENAI_API_KEY` (type: `string`):

API Key for OpenAI. Create one at https://platform.openai.com/

## `OPENROUTER_API_KEY` (type: `string`):

Api Key for Perplexity search - sonar or sonar-pro. Create one at https://openrouter.ai/

## `XAI_API_KEY` (type: `string`):

Api Key for xAI. Create one at https://x.ai/

## Actor input object example

```json
{}
```

# 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("vojtech.kaiser/actor-deep-web-search-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("vojtech.kaiser/actor-deep-web-search-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 vojtech.kaiser/actor-deep-web-search-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=vojtech.kaiser/actor-deep-web-search-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MCP Deep Web Search",
        "description": "MCP Deep Search Server is a cloud-based tool for advanced research, combining real-time results from Google, Brave, Anthropic, OpenAI, Perplexity, and xAI. Now hosted in the cloud, it offers faster performance with no local installation needed.",
        "version": "0.0",
        "x-build-id": "86BURvSCB1VHNdnFo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/vojtech.kaiser~actor-deep-web-search-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-vojtech.kaiser-actor-deep-web-search-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/vojtech.kaiser~actor-deep-web-search-mcp/runs": {
            "post": {
                "operationId": "runs-sync-vojtech.kaiser-actor-deep-web-search-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/vojtech.kaiser~actor-deep-web-search-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-vojtech.kaiser-actor-deep-web-search-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "GOOGLE_API_KEY"
                ],
                "properties": {
                    "GOOGLE_API_KEY": {
                        "title": "Google API Key",
                        "type": "string",
                        "description": "API Key for browser search and Gemini LLM Model. Create one at https://makersuite.google.com/"
                    },
                    "BRAVE_API_KEY": {
                        "title": "Brave Search API Key",
                        "type": "string",
                        "description": "API Key for Brave Search. Create one at https://brave.com/search/api/"
                    },
                    "ANTHROPIC_API_KEY": {
                        "title": "Anthropic API Key",
                        "type": "string",
                        "description": "API Key for Anthropic. Create one at https://console.anthropic.com/"
                    },
                    "OPENAI_API_KEY": {
                        "title": "OpenAI API Key",
                        "type": "string",
                        "description": "API Key for OpenAI. Create one at https://platform.openai.com/"
                    },
                    "OPENROUTER_API_KEY": {
                        "title": "Perplexity API Key",
                        "type": "string",
                        "description": "Api Key for Perplexity search - sonar or sonar-pro. Create one at https://openrouter.ai/"
                    },
                    "XAI_API_KEY": {
                        "title": "xAI API Key",
                        "type": "string",
                        "description": "Api Key for xAI. Create one at https://x.ai/"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
