agentleFS
Penguin-LifePenguin-Life/zenrows-skill/zenrows/SKILL.md

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

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    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
  1. Distinctive:

    Use the bundled helper script for common fetches:

    line 13

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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" --auto

Direct 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

ParameterTypeDefaultDescription
apikeystringrequiredAPI key
urlstringrequiredTarget URL (must be URL-encoded)
modestring—auto = Adaptive Stealth Mode (auto-selects js_render, premium_proxy, etc.)

Output Control

ParameterTypeDefaultDescription
response_typestringhtmlmarkdown, plaintext, or pdf
json_responseboolfalseWrap response in JSON with headers/status
original_statusboolfalseReturn the target site's HTTP status code
return_screenshotboolfalseReturn a base64-encoded screenshot (requires js_render)

Anti-Bot & Rendering

ParameterTypeDefaultDescription
js_renderboolfalseRender JS with headless browser (5 credits)
premium_proxyboolfalseUse residential proxies (10 credits)
proxy_countrystring—2-letter country code (requires premium_proxy)
resolve_captchaboolfalseAuto-solve CAPTCHAs (requires js_render + premium_proxy)

JS Rendering Options (require js_render=true)

ParameterTypeDescription
waitintWait fixed ms before returning
wait_forstringWait for CSS selector to appear in DOM
block_resourcesstringBlock resource types: stylesheet, image, media, font, script (comma-separated)
window_widthintBrowser viewport width (default 1920)
window_heightintBrowser viewport height (default 1080)
devicestringdesktop or mobile (sets user-agent accordingly)

Data Extraction

ParameterTypeDescription
autoparseboolAuto-extract structured data (product pages, articles, etc.)
css_extractorstringJSON object mapping field names to CSS selectors. Use @attr suffix for attributes (e.g. {"links":"a @href","titles":"h2"})

Session & Headers

ParameterTypeDescription
session_idintReuse the same IP across requests (0–99999999, requires premium_proxy)
custom_headersboolWhen 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

ConfigurationCredits per Request
Basic (no extras)1
js_render=true5
premium_proxy=true5
js_render + premium_proxy10
resolve_captcha=true25 (added)
mode=autoVariable (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 --text

Common Patterns

Fetch page as markdown for LLM context

scripts/zenrows.sh "https://docs.example.com/api" --markdown

Scrape with anti-bot bypass

scripts/zenrows.sh "https://protected-site.com" --auto

Extract 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 us

Download now (ZIP)

Does 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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.