The ZenRows MCP (Model Context Protocol) server is the standard way AI systems use ZenRows. A single connection gives your AI assistant, agent, or application real-time access to any website.Documentation Index
Fetch the complete documentation index at: https://docs.zenrows.com/llms.txt
Use this file to discover all available pages before exploring further.
View on GitHub
ZenRows MCP is open source. Star the repository, file issues, or contribute.
Why ZenRows MCP
- Reach sites that normally block bots: Get access to any website at scale without getting blocked by anti-bot systems.
- Managed scraping infrastructure: Proxy rotation, headless browser orchestration, anti-bot evasion, and session management run on ZenRows infrastructure.
- Plug into any AI you already use: Works with any MCP client, including AI assistants, agent frameworks, AI SDKs, IDE plugins, and custom applications.
- Plain English, no scraping code: Describe the task naturally and the AI picks the right tool. No selectors, no proxy management, no anti-bot tuning.
What you can do
Once connected, your AI assistant can:- Scrape any webpage by describing the task in plain English
- Extract structured data from e-commerce sites, news pages, job boards, and more
- Render pages as Markdown, plain text, HTML, or PDF
- Take above-the-fold or full-page screenshots
- Access geo-restricted, JavaScript-heavy, or bot-protected pages
- Automate multi-step browser workflows: navigate, click, fill forms, scroll, drag, and extract across pages
- Run JavaScript in a live browser context
- Manage cookies, local storage, multiple tabs, and persistent sessions
Before you start
ZenRows Account
A ZenRows account
ZenRows API Key
Your ZenRows API key
Connection options
The ZenRows MCP server supports two transport options. Pick the one that fits your client.| Option | Transport | Authentication |
|---|---|---|
| Remote MCP server | Streamable HTTP | OAuth Bearer token |
| Local MCP server | STDIO (local subprocess) | Environment variable |
Remote MCP server
The hosted ZenRows MCP server is the recommended path for any AI application that calls an LLM API directly. The server runs on ZenRows’ infrastructure, so there is nothing to install, configure, or update.- Server URL:
https://mcp.zenrows.com/mcp - Transport:
Streamable HTTP - Authentication:
OAuth-based. Pass your ZenRows API key as a Bearer token. See Authentication for details.
Python
| Field | Value |
|---|---|
| Endpoint | https://mcp.zenrows.com/mcp |
| Transport | Streamable HTTP |
| Auth header | Authorization: Bearer YOUR_ZENROWS_API_KEY |
authorization shorthand field that automatically wraps the value as a Bearer token, or a free-form headers field where you set the Authorization header yourself. Either approach works with ZenRows MCP.
Local MCP server
If your AI client runs the MCP server as a local subprocess instead of calling a remote URL, use the@zenrows/mcp npm package. This is the standard configuration for desktop AI clients.
The exact location of the configuration file varies by client, but every supported client uses a similar MCP server config shape. Replace YOUR_ZENROWS_API_KEY with your actual key:
JSON
Per-client setup guides
For step-by-step instructions including the exact config file path and restart steps for each client:| Client | Type |
|---|---|
| Claude Desktop | AI assistant |
| Claude Code | AI coding assistant |
| Cursor | AI code editor |
| Windsurf | AI code editor |
| VS Code | AI code editor |
| Zed | AI code editor |
| JetBrains IDEs | AI code editor |
Authentication
The ZenRows MCP server uses OAuth-based Bearer token authentication. Your ZenRows API key acts as the access token.- Remote MCP server
- Local STDIO MCP server
Send the key in the HTTP OpenAI’s MCP tool, Anthropic’s MCP tool, and most other MCP clients expose this through a single
Authorization header on every request:authorization field on the tool config and forward it as the Bearer token automatically. Some clients use a free-form headers field instead. Both approaches are valid.Tools
A tool in MCP terms is a named capability the server exposes. For example,scrape or browser_navigate.
When you ask your AI to fetch a webpage or fill a form, the AI sees the available tools, picks the one that fits the task, and invokes it. You don’t call tools yourself in code. You set up the MCP connection once, and the AI handles tool selection and invocation from there.
The ZenRows MCP exposes two families of tools.
The scrape tool
The scrape tool fetches a webpage in a single request and returns its content in the format you specify: clean Markdown (default), plain text, raw HTML, a screenshot, a PDF, or structured JSON. It uses the Universal Scraper API under the hood.
Best for quick data extraction where the AI doesn’t need to interact with the page.
Browser tools
Thebrowser_* tools give your AI assistant control of a cloud-hosted browser session powered by the ZenRows Scraping Browser. The browser comes with built-in residential proxies and anti-bot bypass.
Browser tools cover tasks that involve:
- Navigation across multiple pages in a single session
- Form fills, button clicks, and other element interactions
- Waiting for dynamically loaded content
- JavaScript execution in the browser context
- Cookies, local storage, and multi-tab management
browser_navigate, which opens a session and returns a session_id. All subsequent browser calls use this session_id. Call browser_close when done.
Available browser tools
Session
Session
| Tool | Description |
|---|---|
browser_navigate | Open a browser session and navigate to a URL. Returns a session_id for subsequent calls. |
browser_close | Close a browser session and free all associated resources. |
Navigation
Navigation
Interaction
Interaction
| Tool | Description |
|---|---|
browser_click | Click an element using a CSS selector. |
browser_hover | Hover over an element to trigger hover effects. |
browser_type | Type text into an input field. Appends to existing content unless clear_first is set. |
browser_fill | Clear an input field and set its value. |
browser_select_option | Select an option from a <select> dropdown. |
browser_check | Check a checkbox or radio button. |
browser_uncheck | Uncheck a checkbox. |
browser_focus | Move focus to an element. |
browser_press_key | Press a keyboard key (e.g. Enter, Tab, Escape, Control+a). |
browser_scroll | Scroll the page in a given direction. |
browser_drag | Drag an element to a target element. |
Extraction
Extraction
| Tool | Description |
|---|---|
browser_get_accessibility_tree | Get the page’s accessibility tree as readable text. Call this after browser_navigate to understand page structure. |
browser_get_url | Get the current URL. |
browser_get_title | Get the page title. |
browser_get_text | Get the visible text of an element or the entire page. |
browser_get_attribute | Get the value of a specific attribute on an element. |
browser_get_html | Get the HTML source of an element or the full page. |
browser_query_selector_all | Find all elements matching a CSS selector. Returns text, HTML, and attributes. |
Visual
Visual
| Tool | Description |
|---|---|
browser_screenshot | Take a screenshot of the page or a specific element. |
browser_generate_pdf | Render the current page as a PDF. |
Wait
Wait
| Tool | Description |
|---|---|
browser_wait_for_selector | Wait until an element is stable in the DOM. Set visible=true to require visibility. |
browser_wait_for_navigation | Wait for a page navigation. Call this before the action that triggers navigation. |
browser_wait | Wait for a fixed duration in milliseconds. |
JavaScript
JavaScript
| Tool | Description |
|---|---|
browser_evaluate | Execute JavaScript in the browser context and return the result. |
Cookies
Cookies
Storage
Storage
| Tool | Description |
|---|---|
browser_local_storage | Read, write, or clear localStorage. |
Tabs
Tabs
| Tool | Description |
|---|---|
browser_new_tab | Open a new tab. Returns a tab_id. |
browser_switch_tab | Switch focus to a different tab. |
Batch
Batch
| Tool | Description |
|---|---|
browser_batch | Execute a sequence of browser actions in a single call for better performance. |
Pricing
The ZenRows MCP server itself is free. There is no separate fee for connecting, listing tools, or using the integration. Each tool call is billed against your ZenRows subscription using the standard pricing of the underlying product:- Calls to the
scrapetool follow Universal Scraper API pricing. - Calls to
browser_*tools follow Scraping Browser pricing.
Troubleshooting
Connection issues
| Issue | Cause | Solution |
|---|---|---|
424 Failed Dependency or 401 Unauthorized | Missing or invalid Bearer token | Confirm Authorization: Bearer YOUR_ZENROWS_API_KEY is set on every request. For OpenAI/Anthropic SDKs, use the authorization field on the MCP tool config. Verify your key is active in your dashboard |
| Tool list is empty when connecting to the remote URL | Authentication failed silently or wrong endpoint | Confirm the URL is exactly https://mcp.zenrows.com/mcp and the Bearer token is present and valid |
The scrape tool is unavailable in your AI assistant (local STDIO) | Configuration not loaded yet | Restart your AI tool after saving the configuration file. For Claude Desktop, fully quit and reopen the application |
| API key is not recognized (local STDIO) | Key not replaced in configuration | Confirm YOUR_ZENROWS_API_KEY has been replaced with your actual key from the ZenRows dashboard. The value must have no extra spaces or surrounding quotation marks |
Scraped content issues
If your AI is connecting and invoking tools correctly but the scraped content comes back missing, blocked, or incomplete, the issue is with the target page rather than the MCP connection. Common causes include JavaScript-loaded content, anti-bot protection, geo-restrictions, and dynamic loading. See the Universal Scraper API troubleshooting guide for fixes you can ask your AI to apply. For example, “scrape with JavaScript rendering enabled” or “use Premium Proxies.”Example prompts
Once ZenRows MCP is connected, describe the task to your AI assistant in plain English and it handles the scraping automatically.- Scrape tool
- Browser tools
Related resources
Universal Scraper API Reference
Full parameter reference for the
scrape tool’s underlying API.Scraping Browser Introduction
Learn more about the browser powering the
browser_* tools.ZenRows Dashboard
Monitor usage, manage your API key, and track quota.
NPM Package
@zenrows/mcp on npm for local STDIO deployments.Contributing
The ZenRows MCP server is open source. If you want to modify the server, fix a bug, or suggest an improvement, clone the GitHub repository and run it locally:Bash