What Is the ZenRows MCP?
The ZenRows MCP (Model Context Protocol) server connects ZenRows’ web scraping 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 on your behalf. It connects to the ZenRows Universal Scraper API, which handles JavaScript rendering, residential proxies, and anti-bot bypass automatically.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
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 tells your AI assistant to use the scrape tool whenever a web scraping task is needed.
Once configured, ask your assistant to scrape a page and it handles the request automatically:
The scrape Tool
Once installed, the ZenRows MCP exposes one tool to your AI assistant: scrape.
The scrape tool fetches a webpage and returns its content in the format you specify: clean Markdown (default), plain text, raw HTML, a screenshot, or structured JSON.
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 |
| 403 error or bot detection page | Target site blocks datacenter IPs | Enable premium_proxy: true |
| 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 |
| Content only appears after a click or form input | Page requires user interaction before loading data | Use js_instructions to define browser actions (clicks, inputs) before scraping. Requires js_render: true |
| 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 |
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 |