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

# CLI

> Scrape, crawl, search, agents and monitors, all from your terminal.

export const OutcrawlStyles = () => {
  if (typeof document !== 'undefined' && !document.getElementById('outcrawl-overrides')) {
    const s = document.createElement('style');
    s.id = 'outcrawl-overrides';
    s.textContent = `
      /* Match the product's radius grid (4 / 6 / 8 / 9999), not Mintlify's default. */
      .rounded-sm { border-radius: 0.375rem !important; } /* 6px, --r-ctl */
      .rounded-md { border-radius: 0.375rem !important; } /* 6px, --r-ctl */
      .rounded-lg { border-radius: 0.5rem !important; }   /* 8px, --r-panel */
      .rounded-l-sm { border-top-left-radius: 0.375rem !important; border-bottom-left-radius: 0.375rem !important; }
      .rounded-r-sm { border-top-right-radius: 0.375rem !important; border-bottom-right-radius: 0.375rem !important; }
      .rounded-l-md { border-top-left-radius: 0.375rem !important; border-bottom-left-radius: 0.375rem !important; }
      .rounded-r-md { border-top-right-radius: 0.375rem !important; border-bottom-right-radius: 0.375rem !important; }
      .rounded-l-lg { border-top-left-radius: 0.5rem !important; border-bottom-left-radius: 0.5rem !important; }
      .rounded-r-lg { border-top-right-radius: 0.5rem !important; border-bottom-right-radius: 0.5rem !important; }

      /* Cards: never pure white in light mode, matching the one-big-card surface tone. */
      .card { background-color: #fcfcfc !important; border-radius: 0.5rem !important; }
      html.dark .card { background-color: #141311 !important; }

      /* Docs hero box */
      .oc-hero { background-color: #fcfcfc; border: 1px solid #e5e2dc; }
      html.dark .oc-hero { background-color: #141311; border-color: #26241f; }
      html.dark .oc-hero h1 { color: #edeae4; }

      /* Thin, transparent-track, hide-until-hover scrollbar. */
      ::-webkit-scrollbar { width: 6px; height: 6px; background-color: transparent; }
      ::-webkit-scrollbar-track { background-color: transparent; }
      ::-webkit-scrollbar-thumb { background-color: rgba(155, 155, 155, 0.5); border-radius: 10px; transition: opacity 0.3s ease; opacity: 0; }
      ::-webkit-scrollbar-thumb:hover { background-color: rgba(155, 155, 155, 0.7); }
      *:hover::-webkit-scrollbar-thumb,
      *:focus::-webkit-scrollbar-thumb,
      *:active::-webkit-scrollbar-thumb { opacity: 1; }
      * { scrollbar-width: thin; scrollbar-color: rgba(155, 155, 155, 0.5) transparent; }
    `;
    document.head.appendChild(s);
  }
  return null;
};

<OutcrawlStyles />

The Outcrawl CLI is a single static binary. No runtime to install first, no Node, no Python.

**Get started in seconds:**

```bash theme={"theme":{"light":"github-light","dark":"catppuccin-mocha"}}
curl -fsSL https://get.outcrawl.ai/cli/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
outcrawl login
outcrawl scrape https://example.com
outcrawl agent "find the cheapest flight to Lisbon"
```

`outcrawl login` opens a browser to sign in and approve the device once; after that the CLI stays signed in. Running in CI or anywhere headless? Set `OUTCRAWL_API_KEY` instead, see [installation](/docs/cli/installation).

<CardGroup cols={3}>
  <Card title="Installation" icon="download" href="/docs/cli/installation">
    Install on macOS, Linux or Windows, sign in or configure a key.
  </Card>

  <Card title="Agent" icon="player-play" href="/docs/cli/agent">
    Submit, watch and manage an agent run from the terminal.
  </Card>

  <Card title="Reference" icon="book" href="/docs/cli/reference">
    Every command, generated from the same registry as the API.
  </Card>
</CardGroup>

## Or just run outcrawl

```bash theme={"theme":{"light":"github-light","dark":"catppuccin-mocha"}}
outcrawl
```

Typed at a terminal, this opens a place to work, in the manner of Claude Code. Your workspace, plan and the credits you have left sit at the top, everything you have done this session fills the middle, and a prompt waits at the bottom.

* **Type a task** and press enter, and an agent run starts. Its steps appear as it takes them (the pages it opens, what it reads), then its answer and what it cost. `esc` asks before it stops the run; work already done is billed.
* **`/scrape <url>`** shows the page as text you can read in the terminal.
* **`/search <query>`** numbers the results, and **`/scrape 2`** reads the second one.
* **`/crawl <url>`** lists pages as they arrive; `esc` stops the crawl.
* **`/budget 5`** caps the agent runs you start next at 5 credits; `/budget off` clears it.
* **`/control`** gives you the live browser of a running agent run, to take over a step yourself.
* **`/runs`**, **`/usage`** and **`/account`** show your recent runs, this month's spend by day and by capability, and who is signed in with which keys.

`tab` completes a command, the arrow keys bring back earlier prompts, `/help` lists every command and key, and `q` on an empty prompt quits. Set `NO_COLOR` and it draws in plain monochrome.

The credits at the top refresh after each action finishes. Every figure is one your account already reports; the app never works one out for itself.

<Note>
  Every other invocation is unchanged. Pipe `outcrawl scrape` from a script or CI and stdout is still exactly the API's body; without a real terminal on both stdin and stdout, a bare `outcrawl` still prints its command list to stderr and exits 2, exactly as it always has.
</Note>

## The commands are the registry's, not the binary's

There is no hand-written command list. Every command comes from the same 46-row capability registry that drives the REST API and the MCP server: 44 of the 46 rows carry a CLI command, and a new capability does not compile into the binary until it has one. The two that carry none are `sessions.export` and `secrets.intent`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.