You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/capabilities.md
+7-13Lines changed: 7 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,8 +7,9 @@ the single source of truth that prevents hallucinated execution.
7
7
8
8
-**available** — a documented endpoint exists and the command does real work.
9
9
-**available-but-needs-confirmation** — likely available; verify per account.
10
-
-**experimental** — exists but gated (e.g. browser, behind `policy.allow_browser`).
11
-
-**beta** — real product in beta; limited access (local spec / validation works today, cloud execution needs beta access).
10
+
-**experimental** — exists but not yet promoted to a stable status.
11
+
-**beta** — open beta; usable by any key. Product-specific limits (e.g. Extract
12
+
domain coverage) are handled by adapters / API errors, not by blocking the CLI.
12
13
-**planned** — no documented endpoint yet; local spec / validation only.
13
14
-**not-implemented** / **deprecated** — not usable.
14
15
@@ -18,15 +19,8 @@ Classification is based on the public Zenrows documentation:
18
19
19
20
| Capability | Backend evidence | Status |
20
21
| --- | --- | --- |
21
-
|`protected_fetch`|Universal Scraper API`GET https://api.zenrows.com/v1/` with `mode`, `js_render`, `premium_proxy`, `proxy_country`, `wait`/`wait_for`, `js_instructions`, `response_type`, `screenshot`, `original_status`, … | available |
22
-
|`extract`|Same `/v1/`endpoint via `autoparse`, `css_extractor`, `response_type=markdown\|plaintext`|available|
23
-
|`batch`|Zenrows Batch Scraper API `https://async.api.zenrows.com/v1` (separate host, `X-API-Key` header) — real product in beta. Cloud subcommands (create/status/results/cancel/wait/retry-failed) work WITH beta access; without it the API returns 403 → `BATCH_ACCESS_DENIED`. Local JSONL spec validation + credit estimation work with no key. | beta |
24
-
|`browser`|Zenrows Scraping Browser (CDP) + `@zenrows/mcp``browser_*` tools; no managed REST sessions API | experimental|
22
+
|`protected_fetch`|Fetch`GET https://api.zenrows.com/v1/` with `mode`, `js_render`, `premium_proxy`, `proxy_country`, `wait`/`wait_for`, `js_instructions`, `response_type`, `screenshot`, `original_status`, … | available |
23
+
|`extract`|Extract `GET https://api.zenrows.com/v1/` via `extract=auto` (domain-gated open beta; CLI falls back to `autoparse`), plus `autoparse`, `css_extractor`, `outputs`, `response_type=markdown\|plaintext`|beta|
24
+
|`batch`| Batch `https://async.api.zenrows.com/v1` (separate host, `X-API-Key` header) — open beta. Local JSONL spec validation + credit estimation work with no key. | beta |
25
+
|`browser`|Browser Sessions REST API `https://mcp.zenrows.com/browser/sessions/*` (Bearer; same backend as `@zenrows/mcp``browser_*`); CDP via `zenrows browser connect`. Escalation-only (prefer fetch/extract); on by default, opt out via `policy.allow_browser`; bills by bandwidth + session time (15-min max) | available|
25
26
|`mcp`| Hosted `https://mcp.zenrows.com/mcp` + local `npx -y @zenrows/mcp`| available |
26
-
27
-
## Important honesty note
28
-
29
-
`protected_fetch` and `extract` are the **same** product: a single `/v1/`
30
-
Universal Scraper API. "Extract" is not a separate endpoint — it is parameters
31
-
on that endpoint (`autoparse` / `css_extractor` / `response_type`). The CLI keeps
"$comment": "Honest capability matrix derived from confirmed Zenrows docs. Every command checks status here before attempting a cloud call. 'available' = a documented endpoint exists today; 'planned' = no documented endpoint yet (local spec / unavailable behavior only); 'experimental' = exists but gated behind policy.",
2
+
"$comment": "Capability matrix for the Zenrows CLI. Every command consults this file before attempting a cloud call, so the CLI never fakes behavior for primitives the backend does not expose. Status values and classification rationale live in docs/capabilities.md; entries must stay in sync with the Capability type in src/types/index.ts.",
3
3
"capabilities": {
4
4
"protected_fetch": {
5
5
"key": "protected_fetch",
6
6
"label": "Protected Fetch",
7
7
"status": "available",
8
8
"command": "zenrows fetch",
9
-
"backend": "GET https://api.zenrows.com/v1/",
9
+
"backend": "Fetch — GET https://api.zenrows.com/v1/",
"backend": "Extract — GET https://api.zenrows.com/v1/ (extract=auto, autoparse, css_extractor, outputs, response_type)",
19
19
"requiresAuth": true,
20
-
"notes": "Structured extraction runs on the same /v1/ endpoint via autoparse=true, css_extractor, and response_type=markdown|plaintext. There is no separate /extract endpoint."
20
+
"notes": "Open beta. Default is extract=auto (domain-gated); CLI falls back to autoparse on AUTH010. Autoparse / CSS / outputs / markdown work on any domain."
21
21
},
22
22
"batch": {
23
23
"key": "batch",
24
24
"label": "Batch (beta)",
25
25
"status": "beta",
26
26
"command": "zenrows batch",
27
-
"backend": "Batch Scraper API — https://async.api.zenrows.com/v1 (X-API-Key header; separate host from the scraper /v1/)",
27
+
"backend": "Batch — https://async.api.zenrows.com/v1 (X-API-Key header; separate host from the Fetch/Extract /v1/)",
28
28
"requiresAuth": true,
29
-
"notes": "The Zenrows Batch Scraper API is a real product in beta. The cloud subcommands (create/status/results/cancel/wait/retry-failed) work WITH beta access; without it the API returns 403 → BATCH_ACCESS_DENIED. Local value always works with no key: `zenrows batch estimate` validates JSONL job specs and estimates credit cost."
29
+
"notes": "Open beta. Cloud subcommands (create/status/results/cancel/wait/retry-failed) call the Batch API; `zenrows batch estimate` works locally with no API key."
"backend": "Browser Sessions REST API — https://mcp.zenrows.com/browser/sessions/* (Bearer auth; same backend as @zenrows/mcp browser_* tools)",
37
37
"requiresAuth": true,
38
-
"notes": "Zenrows Scraping Browser and the @zenrows/mcp browser_* tools exist. There is no managed REST 'sessions' API in the public docs, so this is gated as experimental and escalation-only (policy.allow_browser=falseby default)."
38
+
"notes": "Browser Sessions is a GA Zenrows product (formerly Scraping Browser). Drives its managed REST API directly (create/verb/close over HTTP with Authorization: Bearer) — no CDP client or browser dependency needed. Escalation-only: prefer fetch/extract (they cost less) for the vast majority of cases. On by default; opt out with policy.allow_browser=false. Sessions bill by bandwidth + session time and auto-terminate after 15 minutes. For raw CDP control, `zenrows browser connect` prints the wss://browser.zenrows.com endpoint for your own Playwright/Puppeteer."
39
39
},
40
40
"mcp": {
41
41
"key": "mcp",
42
42
"label": "MCP",
43
43
"status": "available",
44
44
"command": "zenrows mcp",
45
-
"backend": "remote https://mcp.zenrows.com/mcp + local npx -y @zenrows/mcp",
45
+
"backend": "Remote https://mcp.zenrows.com/mcp + local `npx -y @zenrows/mcp`",
46
46
"requiresAuth": true,
47
-
"notes": "Both a hosted remote MCP server and a local STDIO server (@zenrows/mcp, ZENROWS_API_KEY env) are documented."
47
+
"notes": "Hosted remote MCP server plus a local STDIO server (`npx -y @zenrows/mcp`, authenticated via the ZENROWS_API_KEY environment variable)."
Copy file name to clipboardExpand all lines: registry/skills.json
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@
26
26
"name": "extract",
27
27
"type": "skill",
28
28
"description": "Turn protected pages into structured data with Autoparse / CSS / Markdown.",
29
-
"status": "available",
29
+
"status": "beta",
30
30
"requires_backend_capabilities": ["extract"],
31
31
"requires_auth": true,
32
32
"version": "0.1.0",
@@ -36,7 +36,7 @@
36
36
{
37
37
"name": "batch-jobs",
38
38
"type": "skill",
39
-
"description": "Scale protected fetch/extract over many URLs with the Batch Scraper API (beta): submit/track/collect jobs with beta access; validate + estimate specs locally with no key.",
39
+
"description": "Scale protected fetch/extract over many URLs with Batch (beta): submit/track/collect jobs with beta access; validate + estimate specs locally with no key.",
40
40
"status": "beta",
41
41
"requires_backend_capabilities": ["batch"],
42
42
"requires_auth": true,
@@ -47,8 +47,8 @@
47
47
{
48
48
"name": "interact-browser",
49
49
"type": "skill",
50
-
"description": "Escalate to a browser (Scraping Browser / MCP) only when fetch/extract cannot do the job.",
51
-
"status": "experimental",
50
+
"description": "Escalate to Browser Sessions (REST API / MCP browser_*) only when fetch/extract cannot do the job.",
"description": "JSONL job-spec scaffold for high-scale workloads on the Batch Scraper API: submit/track/collect with beta access, validate + estimate locally with no key (beta).",
28
+
"description": "JSONL job-spec scaffold for high-scale workloads on Batch: submit/track/collect with beta access, validate + estimate locally with no key (beta).",
Copy file name to clipboardExpand all lines: skills/batch-jobs/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: batch-jobs
3
-
description: Scale protected fetch/extract over many URLs via the Batch Scraper API (beta). Cloud create/status/results/cancel/wait/retry-failed work with beta access; estimate/validate run locally with no key.
3
+
description: Scale protected fetch/extract over many URLs via Batch (beta). Cloud create/status/results/cancel/wait/retry-failed work with beta access; estimate/validate run locally with no key.
4
4
version: 0.1.0
5
5
requires_backend_capabilities: [batch]
6
6
---
@@ -11,7 +11,7 @@ Process large workloads reliably and asynchronously. Batch is where Zenrows'
11
11
high-scale anti-bot advantage becomes obvious — Zenrows wins when the workflow
12
12
runs over thousands, millions, or recurring sets of URLs.
13
13
14
-
> Status: **beta**. The Zenrows Batch Scraper API is a real
14
+
> Status: **beta**. The Zenrows **Batch** is a real
15
15
> product in beta and runs on a separate host
16
16
> (`async.api.zenrows.com/v1`). The cloud subcommands work once your account has
17
17
> beta access; without it the API returns 403 → `BATCH_ACCESS_DENIED`. The
-Stay under `max_credits_per_run` / `max_pages_per_run` / `max_concurrency`.
25
+
- Respect `allowed_domains` / `blocked_domains`— enforced by the CLI (→ `POLICY_BLOCKED_DOMAIN`).
26
+
-`max_credits_per_run` / `max_pages_per_run` / `max_concurrency` are **advisory budgets** surfaced by `zenrows status` (not hard-enforced by the CLI today) — self-limit against them.
27
27
- Confirm destructive `uninstall` with `--yes`.
28
-
-Browser and experimental commands are **off by default**.
28
+
-**Experimental**commands are off by default (`allow_experimental`). **Browser is on by default** (opt out with `allow_browser=false`).
0 commit comments