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.
What is the ZenRows MCP?
The ZenRows MCP (Model Context Protocol) server connects ZenRows’ web scraping and browser automation capabilities directly to MCP-compatible AI tools like Claude, Cursor, or VS Code Copilot. Once configured, your AI assistant can fetch real-time content from any webpage and control a full browser session on your behalf. It connects to two ZenRows products:- Universal Scraper API — for fast, single-request scraping with JavaScript rendering, residential proxies, and anti-bot bypass.
- Scraping Browser — for multi-step browser automation through a cloud-hosted browser with built-in anti-bot protection and residential proxies.
What you can do
- Scrape any webpage by describing the task in plain English
- Extract structured data from e-commerce sites, news pages, or search results
- Take screenshots of any page for visual inspection
- Access geo-restricted or bot-protected pages using premium proxies
- Automate multi-step browser workflows: navigate, click, fill forms, scroll, and extract data across pages
- Run JavaScript in a live browser context
- Manage cookies, local storage, and multiple tabs
Before you start
You need:ZenRows Account
A ZenRows account
ZenRows API Key
Your ZenRows API key
Supported integrations
| Tool | 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 |
How it works
All integrations use the same MCP server package (@zenrows/mcp) and the same configuration pattern. Each tool has a configuration file where you register MCP servers. Adding ZenRows gives your AI assistant access to the scrape tool for single-request scraping and a full set of browser_* tools for multi-step browser automation.
Once configured, ask your assistant to scrape a page or automate a browser workflow and it handles the request automatically:
Tools
The ZenRows MCP exposes two types of tools to your AI assistant.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, or structured JSON. It uses the Universal Scraper API under the hood.
Best for quick data extraction where you don’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 protection.
Use browser tools when you need to:
- Navigate across multiple pages in a single session
- Fill out forms, click buttons, or interact with page elements
- Wait for dynamically loaded content
- Execute JavaScript in the browser context
- Manage cookies, local storage, or multiple tabs
browser_navigate, which opens a session and returns a session_id. All subsequent browser calls use this session_id. Always 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. |
Scrape vs. browser tools
scrape | browser_* tools | |
|---|---|---|
| Best for | Single-page data extraction | Multi-step workflows and interactions |
| Backed by | Universal Scraper API | Scraping Browser |
| Session | Stateless, one request per call | Persistent session across multiple calls |
| Interaction | Limited (via js_instructions) | Full browser control (click, type, scroll, etc.) |
| Output | Markdown, plain text, HTML, JSON, screenshot, PDF | Text, HTML, screenshots, PDF, JSON, accessibility tree |
Troubleshooting
Common issues and solutions
| Issue | Cause | Solution |
|---|---|---|
| Page content is missing or blank | Page uses JavaScript to load content dynamically | Enable js_render: true in the scrape tool, or use browser_navigate for full browser rendering |
| 403 error or bot detection page | Target site blocks datacenter IPs | Enable premium_proxy: true in the scrape tool. Browser tools use residential proxies automatically |
| Content is geo-restricted | Site serves different content by region | Enable premium_proxy: true and set proxy_country to the target country code (e.g. US) |
| Content loads after a delay | Page renders elements asynchronously | Use wait_for with a CSS selector, or wait with a millisecond value. Both require js_render: true. With browser tools, use browser_wait_for_selector |
| Content only appears after a click or form input | Page requires user interaction before loading data | Use js_instructions with the scrape tool, or use browser tools (browser_click, browser_fill, etc.) for full control |
| Response contains full page instead of specific fields | No extraction parameters set | Use css_extractor with a JSON selector map, autoparse for structured pages, or outputs for specific data types |
| Screenshot appears blank | Page loads content dynamically | Enable js_render: true alongside the screenshot parameter, or use browser_screenshot after waiting for content |
The scrape tool is unavailable in your AI assistant | 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 | 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 |
| Browser session timed out | Session exceeded its TTL | Start a new session with browser_navigate. Keep sessions short and close them when done |
Example prompts
Once you configure the ZenRows MCP, describe the task to your AI assistant and it handles the scraping automatically.Scrape tool examples
Browser tool examples
Related resources
- ZenRows Universal Scraper API Reference
- ZenRows Scraping Browser Introduction
- ZenRows Dashboard
- GitHub Repository
- NPM Package