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

# Cloudflare

> Cloudflare Browser Rendering REST API for crawling websites, extracting content as markdown, taking screenshots, generating PDFs, and scraping structured data.

Cloudflare Browser Rendering REST API for crawling websites, extracting content as markdown, taking screenshots, generating PDFs, and scraping structured data. Best for workflows needing web content extraction — converting web pages to markdown, capturing visual snapshots, or extracting structured data from rendered pages. Unlike search APIs (Brave, Exa), Cloudflare renders and extracts from specific URLs rather than searching across the web.

10 endpoints available through Lava's AI Gateway. See the [Cloudflare API docs](https://developers.cloudflare.com/browser-rendering/rest-api/) for full documentation.

<Info>Supports both **managed** (Lava's API keys) and **unmanaged** (bring your own credentials) mode.</Info>

## Endpoints

### Extract rendered HTML content from a URL

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/content` — \$0.00015 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/content', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fcontent" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Extract page as markdown

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/markdown` — \$0.00015 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/markdown', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fmarkdown" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Extract structured JSON from a page using a prompt

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/json` — \$0.00015 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/json', {
      body: {
    "url": "https://example.com",
    "prompt": "Extract the main heading and first paragraph"
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fjson" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com","prompt":"Extract the main heading and first paragraph"}'
    ```
  </Tab>
</Tabs>

### Scrape specific elements from a page

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/scrape` — \$0.00015 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/scrape', { body: {"url":"https://example.com","elements":[{"selector":"h1"}]} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fscrape" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com","elements":[{"selector":"h1"}]}'
    ```
  </Tab>
</Tabs>

### Extract all links from a page

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/links` — \$0.00015 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/links', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Flinks" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Take a DOM snapshot of a page

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/snapshot` — \$0.00025 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/snapshot', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fsnapshot" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Take screenshot of a page

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/screenshot` — \$0.00025 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/screenshot', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fscreenshot" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Generate PDF of a page

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/pdf` — \$0.00025 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/pdf', { body: {"url":"https://example.com"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fpdf" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com"}'
    ```
  </Tab>
</Tabs>

### Multi-page crawl with markdown/text extraction

**POST** `https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/crawl` — \$0.001 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/browser-rendering/crawl', {
      body: {
    "url": "https://example.com",
    "limit": 3,
    "formats": [
      "markdown"
    ]
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.cloudflare.com%2Fclient%2Fv4%2Faccounts%2FACCOUNT_ID%2Fbrowser-rendering%2Fcrawl" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://example.com","limit":3,"formats":["markdown"]}'
    ```
  </Tab>
</Tabs>

### Check crawl job status

**GET** `https://api.cloudflare.com/client/v4/accounts/{id}/browser-rendering/crawl/{id}` — \$0.00015 / request

## Next Steps

<CardGroup cols={2}>
  <Card title="All Providers" icon="grid" href="/gateway/supported-providers">
    Browse all supported AI providers
  </Card>

  <Card title="Forward Proxy" icon="route" href="/gateway/forward-proxy">
    Learn how to construct proxy URLs and authenticate requests
  </Card>
</CardGroup>
