crawl
Collect the URLs behind one start page with Crawl (new): create a crawl, wait for it, read the kept URLs and optionally each page's HTML, stop it.
Skill by ZenRows
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/zenrows-crawl
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/crawl
What's inside
- Skill name
crawl- Description
- Collect the URLs behind one start page with Crawl (new): create a crawl, wait for it, read the kept URLs and optionally each page's HTML, stop it. Use when the user has a listing or section URL but not the item URLs.
- License
- MIT
- Instructions
- 137 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Crawl (new)
Give Crawl one start URL; it follows the links on that page (and on the
pages behind it, up to the depth you set) and returns the URLs it keeps. Use it
when you know where the items live (a category page, a blog index, a docs
section) but not the item URLs themselves. Once you have the URLs, read pages
with `zenrows fetch` / `zenrows extract`, or ask Crawl for each page itself
with `--output-format html` or `--output-format markdown`.
Crawl stays on the start URL's registrable domain; subdomains count. An account without Crawl access gets
403 `REQS008` → `CRAWL_NOT_ENABLED` ("Crawl is not enabled for this account");
do not retry it.
## Create, wait, read
```
zenrows crawl create https://example.com/products/ --depth 1 \
--max-items 20 --max-pages 25 --include-patterns /product/ --follow --json
zenrows crawl results <id> --json # every kept URL
zenrows crawl results <id> --out urls.jsonl # same, as JSONL
```
- `--depth N` (1 to 100000) is optional: link hops from the start URL. `1` =
the start page's links; `2` = also the links on each of those pages. Leave
it out for no depth limit: the crawl follows links until `--max-items` or
`--max-pages` stops it, or nothing is left to open. A crawl created without
a depth has no `depth` field in its output.
- `--max-items` (kept URLs) and `--max-pages` (fetched pages) cap the crawl;
both default to 100. `--max-pages` bounds the cost: each page is one fetch.
The local policy `max_pages_per_run` caps `--max-pages` (default 10000);
above it the CLI refuses with `POLICY_LIMIT_EXCEEDED` before any request.
- `--include-patterns` / `--exclude-patterns` are substring matches on the
normalized URL and repeat:
`--include-patterns /product/ --exclude-patterns ?add-to-cart`.
- A crawl whose pages held nothing new to follow (no link, only links to other
sites, or only links the patterns reject) ends `completed` with no results
and exits 0. When patterns were set, it prints a note (under `--json`, in
`note`) to check them against the URLs the start page links to.
- `create` returns at once. `--follow` (or `zenrows crawl wait <id>`) polls
until the crawl ends or `--timeout` seconds run out (default 600). When the
time runs out, the command exits 0 and prints the crawl with status
`running` and the hint `zenrows crawl wait <id>` (under `--json`, in
`note`). The crawl keeps running;
it is not stopped. Ctrl-C also stops the wait, not the crawl, and exits 130;
resume with `zenrows crawl wait <id>`.
- `results` on a running crawl returns the URLs kept so far, with
`partial: true`. Read again once the crawl ends. `--limit` sets the page size
of each request.
## Page content
```
zenrows crawl create <url> --depth 1 --output-format html --max-pages 20 --follow
zenrows crawl create <url> --depth 1 --output-format markdown --max-pages 20 --follow
zenrows crawl results <id> --json # fetched results carry content_url
zenrows crawl content <id> <content_id> # one page (or pass the content_url)
zenrows crawl download <id> --out pages.jsonl # every URL + page, NDJSON
```
`--output-format html` stores each page as fetched; `--output-format markdown`
stores it converted to Markdown. Either uses up the page budget: each kept page is one more
fetch, and `--max-pages` counts it. Raise `--max-pages` to keep the same number
of URLs. A result's `content_status` is `pending`, `fetched` or `failed`; only
`fetched` results have content (else `CRAWL_CONTENT_NOT_FOUND`). `download`
reports the crawl's `status`, and `partial: true` while it runs.
## While it runs, and after
```
zenrows crawl get <id> # status, coverage, stop_reason / error, one page of results
zenrows crawl get <id> --cursor <c> --json # the next page; keep polling with next_cursor
zenrows crawl list # your crawls, newest first (--cursor, --limit)
zenrows crawl stop <id> # stop it; kept URLs stay readable
```
A crawl ends `completed` (nothing left, or a cap hit: `stop_reason`
`max_items` / `max_pages`), `stopped` or `failed` (`error.code` and
`error.detail` say why). `stopped` with `stop_reason` `user` means you stopped
it. `stopped` with no `stop_reason` and `error.code` `insufficient_credits` or
`api_key_cap_reached` means the account ran out of credits or the API key hit a
credit cap; the pages fetched before that stay readable. `failed`, and a
`stopped` crawl with an `error`, exit non-zero: `CRAWL_INSUFFICIENT_CREDITS` or
`CRAWL_KEY_CAP_REACHED` when credits ended it (the same codes a refused
`create` gets, also when an older deployment reports it `failed`), else
`CRAWL_FAILED`. `server_code` carries the API's `error.code`:
`seed_unreachable` when the start URL could not be fetched or returned an empty
page, `no_items_found` when the crawl read the start page but found no data it
could use.
`stop` on a crawl that already ended prints the status it ended with.
With `--json`, `create`, `get`, `wait` and `stop` print
`{ok, crawl_id, status, crawl}`; read `coverage`, `stop_reason` and `error`
under `crawl`. `get` adds `results` and `next_cursor`. `download` prints
`status: null` when the API sends no status.
## Limits
When the account has reached its limit of active jobs (3 by default), shared
with its Batch jobs, a create gets 429 `too_many_crawls` →
`CRAWL_TOO_MANY_CRAWLS`; nothing was created. Retry after `retry_after`
seconds (about 30), or stop one of your crawls or Batch jobs first. Any other
429 is `CRAWL_RATE_LIMITED`: requests are being throttled; retry after
`retry_after` seconds.
## Errors
Every Crawl error carries the API's code as `server_code` (when the API sent
one), and `crawl_id` on any call about one crawl.
The CLI retries transient failures, as the Crawl SDKs do: up to 3 retries,
waiting the `Retry-After` seconds (at most 30) or 250 ms x 2^n (+/-20% jitter,
at most 10 s). Reads retry on 429, 502, 503, 504 and network errors (a timeout
counts). `create` retries only with `--idempotency-key`, and only on 502, 503,
504 and network errors, never on 429. `stop` retries on 429, 502, 503 (including
`crawl_busy`) and 504, waiting the `Retry-After` seconds (at most 30) or 1 s.
The "Retry?" column is for errors that remain after these retries.
| Code | Meaning | Retry? |
| --- | --- | --- |From ZenRows/cli, MIT.
More from ZenRows/cli
- 0.637score
protected-fetch
ZenRows
Use Zenrows Protected Fetch in auto mode for anti-bot-protected page retrieval.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
batch-jobs
ZenRows
Scale protected fetch/extract over many URLs via Batch.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
extract
ZenRows
Turn protected pages into structured data with the Zenrows MCP extract tool (and scrape extraction params).
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
interact-browser
ZenRows
Escalate to Zenrows MCP browser_* sessions only when scrape/extract cannot do the job.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
protected-fetch
ZenRows
Use the Zenrows MCP scrape tool for anti-bot-protected page retrieval.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
zenrows
ZenRows
Master playbook for choosing the right Zenrows MCP primitive for any web-data task, with cost and escalation rules.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
compliance-policy
ZenRows
Respect domain allow/deny rules, credit limits, and secret handling.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
batch-jobs
ZenRows
Scale protected fetch/extract over many URLs via Zenrows MCP batch_* tools.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
extract
ZenRows
Turn protected pages into structured data with Extract / CSS / Markdown (Autoparse is deprecated).
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
interact-browser
ZenRows
Escalate to browser sessions only when fetch/extract cannot do the job.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
trace-debug
ZenRows
Read run traces and choose the next action when a fetch/extract fails.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
zenrows
ZenRows
Master playbook for choosing the right Zenrows primitive for any web-data task, with cost and escalation rules.
SkillAFreshness: A★ 16Claude Code +9
Signals
- Stars
- 16
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Oct 20, 2026 (8 days ago)
- Last release
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ZenRows/cli
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ZenRows
- 0.652score
Zenrows MCP
ZenRows
Zenrows MCP server: Fetch, Extract, Batch, and Browser Sessions for AI agents
ConnectorAFreshness: ARemoteLocal★ 20Claude Code +5 - 0.637score
batch-jobs
ZenRows
Scale protected fetch/extract over many URLs via Batch.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
protected-fetch
ZenRows
Use Zenrows Protected Fetch in auto mode for anti-bot-protected page retrieval.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
interact-browser
ZenRows
Escalate to Zenrows MCP browser_* sessions only when scrape/extract cannot do the job.
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
extract
ZenRows
Turn protected pages into structured data with the Zenrows MCP extract tool (and scrape extraction params).
SkillAFreshness: A★ 16Claude Code +9 - 0.634score
cost-control
ZenRows
Pick the cheapest reliable Zenrows MCP configuration and understand cost multipliers.
SkillAFreshness: A★ 16Claude Code +9
Cite this page
crawl skill. Agent Mart. https://agentmart.dev/skills/zenrows-crawl (last updated 2026-10-24)