# ZenRows MCP

> ZenRows gives your AI client industrial-grade web scraping capabilities. It lets you bypass anti-bot systems, scrape raw HTML from any site, and pull structured data even from complex JavaScript applications. Use it to collect clean datasets across the entire web.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** headless-browser, proxy-rotation, anti-bot-bypass, data-extraction, html-parsing, web-automation

## Description

Connect ZenRows through Vinkius to give your AI agent access to the live internet. You don't have to manually manage proxies or fight CAPTCHAs anymore. This MCP lets you scrape websites exactly how a human would, handling everything from raw HTML dumps to complex data structures. Need content from a dynamic Single Page Application (SPA)? Use the headless browser functionality to render JavaScript before grabbing the text. Want clean academic datasets? ZenRows can automatically convert messy webpage layouts into clean Markdown, ready for model training. You simply instruct your agent what you need—whether it's localized product pricing across different countries or structured e-commerce data—and the MCP handles the heavy lifting of proxy rotation and anti-bot evasion in the background.

## Tools

### scrape_markdown
Scrapes content and cleans it, converting messy HTML into clean Markdown format by stripping ads and navigation.

### scrape_wait
Pauses the scraping process until a specific element appears on the page, ensuring all required data has loaded.

### scrape_premium
Runs scrapes using high-anonymity residential proxies for better trust and source accuracy.

### scrape_html
Grabs the raw HTML of a page, automatically using anti-bot proxies to prevent blocks.

### scrape_autoparse
Extracts structured data directly from a page, turning visual layouts into usable JSON objects.

### get_screenshot
Generates a URL that immediately returns a screenshot image of the target webpage for verification.

### scrape_geo
Runs a scrape using a proxy limited to a specific country, which is vital for localized content.

### scrape_custom
Executes advanced scraping jobs that require highly specific parameters and selectors.

### scrape_js
Uses a headless browser to run JavaScript and scrape content from modern, dynamic websites.

### scrape_antibot
Performs scraping with maximum anti-bot bypass settings for highly protected corporate or financial sites.

## Prompt Examples

**Prompt:** 
```
Scrape 'https://example.com' and return the content in Markdown.
```

**Response:** 
```
I've retrieved the page content and converted it to clean Markdown. Here is the structured text, with all ads and navigation boilerplate removed for your review.
```

**Prompt:** 
```
Bypass Cloudflare and scrape the rendered HTML of 'https://protected-site.com'.
```

**Response:** 
```
Cloudflare protection successfully bypassed. I've used a headless browser to render the JavaScript and captured the full HTML state for you. What data points would you like me to analyze from this source?
```

**Prompt:** 
```
Get a screenshot of 'https://news-portal.com/breaking-news'.
```

**Response:** 
```
Screenshot generated successfully. You can view the fully rendered page here: https://zenrows.com/screenshot/.... Would you like me to extract the text content from this page as well?
```

## Capabilities

### Extracting raw website content
Retrieve the complete HTML code from any target page, regardless of how many layers of protection it has.

### Handling dynamic JavaScript sites
Use a headless browser to execute site scripts and capture the final rendered view of complex web applications.

### Extracting structured data from tables and lists
Automatically parse common website elements, turning messy text into usable JSON records without needing custom selectors.

### Bypassing advanced anti-bot security
Execute scrapes against sites protected by major services like Cloudflare or DataDome using specialized bypass technology.

### Targeting content by geography
Run scraping jobs using residential proxies assigned to specific countries for accurate, localized data collection.

## Use Cases

### Monitoring competitor pricing changes
A market analyst needs to know if a rival changed its price in Germany. They instruct their agent to run a scrape_geo job, specifying 'de' for the proxy location and asking it to pull product listings, ensuring accurate regional data.

### Collecting academic research text
A researcher needs thousands of clean articles on AI ethics. They use scrape_markdown to collect content from a niche blog, automatically stripping away ads and sidebars so only the core article text remains for their dataset.

### Debugging site rendering issues
A developer suspects a page isn't loading correctly. They use get_screenshot to capture a live visual preview of the target URL, instantly verifying if the front-end is broken before writing any code.

### Building robust data pipelines
A data engineer needs to scrape multiple pages that require specific elements to load. They use scrape_wait to pause the job until a confirmation message appears on the page, guaranteeing the necessary content is available before extraction.

## Benefits

- Skip the boilerplate code. You don't write complex proxy rotation loops; you just ask your agent to run a scrape_geo job for localized data, and it handles the rest.
- Get clean text datasets instantly. Use scrape_markdown to convert full articles into structured Markdown, perfect for feeding directly into model training without manual cleanup.
- Bypass tough security walls. Need data from Cloudflare-protected sites? The scrape_antibot tool gives your agent the necessary bypass power when other methods fail.
- Handle modern websites easily. If a site loads content with JavaScript (like an app), use scrape_js to force rendering and capture that dynamic content, instead of getting blank HTML.
- Stop guessing what data you'll get. Instead of manually selecting CSS selectors, run scrape_autoparse, and the MCP extracts structured JSON from common layouts automatically.

## How It Works

The bottom line is: your AI agent becomes a web data collector that doesn't fail when sites try to stop it.

1. First, subscribe to ZenRows and enter your API key into the Vinkius catalog.
2. Next, prompt your AI agent with a natural language request—for example, 'Scrape this page using US proxies' or 'Extract all product names from this site'.
3. Finally, the MCP executes the scrape, handles all anti-bot measures internally, and sends back clean, usable data in the format you requested.

## Frequently Asked Questions

**Can ZenRows handle JavaScript-heavy websites?**
Yes, absolutely. Use the scrape_js tool to activate the headless browser. This runs all the site's scripts and captures the full rendered state, so you get content from dynamic Single Page Applications.

**How does ZenRows bypass Cloudflare?**
The MCP handles this using specialized anti-bot technology. If a site blocks requests, calling scrape_antibot activates the necessary bypass measures to successfully retrieve the page content.

**Is scraping geo-targeted data simple with ZenRows?**
It's straightforward. Just use the scrape_geo tool and specify the country code (like 'gb'). The MCP automatically routes your request through a residential proxy located in that specific region.

**What is the difference between scrape_html and scrape_markdown?**
scrape_html gives you the full, raw code dump. If you want clean text suitable for reading or AI ingestion, use scrape_markdown instead; it removes all the ads and navigation clutter.

**Does ZenRows handle rate limiting?**
While it doesn't prevent every block, the underlying proxy rotation and anti-bot tools significantly reduce your chances of being flagged. You can also use scrape_wait to slow down requests between pages.

**Can ZenRows bypass Cloudflare or other aggressive bot protections?**
Yes. Using the `scrape_antibot` tool, ZenRows activates specialized technology to bypass Cloudflare, DataDome, and other advanced bot detection systems, ensuring you can access the content you need through chat.

**How do I get clean Markdown from a website for my AI agent?**
You can use the `scrape_markdown` tool. ZenRows will retrieve the page and automatically convert the content into structured Markdown, removing ads and navigation headers to provide a clean input for LLMs.

**Can I see what a dynamic page looks like before extracting data?**
Absolutely. Use the `get_screenshot` tool to retrieve a direct link to an image file representing the fully rendered target page, helping you verify that JavaScript content is correctly displayed.