zenrows
Skill16 starsChanged 27 days agoMITView on GitHub
Master playbook for choosing the right Zenrows primitive for any web-data task, with cost and escalation rules.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Penguin-Life/zenrows-skilltheir own version, first seen Mar 7, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Penguin-Life/zenrows-skill★ 0same 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.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- batch-jobsSkill
- compliance-policySkill
- cost-controlSkill
- crawlSkill
- extractSkill
- interact-browserSkill
- protected-fetchSkill
- trace-debugSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 1 is distinctive, and 7 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.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Before it creates the account, Zenrows may ask you one short question (error code SIGNUP_CHALLENGE, with the question in the message and in …
- Very specific: line 27
After too many questions or wrong answers from one network (SIGNUP_CHALLENGE_LOCKED), wait an hour or use zenrows login --api-key <key>.
- Very specific: line 30
When the Free plan nears its limit (or the user asks), tell the human they can claim the account to keep their usage and history: run …
- Distinctive: line 35
Never attempt to handle payment or upgrades — only surface the claim link.
- Very specific: line 67
Prefer the cheapest reliable primitive.
- Very specific: line 70
Escalate only with evidence: If a fetch fails, read the trace (zenrows trace explain <run-id>) before adding --js-render / --premium-proxy.
- Very specific: line 80
Run zenrows status for the live capability matrix.
- Very specific: line 108
Keep responses small with --css or --output markdown.
≈ “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: how to think about protected web data
Zenrows is the protected web data infrastructure layer: strong anti-bot + high scale + extraction + browser escalation. This toolkit makes that infrastructure native to AI agents.
Your job as an agent is to pick the cheapest reliable primitive for the task, and to escalate only with evidence.
Getting access (zero-config)
You do not need an API key up front. On your first cloud call (e.g. zenrows fetch <url>),
the toolkit automatically creates a free, unclaimed Zenrows Free plan account and stores the
key locally — no human step required. To opt out, pass --no-signup or set
auto_signup: false in .zenrows/policy.json, then use zenrows login --api-key <key>.
Before it creates the account, Zenrows may ask you one short question (error code
SIGNUP_CHALLENGE, with the question in the message and in error.challenge.question).
Answer it yourself, do not ask the human, then run zenrows signup --answer "<your answer>"
and re-run your original command. A wrong answer returns a new question the same way.
After too many questions or wrong answers from one network (SIGNUP_CHALLENGE_LOCKED), wait an hour or use
zenrows login --api-key <key>.
When the Free plan nears its limit (or the user asks), tell the human they can claim the
account to keep their usage and history: run zenrows account claim (or open the claim URL
shown on quota errors). It prints a valid link, requesting a fresh one when the stored link is
near its 30-day expiry. Claiming confirms an email (Google, GitHub or a 6-digit code); the same
key keeps working.
Never attempt to handle payment or upgrades — only surface the claim link.
The decision tree (follow this exactly)
If the user has a known URL and wants page content:
→ Use Protected Fetch. (zenrows fetch <url>)
If the user has a known URL and wants structured data:
→ Use Extract. (zenrows extract <url> | --css)
If the user has a start page (listing, index, section) but not the item URLs:
→ Use Crawl. (zenrows crawl create <url> --depth 1 --follow,
then `zenrows crawl results <id>`)
If the user has many URLs (bulk):
→ Use Batch. (validate one page with fetch/extract first,
then `zenrows batch create <jobs.jsonl>`)
Batch is the reliable path at scale, at
Fetch's prices. Do NOT
fan out fetch/extract per URL for bulk work.
If the user needs login, clicks, forms, sessions, or persistent state:
→ Use Interact / Browser Sessions.(zenrows browser) [escalation-only]
If the user wants to integrate with an agent/coding environment:
→ Use the Zenrows CLI: install / plugin / mcp / skills / templates /
workflows / recipes / evals.Preference rules
- Prefer the cheapest reliable primitive. Start with Adaptive Stealth Mode
(
mode=auto) — Zenrows escalates to JS rendering / premium proxies only when needed, and you are billed only for the configuration that succeeds. - Escalate only with evidence. If a fetch fails, read the trace
(
zenrows trace explain <run-id>) before adding--js-render/--premium-proxy. - Do not use the browser unless required. Browser is an escalation layer,
not the default — prefer fetch/extract (they cost less). It is on by default;
opt out with
policy.allow_browser=false. Sessions bill by bandwidth + time. - Do not scale before validating the workflow on a small sample.
What is available today
Run zenrows status for the live capability matrix. As of this toolkit:
| Primitive | Command | Status |
| Protected Fetch | zenrows fetch | available: GET https://api.zenrows.com/v1/ |
Extract (extract=auto, CSS, Markdown; Autoparse deprecated) | zenrows extract | available: GET https://api.zenrows.com/v1/?extract=auto |
| Batch | zenrows batch | available: POST https://async.api.zenrows.com/v1/jobs |
| Crawl (new) | zenrows crawl | available: POST https://api.zenrows.com/v1/crawls |
| Browser | zenrows browser | available: POST https://mcp.zenrows.com/browser/sessions |
| MCP | zenrows mcp | available: https://mcp.zenrows.com/mcp |
- Extract:
extract=autoworks on any prepared domain. On one not prepared yet (EXTRACT_DOMAIN_NOT_PREPARED), runzenrows extract prepare <domain> --url <page> --wait(repeat--url, 1 to 5: one works; we recommend 3 or more of the same page type), then extract again.EXTRACT_PAGE_NOT_RECOGNISEDmeans the domain is prepared but not this page: do not prepare again; see [[extract]]. - Batch: the reliable path at scale, at Fetch's prices (create, list, status, wait, results, content, pause, resume, rerun, delete). Estimate specs locally with no key.
- Crawl: collects the URLs behind one start page, optionally with each page's HTML.
- Browser: escalation-only, for pages Fetch can't handle; same backend as the MCP
browser_*tools.
Protected Fetch and Extract are the same API (GET /v1/) used two ways.
The command consults the capability matrix before any cloud call — it never
fakes success.
Cost model (Fetch and Extract)
Relative multipliers: basic 1×, JS rendering 5×, premium proxies 10×,
both 25×. mode=auto charges only for the configuration that succeeds.
Keep responses small with --css or --output markdown.
See also: [[protected-fetch]], [[extract]], [[interact-browser]], [[cost-control]], [[trace-debug]], [[compliance-policy]].
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
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.

