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

# Search Highlights

> Return query-relevant passages instead of plain website descriptions

Search Highlights replace each result's plain website description with passages from the page that are relevant to your query. They are enabled by default on `/v2/search`; no additional parameter, output format, or `scrapeOptions` is required.

Highlights preserve the search result's URL, title, position, and ranking. For web results, the highlighted text is returned in `description`; for news results, it is returned in `snippet`.

<Note>
  If Firecrawl cannot generate a highlight for a result, the website's plain description or snippet is preserved. One unavailable page will not prevent the other search results from being returned.
</Note>

## Highlights are enabled by default

Use Search normally and Firecrawl will return highlights when relevant page content is available.

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

  results = firecrawl.search(
      query="how does firecrawl handle javascript rendering",
      limit=5,
  )

  for result in results.web or []:
      print(result.description)
  ```

  ```js Node theme={null}
  import { Firecrawl } from 'firecrawl';

  const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR-API-KEY' });

  const results = await firecrawl.search(
    'how does firecrawl handle javascript rendering',
    {
      limit: 5,
    }
  );

  for (const result of results.web ?? []) {
    console.log(result.description);
  }
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "how does firecrawl handle javascript rendering",
      "limit": 5
    }'
  ```

  ```bash CLI theme={null}
  firecrawl search "how does firecrawl handle javascript rendering" \
    --limit 5
  ```
</CodeGroup>

### MCP

The `firecrawl_search` MCP tool also returns highlights by default:

```json MCP theme={null}
{
  "query": "how does firecrawl handle javascript rendering",
  "limit": 5
}
```

## Response

Highlights use the existing description fields, so the response shape stays the same as a normal search response.

````json theme={null}
{
  "success": true,
  "data": {
    "web": [
      {
        "url": "https://www.firecrawl.dev/blog/javascript-web-scraping",
        "title": "Web Scraping With JavaScript: Step-by-Step Guide",
        "description": "# Web Scraping With JavaScript: Step-by-Step Guide\n## When should you use scraping APIs instead of DIY tools?\n### Setting up Firecrawl\n```\nnpm install firecrawl\n```\n\n```\nFIRECRAWL_API_KEY=fc-your-api-key-here\n```\n\n### Solving the JavaScript quotes problem\nYou describe what you want, and Firecrawl handles extraction and validation.",
        "position": 1
      }
    ]
  }
}
````

Highlights may contain Markdown when the relevant page content includes headings, lists, tables, or code. Render or process the field as Markdown if you want to preserve that structure.

## Disable highlights

Set `highlights` to `false` when you want each website's plain description or snippet instead.

<CodeGroup>
  ```python Python theme={null}
  results = firecrawl.search(
      query="Firecrawl search API",
      highlights=False,
  )
  ```

  ```js Node theme={null}
  const results = await firecrawl.search('Firecrawl search API', {
    highlights: false,
  });
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "Firecrawl search API",
      "highlights": false
    }'
  ```

  ```bash CLI theme={null}
  firecrawl search "Firecrawl search API" --no-highlights
  ```
</CodeGroup>

## Behavior by result type

* **Web:** Replaces `description` with query-relevant page content when available.
* **News:** Replaces `snippet` with query-relevant page content when available.
* **Images:** Image results are returned unchanged.
* **Search with scraping:** Highlights affect the search description or snippet. Content requested through `scrapeOptions` is returned separately and is not replaced.
* **Zero Data Retention:** ZDR searches retain the websites' plain descriptions and snippets.

For every Search parameter and the complete response schema, see the [Search API reference](/api-reference/endpoint/search).
