> ## Documentation Index
> Fetch the complete documentation index at: https://student-213fb9fc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Búsqueda

> Busca en la web y obtiene el contenido completo de los resultados

La API de búsqueda de Firecrawl te permite realizar búsquedas en la web y, opcionalmente, extraer los resultados en una sola operación.

* Elige formatos de salida específicos (markdown, HTML, links, capturas de pantalla)
* Busca en la web con parámetros personalizables (ubicación, etc.)
* Recupera opcionalmente contenido de los resultados de búsqueda en varios formatos
* Controla la cantidad de resultados y establece tiempos de espera

Para más detalles, consulta la [referencia del punto de conexión /search](https://docs.firecrawl.dev/api-reference/endpoint/search).

<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(api_key="fc-TU-API-KEY")
  ```

  ```js Node theme={null}
  # npm install @mendable/firecrawl-js

  import Firecrawl from '@mendable/firecrawl-js';

  const firecrawl = new Firecrawl({ 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(api_key="fc-TU-API-KEY")

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

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

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

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

  ```bash theme={null}
  curl -s -X POST "https://api.firecrawl.dev/v2/search" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -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 SDK devolverán directamente el objeto de datos. cURL devolverá el payload completo.

```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
      },
      ...
    ]
  }
}
```

<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="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(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 '@mendable/firecrawl-js';

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

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

  ```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 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="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(api_key="fc-YOUR_API_KEY")

  # Búsqueda con configuración de ubicación (Alemania)
  search_result = firecrawl.search(
      "herramientas de web scraping",
      limit=5,
      location="Germany"
  )

  # Procesar los resultados
  for result in search_result.data:
      print(f"Título: {result['title']}")
      print(f"URL: {result['url']}")
  ```

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

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

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

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

  ```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": "herramientas de scraping web",
      "limit": 5,
      "location": "Alemania"
    }'
  ```

  ```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(api_key="fc-TU-API-KEY")

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

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

  const firecrawl = new Firecrawl({ 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}
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer fc-YOUR_API_KEY" \
    -d '{
      "query": "técnicas más recientes de scraping web",
      "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 '@mendable/firecrawl-js';

  // 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 FirecrawlApp

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

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

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

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

  // Establece un tiempo de espera de 30 segundos
  app.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="cost-implications">
  ## Implicaciones de costos
</div>

El costo de una búsqueda es de 2 créditos por cada 10 resultados de búsqueda. 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.
