> ## 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.

# Fetch

> Get any page as clean, usable content from the terminal, reliably, even if it's dynamic, JavaScript-heavy, or protected.

`zenrows fetch` retrieves a single page and returns its HTML, Markdown, or plain text. It handles JavaScript rendering and anti-bot protection automatically, so most calls need no extra flags.

```bash theme={null}
zenrows fetch <url> [flags]
```

## Examples

```bash theme={null}
# Just works, no flags needed
zenrows fetch https://httpbin.io/html

# Markdown output
zenrows fetch https://example.com --output markdown

# Take manual control of rendering and proxies
zenrows fetch https://example.com --manual --js-render --premium-proxy

# Geo-target and wait for an element
zenrows fetch https://example.com --proxy-country us --wait-for ".price"

# Save the response to a file
zenrows fetch https://example.com --out page.html
```

<Tip>
  Start with the defaults. Only add `--manual --js-render --premium-proxy` after a run's trace (`zenrows trace explain <run-id>`) shows it's actually needed, each flag raises cost.
</Tip>

## Flags

| Flag                       | Description                                                                   |
| -------------------------- | ----------------------------------------------------------------------------- |
| `--manual`                 | Take manual control of rendering and proxies instead of the automatic default |
| `--js-render`              | Render JavaScript (manual mode only)                                          |
| `--premium-proxy`          | Use residential IPs (manual mode only)                                        |
| `--proxy-country <cc>`     | Geo-target. Works alone by default; in manual mode requires `--premium-proxy` |
| `--wait <ms>`              | Fixed wait after load                                                         |
| `--wait-for <selector>`    | Wait for a CSS selector                                                       |
| `--js-instructions <json>` | JSON instructions to run on the page                                          |
| `--session-id <n>`         | Keep the same IP across requests                                              |
| `--original-status`        | Return the target's original HTTP status                                      |
| `--output <fmt>`           | `html` (default), `markdown`, `text`, or `pdf`                                |
| `--screenshot`             | Capture an above-the-fold screenshot                                          |
| `--out <file>`             | Write the response body to a file                                             |
| `--no-signup`              | Do not auto-create a Free-plan account if no key exists                       |
| `--json`                   | Print a structured result instead of the raw body                             |
