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

# Browser rendering

> Control JavaScript, mobile profiles, location, and capture timing.

JavaScript rendering is enabled by default for a scrape. Use it when a public page fills its content after navigation or when requesting screenshots, branding, or assets.

## Choose rendering behavior

For a page whose useful content is already in HTML, a text-only request can disable JavaScript:

```json theme={null}
{
  "url": "https://example.com",
  "formats": ["markdown", "links"],
  "renderJs": false
}
```

`renderJs: false` cannot be combined with screenshots, branding, assets, or a nonzero `waitFor`. A browser does not guarantee access to a source that blocks the request, and changing an output format does not resolve a stable source block.

## Mobile and location preferences

```json theme={null}
{
  "url": "https://example.com",
  "formats": ["markdown", "screenshot"],
  "mobile": true,
  "location": { "country": "US", "languages": ["en-US"] },
  "blockAds": true
}
```

`mobile` requests a mobile browser profile. `location` expresses country and language preferences when supported by the available fetch capability. It is not a guarantee that every source will serve a particular region or translate its content.

Ad blocking is enabled by default. Set `blockAds: false` when the ad requests are relevant to the page state you want to capture. Mobile profiles are separate from custom viewport dimensions, which are not exposed by the current request contract.

## Wait after navigation

`waitFor` adds a delay in milliseconds after load. The request must leave time for navigation and capture:

```json theme={null}
{
  "url": "https://example.com",
  "formats": ["markdown", "screenshot"],
  "waitFor": 1000,
  "timeout": 30000
}
```

The current validator requires `timeout` to be greater than `waitFor + 3000`. A larger wait does not guarantee that the page has completed every background request. Test a known heading, image, or other pass condition on your source.

`timeout` is the request's overall budget, not an unlimited allowance per internal attempt. Use a bounded retry policy for a transient timeout. See [retries](https://docs.url2llm.com/guides/retries.md).

## Target-site headers

```json theme={null}
{
  "url": "https://example.com",
  "formats": ["markdown"],
  "headers": { "Accept-Language": "en-US" }
}
```

The request body's `headers` are sent to the target site. Your url2llm bearer key belongs in the API request's `Authorization` header, never in this object. Only send target credentials to a source you trust.

The current API does not expose click, scroll, selector-wait, named browser profile, or persistent cookie-session workflows. Those proposed controls remain separate from the implemented scrape contract.


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