What is OpenClaw?
OpenClaw is an open-source, self-hosted AI agent gateway that connects your messaging apps to a persistent AI agent. It runs a single Gateway process on your own machine or server, which acts as the bridge between any messaging app (Telegram, WhatsApp, Slack, Discord, iMessage, Microsoft Teams, Signal, and more) and an always-available AI assistant with access to tools, including file read/write, shell execution, web search, external APIs, and persistent memory across sessions.Key benefits of using ZenRows as OpenClaw’s search backend
- No more broken schedules: When OpenClaw’s built-in tools hit a blocked page mid-run, your entire automation fails silently. ZenRows handles those requests transparently, so your daily competitor monitoring, price-tracking digests, and scheduled reports run every time without manual intervention.
- Read pages the way a browser does: Many competitor sites and dashboards load content dynamically via JavaScript. ZenRows renders the full page before returning it, so your agent sees the complete content rather than an empty HTML shell. You can also instruct the agent to click, scroll, fill forms, and navigate across pages, all in plain English, no code required.
- Full scraping infrastructure, zero code: Proxy rotation, anti-bot evasion, browser orchestration, and session management all run on ZenRows’ infrastructure. Just describe the task to your agent in Telegram, WhatsApp, or Slack, and ZenRows handles the rest in the background.
- Automate multi-step browser workflows: For sites that require interaction before data surfaces, such as clicking through pagination, filling in search fields, or navigating across multiple pages, instruct your agent in plain English. ZenRows handles the browser session while OpenClaw delivers the result to your messaging app.
- LLM-friendly output that keeps token usage in check: Raw HTML is full of boilerplate (navigation menus, scripts, ads, and markup) that adds tokens without adding value. ZenRows strips all of that and returns clean, structured content by default. Your agent gets straight to the useful data, and since LLM APIs charge per token processed, less noise means lower costs per automation run.
What can you do with this integration?
- Track competitor pricing and get notified of changes: Ask your agent to check a competitor’s pricing page every morning and send you a Telegram message when something changes, so you always know without visiting the site yourself.
- Build a daily industry briefing delivered to your phone: Point your agent at a list of news sites, blogs, or forums and have it pull the top stories each morning and summarize them into a single message in your WhatsApp or Slack.
- Get the best deals delivered to your phone every day: Ask your agent to scan Amazon, eBay, and other e-commerce sites for deals matching your criteria and send you a curated list each morning before you start your day.
- Monitor job boards for sales prospects: Set up your agent to check LinkedIn, Indeed, or niche job boards daily for companies hiring for roles that signal buying intent, such as Head of Sales or VP of Marketing, and deliver the leads directly to your chat.
- Dedicate separate agents to different tasks from a single Gateway: Set up one OpenClaw agent dedicated to competitor monitoring via Telegram and another handling deal alerts via WhatsApp, both running from a single Gateway. Each agent has its own context, memory, and instructions, so they stay focused without mixing tasks or sessions.
ZenRows as OpenClaw’s search backend
OpenClaw natively supports MCP (Model Context Protocol) server connections. You can register any MCP-compatible server directly in youropenclaw.json config file, and your agent gains access to its tools immediately. This guide walks through adding the ZenRows MCP server in that config file, so your agent can scrape any website and deliver results to your messaging app of choice.
Prerequisites
Before you begin, make sure you have:- Your ZenRows API key from the ZenRows dashboard.
- A messaging app to connect to OpenClaw (Telegram is the fastest to set up).
- An Anthropic API key or that of any LLM provider you choose.
Install OpenClaw
Configure OpenClaw's AI agent and messaging channel
- Open the app on your PC or phone and start a chat with
@BotFather. - Run
/newbot. Follow the prompt to obtain a bot token, then copy it.
- Model/auth provider: Select
Anthropicor any other AI model provider. - Anthropic auth method: Pick the API key option and enter your API key.
- Default model: Choose your preferred model (e.g.,
anthropic/claude-sonnet-4-6). - Select channel: Choose Telegram, then enter the bot token you copied from
@BotFather. Check OpenClaw’s Telegram setup for more information.
@BotFather response to initiate a chat with your new bot.Add ZenRows MCP to OpenClaw's configuration
~/.openclaw/openclaw.json. Open this file and add the following ZenRows MCP connection configuration to the mcp block:mcporter configuration and ensure it is set to true:- zenrows, confirming you’ve successfully integrated OpenClaw with the ZenRows MCP.Getting started: Basic usage
Open the bot you created in Telegram and send a scrape message to your AI agent:Advanced usage: Scheduling scraping jobs with OpenClaw and ZenRows
OpenClaw natively supports cron-style scheduling, so you can instruct your agent to run any scraping task on a recurring schedule directly from your chat. Open your Telegram bot and send:Local vs. remote OpenClaw
By default, OpenClaw runs the Gateway on your local machine, which means the agent is only active while that machine is on and connected. This works fine for manual tasks but means scheduled jobs like your daily ZenRows scraping tasks will stop running if your machine sleeps or goes offline. For always-on scraping schedules, OpenClaw supports running the Gateway on a persistent remote host such as a VPS or home server, with your devices connecting to it over Tailscale or an SSH tunnel. This keeps the agent running continuously so ZenRows tasks execute at the scheduled time regardless of whether your local machine is active. For remote setup instructions, see the OpenClaw remote access guide.Troubleshooting
WSL issues on Windows
If you installed OpenClaw inside WSL but are running Node.js from Windows (or vice versa),npx may not be found because the two environments have separate PATH configurations. Run which npx inside WSL to confirm it resolves correctly. If it doesn’t, install Node.js directly inside WSL via nvm rather than relying on a Windows installation.
McpError: MCP error -32001: Request timed out
This happens when OpenClaw cannot complete the MCP handshake withmcp.zenrows.com within the default timeout window. Common causes:
- Invalid or missing API key: Confirm your key is active in the ZenRows dashboard and that
YOUR_ZENROWS_API_KEYhas been replaced with the actual value in your config. - Slow network conditions: If the connection succeeds sometimes and fails at other times, the handshake is timing out intermittently. Increase the
timeoutvalue in your MCP server config to give it more time. Intermittent timeouts on a remote MCP server are often due to transient network issues rather than a config problem. - Check ZenRows MCP connection status: Run
openclaw doctorto check the ZenRows MCP connection status for any errors or warnings. - Check
mcporterconfiguration: Ensure thatmcporteris set toenabled: truein youropenclaw.json. - Gateway restart timing: If the Gateway hasn’t fully started before attempting the MCP connection, the handshake times out. Wait a few seconds after
openclaw gateway startbefore testing.
SSE error: undefined
OpenClaw is attempting to connect using SSE transport instead of Streamable HTTP. Make sure both"type": "url" and "transport": "streamable-http" are set together in your config. Using only one of them can cause OpenClaw to fall back to an incompatible transport.
web_fetch failed: Web fetch failed (403)
The agent is using OpenClaw’s built-in web fetcher instead of ZenRows, and the target page is blocking the request. This usually means the ZenRows MCP server has not connected successfully. Runopenclaw mcp list to confirm the ZenRows MCP server is listed as active. If the connection is working but the 403 error persists, explicitly instruct the agent:
No response is returned in Telegram
- Check that your bot token is correct and the bot was created via
@BotFather. - Make sure
dmPolicyis set to"pairing"or"open"in your Telegram channel config inopenclaw.json, as a restrictive policy can silently drop messages from unpaired users. - Confirm you are messaging the correct Telegram bot. You can verify the bot token value inside the
channelsconfiguration of youropenclaw.jsonfile.
FAQ (Frequently asked questions)
Should I run OpenClaw locally or remotely?
Should I run OpenClaw locally or remotely?
How can I access OpenClaw remotely?
How can I access OpenClaw remotely?
Does OpenClaw have built-in search services?
Does OpenClaw have built-in search services?
Is OpenClaw an AI agent?
Is OpenClaw an AI agent?
Which AI models can I use with OpenClaw?
Which AI models can I use with OpenClaw?
provider/model format in your config. You can set a different model for each agent, enabling you to use a faster model for everyday tasks and a more capable one for complex research workflows.Can I use the local stdio version of ZenRows MCP via npx?
Can I use the local stdio version of ZenRows MCP via npx?
npx to be accessible from the environment OpenClaw’s Gateway runs in. If you installed OpenClaw as a background daemon, it may not inherit your shell’s PATH, which can cause a spawn npx ENOENT error. To fix this, either provide the full path to npx in your config or use the hosted remote MCP server with Streamable HTTP instead (as done in this guide), which avoids the local subprocess entirely.Can I use other OpenClaw tools and skills alongside ZenRows?
Can I use other OpenClaw tools and skills alongside ZenRows?
Which messaging channels does OpenClaw support?
Which messaging channels does OpenClaw support?
openclaw.json, and you can run multiple channels simultaneously, routing different conversations to different agents if needed.