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

# Búsqueda

> Busca en la web y obtén el contenido completo de los resultados

Busca en la web y obtén contenido limpio y estructurado de cada resultado en una sola llamada a la API. Envía una consulta a `/search` y Firecrawl devuelve títulos, descripciones y URLs. Agrega `scrapeOptions` para recuperar también el markdown completo de la página, HTML, links o capturas de pantalla de cada resultado.

Para ver la lista completa de parámetros, consulta la [referencia de la API del endpoint Search](https://docs.firecrawl.dev/api-reference/endpoint/search).

<div className="firecrawl-cta-box">
  <div style={{ display: "flex", alignItems: "flex-start", gap: "8px", marginBottom: "8px" }}>
    <Icon icon="sack-dollar" color="#ff4d00" size={22} />

    <div className="firecrawl-cta-title" style={{ margin: 0 }}>
      <span style={{ color: "#ff4d00" }}>Recompensa: 5.000 créditos</span>
      <span style={{ fontWeight: 400 }}> por comentarios valiosos sobre /search (GitHub)</span>
    </div>
  </div>

  <p className="firecrawl-cta-description">
    Para optar, completa una entrevista de alta calidad (casos de uso bien pensados, concretos, etc.) con nuestro Asistente de Feedback de Firecrawl. Solo lleva unos minutos, puedes detenerla en cualquier momento y funciona bien tanto para personas como para agentes (¡solo pega el enlace en tu harness agéntico!).
  </p>

  <a href={"https://www.firecrawl.dev/interview?study=20260629-fri-github-usage&src=" + (props.src || "docs-research")} className="firecrawl-cta-btn-primary firecrawl-cta-btn-inline">
    Comenzar la entrevista
  </a>

  <p className="firecrawl-cta-description" style={{ fontSize: "12px", fontStyle: "italic", margin: "12px 0 0 0" }}>
    Incluye tu correo electrónico para poder optar. Las entrevistas se revisan por calidad al final de cada semana.
  </p>
</div>

<Card title="Pruébalo en el Playground" icon="play" href="https://www.firecrawl.dev/playground?endpoint=search">
  Prueba buscar en el playground interactivo; no necesitas escribir código.
</Card>

<div id="performing-a-search-with-firecrawl">
  ## Buscar con Firecrawl
</div>

<div id="search-endpoint">
  ### punto de conexión /search
</div>

Se usa para realizar búsquedas en la web y, opcionalmente, obtener contenido de los resultados.

<div id="installation">
  ### Instalación
</div>

<CodeGroup>
  ```python Python theme={null}
  # pip install firecrawl-py

  from firecrawl import Firecrawl

  firecrawl = Firecrawl(
    # No se necesita API key para comenzar — agrega una para límites de tasa más altos:
    # api_key="fc-YOUR-API-KEY",
  )
  ```

  ```js Node theme={null}
  // npm install firecrawl

  import { Firecrawl } from 'firecrawl';

  const firecrawl = new Firecrawl({
    // No se necesita API key para comenzar — agrega una para obtener límites de tasa más altos:
    // apiKey: "fc-YOUR-API-KEY",
  });
  ```

  ```bash CLI theme={null}
  # Instalar globalmente con npm
  npm install -g firecrawl

  # Autenticar (configuración de una sola vez)
  firecrawl login
  ```
</CodeGroup>

<div id="basic-usage">
  ### Uso básico
</div>

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

  firecrawl = Firecrawl(
    # No se necesita API key para comenzar — agrega una para límites de tasa más altos:
    # api_key="fc-YOUR-API-KEY",
  )

  results = firecrawl.search(
      query="firecrawl",
      limit=3,
  )
  print(results)
  ```

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

  const firecrawl = new Firecrawl({
    // No se necesita API key para comenzar — agrega una para obtener límites de tasa más altos:
    // apiKey: "fc-YOUR-API-KEY",
  });

  const results = await firecrawl.search('firecrawl', {
    limit: 3,
    scrapeOptions: { formats: ['markdown'] }
  });
  console.log(results);
  ```

  ```bash cURL theme={null}
  # No se necesita API key para comenzar — agrega -H "Authorization: Bearer $FIRECRAWL_API_KEY" para límites de tasa más altos:
  curl -s -X POST "https://api.firecrawl.dev/v2/search" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "firecrawl",
      "limit": 3
    }'
  ```

  ```bash CLI theme={null}
  # Buscar en la web
  firecrawl search "firecrawl web scraping" --limit 5 --pretty
  ```
</CodeGroup>

<div id="response">
  ### Respuesta
</div>

Los SDKs devuelven directamente el objeto de datos. cURL devuelve la carga útil completa.

```json JSON theme={null}
{
  "success": true,
  "data": {
    "web": [
      {
        "url": "https://www.firecrawl.dev/",
        "title": "Firecrawl - The Web Data API for AI",
        "description": "The web crawling, scraping, and search API for AI. Built for scale. Firecrawl delivers the entire internet to AI agents and builders.",
        "position": 1
      },
      {
        "url": "https://github.com/firecrawl/firecrawl",
        "title": "mendableai/firecrawl: Turn entire websites into LLM-ready ... - GitHub",
        "description": "Firecrawl is an API service that takes a URL, crawls it, and converts it into clean markdown or structured data.",
        "position": 2
      },
      ...
    ],
    "images": [
      {
        "title": "Quickstart | Firecrawl",
        "imageUrl": "https://mintlify.s3.us-west-1.amazonaws.com/firecrawl/logo/logo.png",
        "imageWidth": 5814,
        "imageHeight": 1200,
        "url": "https://docs.firecrawl.dev/",
        "position": 1
      },
      ...
    ],
    "news": [
      {
        "title": "Y Combinator startup Firecrawl is ready to pay $1M to hire three AI agents as employees",
        "url": "https://techcrunch.com/2025/05/17/y-combinator-startup-firecrawl-is-ready-to-pay-1m-to-hire-three-ai-agents-as-employees/",
        "snippet": "It's now placed three new ads on YC's job board for “AI agents only” and has set aside a $1 million budget total to make it happen.",
        "date": "3 months ago",
        "position": 1
      },
      ...
    ]
  }
}
```

<Note>
  **Si usas los SDKs:** los resultados de búsqueda se agrupan por tipo de fuente, no en un array genérico `.data`. Accede a los resultados web con `result.web`, a las noticias con `result.news` y a las imágenes con `result.images`.

  ```python Python theme={null}
  result = firecrawl.search("query")
  for item in result.web or []:
      print(item.url, item.title)
  ```

  ```js JavaScript theme={null}
  const result = await firecrawl.search("query");
  for (const item of result.web ?? []) {
    console.log(item.url, item.title);
  }
  ```
</Note>

<div id="search-result-types">
  ## Tipos de resultados de búsqueda
</div>

Además de los resultados web habituales, Search admite tipos de resultados especializados mediante el parámetro `sources`:

* `web`: resultados web estándar (predeterminado)
* `news`: resultados enfocados en noticias
* `images`: resultados de búsqueda de imágenes

Puedes solicitar varias fuentes en una sola llamada (por ejemplo, `sources: ["web", "news"]`). Cuando lo haces, el parámetro `limit` se aplica **por tipo de fuente**; así, `limit: 5` con `sources: ["web", "news"]` devuelve hasta 5 resultados web y hasta 5 resultados de noticias (10 en total). Si necesitas parámetros diferentes por fuente (por ejemplo, valores `limit` distintos o diferentes `scrapeOptions`), haz llamadas separadas en su lugar.

<div id="search-categories">
  ## Categorías de búsqueda
</div>

Filtra los resultados por categorías específicas usando el parámetro `categories`:

* `github`: Busca en repositorios, código, issues y documentación de GitHub
* `research`: Busca en sitios académicos y de investigación (arXiv, Nature, IEEE, PubMed, etc.)
* `pdf`: Busca archivos PDF

<div id="github-category-search">
  ### Búsqueda de categorías en GitHub
</div>

Busca específicamente dentro de los repositorios de GitHub:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-TU_API_KEY" \
  -d '{
    "query": "web scraping en Python",
    "categories": ["github"],
    "limit": 10
  }'
```

<div id="research-category-search">
  ### Búsqueda por categoría de investigación
</div>

Busca en sitios web académicos y de investigación:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-TU_API_KEY" \
  -d '{
    "query": "transformers de aprendizaje automático",
    "categories": ["investigación"],
    "limit": 10
  }'
```

<div id="mixed-category-search">
  ### Búsqueda de categorías mixtas
</div>

Combina varias categorías en una sola búsqueda:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "redes neuronales",
    "categories": ["github", "investigación"],
    "limit": 15
  }'
```

<div id="domain-filters">
  ## Filtros de dominio
</div>

Usa `includeDomains` para restringir los resultados de búsqueda a dominios específicos, o `excludeDomains` para excluir dominios específicos de la búsqueda. Estos campos añaden internamente los operadores `site:` y `-site:` a la consulta, así que pasa únicamente los dominios, sin protocolo ni ruta.

<Note>
  `includeDomains` y `excludeDomains` son mutuamente excluyentes. Usa uno u otro en una misma solicitud.
</Note>

<div id="include-domains">
  ### Dominios incluidos
</div>

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "web scraping",
    "includeDomains": ["firecrawl.dev", "docs.firecrawl.dev"],
    "limit": 10
  }'
```

<div id="exclude-domains">
  ### Excluir dominios
</div>

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "web scraping tools",
    "excludeDomains": ["example.com"],
    "limit": 10
  }'
```

<div id="category-response-format">
  ### Formato de respuesta de categorías
</div>

Cada resultado de búsqueda incluye un campo `category` que indica su fuente:

```json theme={null}
{
  "success": true,
  "data": {
    "web": [
      {
        "url": "https://github.com/example/neural-network",
        "title": "Implementación de redes neuronales",
        "description": "Implementación de redes neuronales en PyTorch",
        "category": "github"
        "category": "github",
      {
        "url": "https://arxiv.org/abs/2024.12345",
        "title": "Avances en la arquitectura de redes neuronales",
        "description": "Artículo de investigación sobre mejoras en redes neuronales",
        "category": "research"
      }
    ]
  }
}
```

Ejemplos:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-TU_API_KEY" \
  -d '{
    "query": "openai",
    "sources": ["news"],
    "limit": 5
  }'
```

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "jupiter",
    "sources": ["images"],
    "limit": 8
  }'
```

<div id="hd-image-search-with-size-filtering">
  ### Búsqueda de imágenes en HD con filtro de tamaño
</div>

Usa los operadores de imágenes para encontrar imágenes de alta resolución:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "atardecer imagesize:1920x1080",
    "sources": ["images"],
    "limit": 5
  }'
```

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "fondo de pantalla de montaña larger:2560x1440",
    "sources": ["images"],
    "limit": 8
  }'
```

**Resoluciones HD habituales:**

* `imagesize:1920x1080` - Full HD (1080p)
* `imagesize:2560x1440` - QHD (1440p)
* `imagesize:3840x2160` - 4K UHD
* `larger:1920x1080` - HD o superior
* `larger:2560x1440` - QHD o superior

<div id="search-with-content-scraping">
  ## Búsqueda con extracción de contenido
</div>

Busca y recupera contenido de los resultados de búsqueda en una sola operación.

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

  firecrawl = Firecrawl(
    # No se necesita API key para comenzar — agrega una para límites de tasa más altos:
    # api_key="fc-YOUR_API_KEY",
  )

  # Buscar y hacer scraping de contenido
  results = firecrawl.search(
      "firecrawl web scraping",
      limit=3,
      scrape_options={
          "formats": ["markdown", "links"]
      }
  )
  ```

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

  const firecrawl = new Firecrawl({
    // No se necesita API key para comenzar — agrega una para obtener límites de tasa más altos:
    // apiKey: "fc-YOUR-API-KEY",
  });

  const results = await firecrawl.search('firecrawl', {
    limit: 3,
    scrapeOptions: { formats: ['markdown'] }
  });
  console.log(results);
  ```

  ```bash cURL theme={null}
  # No se necesita API key para comenzar — agrega -H "Authorization: Bearer fc-YOUR_API_KEY" para límites de tasa más altos:
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -d '{
      "query": "firecrawl web scraping",
      "limit": 3,
      "scrapeOptions": {
        "formats": ["markdown", "links"]
      }
    }'
  ```

  ```bash CLI theme={null}
  # Buscar y extraer resultados
  firecrawl search "firecrawl" --scrape --scrape-formats markdown --limit 5 --pretty
  ```
</CodeGroup>

Todas las opciones del punto de conexión /scrape son compatibles con este punto de conexión de búsqueda mediante el parámetro `scrapeOptions`.

<div id="response-with-scraped-content">
  ### Respuesta con contenido rastreado
</div>

```json theme={null}
{
  "success": true,
  "data": [
    {
      "title": "Firecrawl - La API definitiva de web scraping",
      "description": "Firecrawl es una potente API de web scraping que convierte cualquier sitio web en datos limpios y estructurados para IA y análisis.",
      "url": "https://firecrawl.dev/",
      "markdown": "# Firecrawl\n\nLa API definitiva de web scraping\n\n## Convierte cualquier sitio web en datos limpios y estructurados\n\nFirecrawl facilita la extracción de datos de sitios web para aplicaciones de IA, investigación de mercados, agregación de contenido y más...",
      "links": [
        "https://firecrawl.dev/pricing",
        "https://firecrawl.dev/docs",
        "https://firecrawl.dev/guides"
      ],
      "metadata": {
        "title": "Firecrawl - La API definitiva de web scraping",
        "description": "Firecrawl es una potente API de web scraping que convierte cualquier sitio web en datos limpios y estructurados para IA y análisis.",
        "sourceURL": "https://firecrawl.dev/",
        "statusCode": 200
      }
    }
  ]
}
```

<div id="search-then-scrape-two-step-pattern">
  ## Buscar y luego hacer scraping (patrón de dos pasos)
</div>

Si necesitas filtrar o procesar los resultados de búsqueda antes de hacer scraping, usa un enfoque de dos pasos: primero busca y luego haz scraping de las URL que quieras.

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

  firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

  # Paso 1: Buscar
  results = firecrawl.search("firecrawl web scraping", limit=5)

  # Paso 2: Hacer scraping de la URL de cada resultado para obtener el contenido completo
  for item in results.web or []:
      page = firecrawl.scrape(item.url, formats=["markdown"])
      print(page.markdown[:200])
  ```

  ```js JavaScript theme={null}
  import Firecrawl from '@mendable/firecrawl-js';

  const firecrawl = new Firecrawl({ apiKey: "fc-YOUR_API_KEY" });

  // Paso 1: Buscar
  const results = await firecrawl.search("firecrawl web scraping", { limit: 5 });

  // Paso 2: Hacer scraping de la URL de cada resultado para obtener el contenido completo
  for (const item of results.web ?? []) {
    const page = await firecrawl.scrape(item.url, { formats: ["markdown"] });
    console.log(page.markdown?.substring(0, 200));
  }
  ```
</CodeGroup>

<Tip>
  **Cuándo usar cada enfoque:**

  * **Un solo paso** (`scrapeOptions` en search): quieres el contenido de todos los resultados. Es más simple y rápido.
  * **Dos pasos** (buscar y luego hacer scraping): quieres filtrar, ordenar o hacer scraping selectivo de los resultados. Es más flexible.

  Ambos enfoques usan Firecrawl para el paso de scraping. No uses peticiones HTTP genéricas ni generes resúmenes solo a partir de fragmentos de búsqueda: el contenido completo de la página obtenido con el scraping de Firecrawl es lo que hace que los resultados sean fiables y completos.
</Tip>

<div id="advanced-search-options">
  ## Opciones de búsqueda avanzadas
</div>

La API de búsqueda de Firecrawl admite varios parámetros para personalizar la búsqueda:

<div id="location-customization">
  ### Personalización de la ubicación
</div>

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

  firecrawl = Firecrawl(
    # No se necesita API key para comenzar — añade una para límites de tasa más altos:
    # api_key="fc-YOUR_API_KEY",
  )

  # Search with location settings (Germany)
  search_result = firecrawl.search(
      "web scraping tools",
      limit=5,
      location="Germany"
  )

  # Process the results
  for result in search_result.data:
      print(f"Title: {result['title']}")
      print(f"URL: {result['url']}")
  ```

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

  const firecrawl = new Firecrawl({
    // No se necesita API key para comenzar — añade una para límites de tasa más altos:
    // apiKey: "fc-YOUR-API-KEY",
  });

  // Búsqueda con configuración de ubicación (Alemania)
  const results = await firecrawl.search('web scraping tools', {
    limit: 5,
    location: "Germany"
  });

  // Procesar los resultados
  console.log(results);
  ```

  ```bash cURL theme={null}
  # No se necesita API key para comenzar — agrega -H "Authorization: Bearer fc-YOUR_API_KEY" para límites de tasa más altos:
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -d '{
      "query": "web scraping tools",
      "limit": 5,
      "location": "Germany"
    }'
  ```

  ```bash CLI theme={null}
  # Buscar con ubicación
  firecrawl search "local restaurants" --location "San Francisco,California,United States" --country US --pretty
  ```
</CodeGroup>

<div id="time-based-search">
  ### Búsqueda por tiempo
</div>

Usa el parámetro `tbs` para filtrar resultados por periodo. Ten en cuenta que `tbs` solo se aplica a resultados de `web` — no filtra resultados de `news` ni de `images`. Si necesitas noticias filtradas por tiempo, considera usar `web` como origen con el operador `site:` para restringir la búsqueda a dominios de noticias específicos.

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

  firecrawl = Firecrawl(
    # No se necesita API key para comenzar — añade una para límites de tasa más altos:
    # api_key="fc-YOUR-API-KEY",
  )

  results = firecrawl.search(
      query="firecrawl",
      limit=5,
      tbs="qdr:d",
  )
  print(len(results.get('web', [])))
  ```

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

  const firecrawl = new Firecrawl({
    // No se necesita API key para comenzar — agrega una para límites de tasa más altos:
    // apiKey: "fc-YOUR-API-KEY",
  });

  const results = await firecrawl.search('firecrawl', {
    limit: 5,
    tbs: 'qdr:d', // último día
  });

  console.log(results.web);
  ```

  ```bash cURL theme={null}
  # No se necesita API key para comenzar — agrega -H "Authorization: Bearer fc-YOUR_API_KEY" para límites de tasa más altos:
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -d '{
      "query": "latest web scraping techniques",
      "limit": 5,
      "tbs": "qdr:w"
    }'
  ```

  ```bash CLI theme={null}
  # Búsqueda con filtro de tiempo (última semana)
  firecrawl search "firecrawl updates" --tbs qdr:w --limit 5 --pretty
  ```
</CodeGroup>

Valores comunes de `tbs`:

* `qdr:h` - Última hora
* `qdr:d` - Últimas 24 horas
* `qdr:w` - Última semana
* `qdr:m` - Último mes
* `qdr:y` - Último año
* `sbd:1` - Ordenar por fecha (las más recientes primero)

Para un filtrado temporal más preciso, puedes especificar rangos exactos usando el formato de rango de fechas personalizado:

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

  # Inicializa el cliente con tu clave de API
  firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

  # Busca resultados de diciembre de 2024
  search_result = firecrawl.search(
      "firecrawl updates",
      limit=10,
      tbs="cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
  )
  ```

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

  // Inicializa el cliente con tu clave de API
  const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});

  // Busca resultados de diciembre de 2024
  firecrawl.search("firecrawl updates", {
    limit: 10,
    tbs: "cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
  })
  .then(searchResult => {
    console.log(searchResult.data);
  });
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer fc-YOUR_API_KEY" \
    -d '{
      "query": "firecrawl updates",
      "limit": 10,
      "tbs": "cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
    }'
  ```
</CodeGroup>

Puedes combinar `sbd:1` con filtros de tiempo para obtener resultados ordenados por fecha dentro de un rango temporal. Por ejemplo, `sbd:1,qdr:w` devuelve resultados de la última semana ordenados de más recientes a más antiguos, y `sbd:1,cdr:1,cd_min:12/1/2024,cd_max:12/31/2024` devuelve resultados de diciembre de 2024 ordenados por fecha.

<div id="custom-timeout">
  ### Tiempo de espera personalizado
</div>

Configura un tiempo de espera personalizado para las operaciones de búsqueda:

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

  # Inicializa el cliente con tu clave de API
  firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

  # Establece un tiempo de espera de 30 segundos
  search_result = firecrawl.search(
      "complex search query",
      limit=10,
      timeout=30000  # 30 segundos en milisegundos
  )
  ```

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

  // Inicializa el cliente con tu clave de API
  const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});

  // Establece un tiempo de espera de 30 segundos
  firecrawl.search("complex search query", {
    limit: 10,
    timeout: 30000  // 30 segundos en milisegundos
  })
  .then(searchResult => {
    // Procesar los resultados
    console.log(searchResult.data);
  });
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer fc-YOUR_API_KEY" \
    -d '{
      "query": "complex search query",
      "limit": 10,
      "timeout": 30000
    }'
  ```
</CodeGroup>

<div id="zero-data-retention-zdr">
  ## Retención de datos cero (ZDR)
</div>

Para equipos con requisitos estrictos de tratamiento de datos, Firecrawl ofrece opciones de Retención de datos cero (ZDR) para el punto de conexión `/search` mediante el parámetro `enterprise`. La búsqueda con ZDR está disponible en los planes Enterprise — visita [firecrawl.dev/enterprise](https://www.firecrawl.dev/enterprise) para comenzar.

<Note>
  Esto es distinto de la opción de scrape `zeroDataRetention`, que controla la ZDR para las operaciones de scraping. Consulta [Scrape ZDR](/es/features/scrape#zero-data-retention-zdr) para obtener más información. El parámetro `enterprise` solo se aplica a la parte de búsqueda de la solicitud.
</Note>

<div id="end-to-end-zdr">
  ### ZDR de extremo a extremo
</div>

Con ZDR de extremo a extremo, tanto Firecrawl como nuestro proveedor de búsqueda upstream aplican retención de datos cero. No se almacenan datos de consultas ni de resultados en ningún punto del pipeline.

* **Costo:** 10 créditos por 10 resultados
* **Parámetro:** `enterprise: ["zdr"]`

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "sensitive topic",
    "limit": 10,
    "enterprise": ["zdr"]
  }'
```

<div id="anonymized-zdr">
  ### ZDR anonimizado
</div>

Con ZDR anonimizado, Firecrawl aplica retención de datos cero completa por nuestra parte. Nuestro proveedor de búsqueda puede almacenar en caché la consulta, pero está completamente anonimizada — no se adjunta ninguna información identificativa.

* **Costo:** 2 créditos por 10 resultados
* **Parámetro:** `enterprise: ["anon"]`

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "sensitive topic",
    "limit": 10,
    "enterprise": ["anon"]
  }'
```

<div id="combining-search-zdr-with-scrape-zdr">
  ### Combinar Search ZDR con Scrape ZDR
</div>

Si estás usando search con scraping de contenido (`scrapeOptions`), el parámetro `enterprise` cubre la parte de búsqueda, mientras que `zeroDataRetention` en `scrapeOptions` cubre la parte de scraping. Para obtener ZDR completo en ambos, configura ambos:

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "sensitive topic",
    "limit": 5,
    "enterprise": ["zdr"],
    "scrapeOptions": {
      "formats": ["markdown"],
      "zeroDataRetention": true
    }
  }'
```

<div id="cost-implications">
  ## Implicaciones de costos
</div>

El costo de una búsqueda es de 2 créditos por cada 10 resultados, redondeado hacia arriba (1–10 resultados = 2 créditos, 11–20 = 4 créditos, y así sucesivamente). Si las opciones de scraping están habilitadas, se aplican los costos estándar de scraping a cada resultado de búsqueda:

* **Basic scrape**: 1 crédito por página web
* **PDF parsing**: 1 crédito por página de PDF
* **Enhanced proxy mode**: 4 créditos adicionales por página web
* **JSON mode**: 4 créditos adicionales por página web

Para ayudar a controlar los costos:

* Establece `parsers: []` si no se requiere el análisis de PDF
* Usa `proxy: "basic"` en lugar de `"enhanced"` cuando sea posible, o configúralo en `"auto"`
* Limita la cantidad de resultados de búsqueda con el parámetro `limit`

<div id="advanced-scraping-options">
  ## Opciones avanzadas de scraping
</div>

Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y seguimientoDeCambios, es compatible con este punto de conexión de búsqueda.

> ¿Eres un agente de IA que necesita una API key de Firecrawl? Consulta [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para ver las instrucciones de incorporación automatizada.

<div id="search-feedback">
  ## Comentarios sobre la búsqueda
</div>

Cuando un resultado de búsqueda es útil o le falta contenido importante, envía tus comentarios con `POST /v2/search/{jobId}/feedback`. El primer envío de comentarios para un trabajo de búsqueda puede reembolsar 1 crédito, según los límites del equipo, y ayuda a mejorar la calidad de búsqueda de Firecrawl. Consulta [Comentarios sobre la búsqueda](/es/api-reference/endpoint/search-feedback).
