zenrows
Skill0 starsChanged 8 months agoMITView on GitHub
Fetch web page content via ZenRows Universal Scraper API — a proxy/scraping service that handles anti-bot bypasses, JS rendering, CAPTCHA solving, and proxy rotation. Use when: (1) web_fetch fails or returns blocked/empty content, (2) a target site has anti-bot protection (Cloudflare, DataDome, etc.), (3) you need JS-rendered content from SPAs, (4) you need to extract structured data via CSS selectors or autoparse, (5) you need content as markdown/plaintext/PDF/screenshot. Requires a ZENROWS_API_KEY environment variable.
- Reads credentials
- Sends data out
1 other project uses a version of this.
Adopted by
Most recently taken up by
- ZenRows/clitheir own version, first seen Oct 16, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- ZenRows/cli★ 16same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Use the bundled helper script for common fetches:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ZenRows
Fetch web content through the ZenRows Universal Scraper API. ZenRows handles proxy rotation, headless browsers, anti-bot bypasses, and CAPTCHAs automatically.
Quick Start
Use the bundled helper script for common fetches:
# Basic fetch (returns HTML)
scripts/zenrows.sh "https://example.com"
# Markdown output (ideal for LLM consumption)
scripts/zenrows.sh "https://example.com" --markdown
# Plaintext output
scripts/zenrows.sh "https://example.com" --text
# Auto mode (let ZenRows pick optimal config)
scripts/zenrows.sh "https://example.com" --autoDirect API Usage (curl)
The API endpoint is https://api.zenrows.com/v1/. All parameters go as query strings.
# Minimal request
curl -s "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://example.com"
# With JS rendering (5 credits)
curl -s "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://example.com&js_render=true"
# Auto mode — ZenRows picks optimal anti-bot config (variable credits)
curl -s "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://example.com&mode=auto"
# Markdown output
curl -s "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://example.com&response_type=markdown"
# Plaintext output
curl -s "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://example.com&response_type=plaintext"API Parameters Reference
Core Parameters
| Parameter | Type | Default | Description |
apikey | string | required | API key |
url | string | required | Target URL (must be URL-encoded) |
mode | string | — | auto = Adaptive Stealth Mode (auto-selects js_render, premium_proxy, etc.) |
Output Control
| Parameter | Type | Default | Description |
response_type | string | html | markdown, plaintext, or pdf |
json_response | bool | false | Wrap response in JSON with headers/status |
original_status | bool | false | Return the target site's HTTP status code |
return_screenshot | bool | false | Return a base64-encoded screenshot (requires js_render) |
Anti-Bot & Rendering
| Parameter | Type | Default | Description |
js_render | bool | false | Render JS with headless browser (5 credits) |
premium_proxy | bool | false | Use residential proxies (10 credits) |
proxy_country | string | — | 2-letter country code (requires premium_proxy) |
resolve_captcha | bool | false | Auto-solve CAPTCHAs (requires js_render + premium_proxy) |
JS Rendering Options (require js_render=true)
| Parameter | Type | Description |
wait | int | Wait fixed ms before returning |
wait_for | string | Wait for CSS selector to appear in DOM |
block_resources | string | Block resource types: stylesheet, image, media, font, script (comma-separated) |
window_width | int | Browser viewport width (default 1920) |
window_height | int | Browser viewport height (default 1080) |
device | string | desktop or mobile (sets user-agent accordingly) |
Data Extraction
| Parameter | Type | Description |
autoparse | bool | Auto-extract structured data (product pages, articles, etc.) |
css_extractor | string | JSON object mapping field names to CSS selectors. Use @attr suffix for attributes (e.g. {"links":"a @href","titles":"h2"}) |
Session & Headers
| Parameter | Type | Description |
session_id | int | Reuse the same IP across requests (0–99999999, requires premium_proxy) |
custom_headers | bool | When true, pass custom headers via request headers |
JS Instructions (require js_render=true)
Pass as js_instructions parameter (URL-encoded JSON array):
[
{"action": "click", "selector": "#load-more"},
{"action": "wait", "timeout": 2000},
{"action": "fill", "selector": "#search", "value": "query"},
{"action": "evaluate", "code": "document.title"},
{"action": "scroll_y", "value": 500},
{"action": "wait_for_selector", "selector": ".results"}
]Available actions: click, fill, check, uncheck, select_option, wait, wait_for_selector, scroll_x, scroll_y, evaluate, solve_captcha.
POST Requests
Send POST data by making a POST request to the API with body content:
curl -X POST "https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY&url=https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"key": "value"}'Credit Costs
| Configuration | Credits per Request |
| Basic (no extras) | 1 |
js_render=true | 5 |
premium_proxy=true | 5 |
js_render + premium_proxy | 10 |
resolve_captcha=true | 25 (added) |
mode=auto | Variable (billed for what succeeds) |
Decision Guide
Need web content?
├── Try web_fetch first (free, no credits)
├── web_fetch blocked/empty?
│ ├── Static site with basic protection
│ │ └── zenrows basic (1 credit)
│ ├── JS-heavy SPA or moderate anti-bot
│ │ └── zenrows --js (5 credits)
│ ├── Strong anti-bot (Cloudflare, DataDome)
│ │ └── zenrows --auto (variable credits, auto-optimized)
│ └── Need structured data extraction
│ └── zenrows --autoparse or --css-extract (+ applicable rendering credits)
└── Need markdown/text for LLM context?
└── zenrows --markdown or --textCommon Patterns
Fetch page as markdown for LLM context
scripts/zenrows.sh "https://docs.example.com/api" --markdownScrape with anti-bot bypass
scripts/zenrows.sh "https://protected-site.com" --autoExtract specific data with CSS selectors
scripts/zenrows.sh "https://news.site.com/article" \
--css '{"title":"h1","body":".article-body","author":".byline"}'JS-rendered page with wait
scripts/zenrows.sh "https://spa-app.com/dashboard" --js --wait-for ".data-loaded"Get page from specific country
scripts/zenrows.sh "https://geo-restricted.com" --premium --country usDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

