> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zenrows.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Zenrows CLI

> Install the Zenrows CLI, authenticate, and get your first result from the terminal in under five minutes.

Zenrows gives your terminal, and your AI agents, reliable access to the protected web: sites that are dynamic, JavaScript-heavy, or built to block ordinary tools. The `zenrows` CLI puts fetching, extracting, and running jobs at scale behind one command, plus the skills, templates, and MCP wiring that make it work naturally with an agent, not just a script.

It's [open source](https://github.com/ZenRows/cli).

## Installation

```bash theme={null}
npx -y @zenrows/cli init
```

<Note>
  No API key needed to start. The first cloud call auto-provisions a Free-plan account and stores the key in `.zenrows/secrets.json`. Claim it later to keep your usage history, the same key keeps working:

  ```bash theme={null}
  zenrows account claim
  ```
</Note>

To use an existing key instead of the auto-provisioning flow:

```bash theme={null}
zenrows login --api-key <your-key>
# or
export ZENROWS_API_KEY=<your-key>
zenrows login --env
```

## Quickstart

```bash theme={null}
npx -y @zenrows/cli init
zenrows fetch https://httpbin.io/html
zenrows extract https://www.scrapingcourse.com/ecommerce/ --autoparse
```

## Full setup

One command instead of many: creates your workspace, installs every skill, template, workflow, recipe, and eval, configures MCP for your agent clients, and runs a health check.

```bash theme={null}
zenrows init --all
```

Target specific agent clients instead of the defaults:

```bash theme={null}
zenrows init --agents claude-code,cursor,windsurf
```

<Note>
  If a client can't be auto-configured, `init` prints the manual steps instead of skipping it silently.
</Note>

## Commands

### Primitives

The actual scraping work.

| Command                                | Does                                                          |
| -------------------------------------- | ------------------------------------------------------------- |
| [`fetch`](/cli/fetch/introduction)     | Get any page as clean, usable content, even if it's protected |
| [`extract`](/cli/extract/introduction) | Turn messy pages into clean, structured JSON                  |
| [`batch`](/cli/batch/introduction)     | Process thousands of URLs reliably, in one job                |
| [`browser`](/cli/browser/introduction) | Click, log in, navigate, and interact, like a real user       |

### Agent Toolkit

What makes Zenrows easy for an agent, or a developer, to actually use.

| Command                      | Does                                                           |
| ---------------------------- | -------------------------------------------------------------- |
| [`mcp`](/cli/mcp)            | Connect an AI agent, Claude Code, Cursor, and more, to Zenrows |
| [`skill`](/cli/skills)       | Install agent-readable playbooks for choosing the right tool   |
| [`template`](/cli/templates) | Scaffold a minimal, working project                            |
| [`workflow`](/cli/workflows) | Run a multi-step, end-to-end process                           |
| [`recipe`](/cli/recipes)     | Run a single, ready-made example                               |
| [`eval`](/cli/evals)         | Run a reproducible benchmark                                   |

Check your setup, and what's already installed:

```bash theme={null}
zenrows status
```

## Next steps

<CardGroup cols={2}>
  <Card title="Connect an agent" icon="plug" href="/cli/mcp">
    Wire Claude Code, Cursor, Windsurf, and more into Zenrows with one command.
  </Card>

  <Card title="Troubleshooting" icon="life-buoy" href="/cli/troubleshooting">
    Read a failed run's trace and find the specific next action.
  </Card>
</CardGroup>
