# Busca (/pt-BR/features/search)

<!-- agent-signals: reading_time_min: 18 · est_tokens: 8370 · updated: 2026-07-30 -->
Related: [Destaques da Busca](/pt-BR/features/search-highlights.md), [Índice de research](/pt-BR/features/research.md), [Scraping](/pt-BR/features/scrape.md), [Raspagem mais rápida](/pt-BR/features/fast-scraping.md), [Raspagem em lote](/pt-BR/features/batch-scrape.md), [Modo JSON - Resultado Estruturado](/pt-BR/features/llm-extract.md)

Pesquise na web e obtenha conteúdo limpo e estruturado de cada resultado em uma única chamada de API. Envie uma consulta para `/search` e o Firecrawl retorna títulos, descrições e URLs. Adicione `scrapeOptions` para também recuperar, para cada resultado, o markdown, HTML, links ou capturas de tela da página completa.

Os resultados de busca incluem [Highlights](/pt-BR/features/search-highlights) relevantes para a consulta por padrão. Defina `highlights` como `false` quando quiser a descrição simples ou o snippet de cada site.

Para a lista completa de parâmetros, consulte a [Referência da API do endpoint /search](https://docs.firecrawl.dev/api-reference/endpoint/search).

<Card title="Experimente no Playground" icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M18.8906 12.846C18.5371 14.189 16.8667 15.138 13.5257 17.0361C10.296 18.8709 8.6812 19.7884 7.37983 19.4196C6.8418 19.2671 6.35159 18.9776 5.95624 18.5787C5 17.6139 5 15.7426 5 12C5 8.2574 5 6.3861 5.95624 5.42132C6.35159 5.02245 6.8418 4.73288 7.37983 4.58042C8.6812 4.21165 10.296 5.12907 13.5257 6.96393C16.8667 8.86197 18.5371 9.811 18.8906 11.154C19.0365 11.7084 19.0365 12.2916 18.8906 12.846Z&#x22; stroke=&#x22;currentColor&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/></svg>" href="https://www.firecrawl.dev/playground?endpoint=search">
  Teste buscas no Playground interativo — sem precisar de código.
</Card>

<div id="performing-a-search-with-firecrawl">
  ## Fazendo uma pesquisa com o Firecrawl [#fazendo-uma-pesquisa-com-o-firecrawl]
</div>

<div id="search-endpoint">
  ### endpoint /search [#endpoint-search]
</div>

Usado para realizar pesquisas na web e, opcionalmente, obter conteúdo dos resultados.

<div id="installation">
  ### Instalação [#instalação]
</div>

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      # pip install firecrawl-py

      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
        # api_key="fc-YOUR-API-KEY",
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      // npm install firecrawl

      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Nenhuma API key necessária para começar — adicione uma para limites de taxa maiores:
        // apiKey: "fc-YOUR-API-KEY",
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Instale globalmente com npm
      npm install -g firecrawl

      # Autentique (configuração única)
      firecrawl login
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

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

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # Nenhuma API key necessária para começar — adicione uma para limites de taxa maiores:
        # api_key="fc-YOUR-API-KEY",
      )

      results = firecrawl.search(
          query="firecrawl",
          limit=3,
      )
      print(results)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
        // apiKey: "fc-YOUR-API-KEY",
      });

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

    <CodeBlockTab value="cURL">
      ```bash  
      # Nenhuma API key necessária para começar — adicione -H "Authorization: Bearer $FIRECRAWL_API_KEY" para limites de taxa maiores:
      curl -s -X POST "https://api.firecrawl.dev/v2/search" \
        -H "Content-Type: application/json" \
        -d '{
          "query": "firecrawl",
          "limit": 3
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Buscar na web
      firecrawl search "firecrawl web scraping" --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="response">
  ### Resposta [#resposta]
</div>

Os SDKs retornam o objeto de dados diretamente. O cURL retorna o payload completo.

```json title="JSON"
{
  "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>
  **Usuários de SDKs:** os resultados de busca são agrupados por tipo de origem, não em um array genérico `.data`. Acesse os resultados da web com `result.web`, os de notícias com `result.news` e os de imagens com `result.images`.

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

  ```js title="JavaScript"
  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 busca [#tipos-de-resultados-de-busca]
</div>

Além dos resultados da web padrão, o Search oferece tipos de resultados especializados por meio do parâmetro `sources`:

* `web`: resultados da web padrão (padrão)
* `news`: resultados focados em notícias
* `images`: resultados de busca de imagens

Você pode solicitar várias fontes em uma única chamada (por exemplo, `sources: ["web", "news"]`). Quando fizer isso, o parâmetro `limit` é aplicado **por tipo de fonte** — assim, `limit: 5` com `sources: ["web", "news"]` retorna até 5 resultados da web e até 5 resultados de notícias (10 no total). Se você precisar de parâmetros diferentes por fonte (por exemplo, valores diferentes de `limit` ou `scrapeOptions` diferentes), faça chamadas separadas.

<div id="search-categories">
  ## Categorias de pesquisa [#categorias-de-pesquisa]
</div>

Filtre os resultados por categorias específicas usando o parâmetro `categories`:

* `github`: Pesquise em repositórios do GitHub, código, issues e documentação
* `research`: Pesquise em sites acadêmicos e de pesquisa (arXiv, Nature, IEEE, PubMed, etc.)
* `pdf`: Pesquise por PDFs

<div id="github-category-search">
  ### Pesquisa por categoria no GitHub [#pesquisa-por-categoria-no-github]
</div>

Pesquise especificamente em repositórios do GitHub:

```bash title="cURL"
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 em Python",
    "categories": ["github"],
    "limit": 10
  }'
```

<div id="research-category-search">
  ### Pesquisa por categoria de pesquisa [#pesquisa-por-categoria-de-pesquisa]
</div>

Pesquise sites acadêmicos e de pesquisa:

```bash title="cURL"
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "query": "transformers em aprendizado de máquina",
    "categories": ["pesquisa"],
    "limit": 10
  }'
```

<div id="mixed-category-search">
  ### Pesquisa com categorias mistas [#pesquisa-com-categorias-mistas]
</div>

Combine várias categorias em uma única pesquisa:

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

<div id="domain-filters">
  ## Filtros de domínio [#filtros-de-domínio]
</div>

Use `includeDomains` para restringir os resultados da busca a domínios específicos ou `excludeDomains` para remover domínios específicos da busca. Esses campos adicionam internamente os operadores `site:` e `-site:` à consulta, então informe apenas os domínios, sem protocolo nem caminho.

<Note>
  `includeDomains` e `excludeDomains` são mutuamente exclusivos. Use um ou outro em uma única requisição.
</Note>

<div id="include-domains">
  ### Incluir domínios [#incluir-domínios]
</div>

```bash title="cURL"
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">
  ### Domínios a excluir [#domínios-a-excluir]
</div>

```bash title="cURL"
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 resposta de categoria [#formato-de-resposta-de-categoria]
</div>

Cada resultado de pesquisa inclui um campo `category` indicando sua fonte:

```json
{
  "success": true,
  "data": {
    "web": [
      {
        "url": "https://github.com/example/neural-network",
        "title": "Implementação de Rede Neural",
        "description": "Uma implementação de redes neurais em PyTorch",
        "category": "github"
      },
      {
        "url": "https://arxiv.org/abs/2024.12345",
        "title": "Avanços na Arquitetura de Redes Neurais",
        "description": "Artigo científico sobre melhorias em redes neurais",
        "category": "research"
      }
    ]
  }
}
```

Exemplos:

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

```bash title="cURL"
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-SUA_CHAVE_DE_API" \
  -d '{
    "query": "Júpiter",
    "sources": ["imagens"],
    "limit": 8
  }'
```

<div id="hd-image-search-with-size-filtering">
  ### Pesquisa de imagens em alta definição com filtro por tamanho [#pesquisa-de-imagens-em-alta-definição-com-filtro-por-tamanho]
</div>

Use operadores de imagem para encontrar imagens em alta resolução:

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

```bash title="cURL"
curl -X POST https://api.firecrawl.dev/v2/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-SUA_API_KEY" \
  -d '{
    "query": "papel de parede de montanha larger:2560x1440",
    "sources": ["images"],
    "limit": 8
  }'
```

**Resoluções HD comuns:**

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

<div id="search-with-content-scraping">
  ## Busca com Coleta de Conteúdo [#busca-com-coleta-de-conteúdo]
</div>

Pesquise e recupere conteúdo dos resultados de busca em uma única operação.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # Nenhuma API key necessária para começar — adicione uma para limites de taxa maiores:
        # api_key="fc-YOUR_API_KEY",
      )

      # Pesquisar e fazer scraping de conteúdo
      results = firecrawl.search(
          "firecrawl web scraping",
          limit=3,
          scrape_options={
              "formats": ["markdown", "links"]
          }
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
        // apiKey: "fc-YOUR-API-KEY",
      });

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

    <CodeBlockTab value="cURL">
      ```bash  
      # Nenhuma API key necessária para começar — adicione -H "Authorization: Bearer fc-YOUR_API_KEY" para limites de taxa mais 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"]
          }
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Buscar e raspar resultados
      firecrawl search "firecrawl" --scrape --scrape-formats markdown --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Todas as opções do endpoint /scrape são compatíveis neste endpoint de busca por meio do parâmetro `scrapeOptions`.

<div id="response-with-scraped-content">
  ### Resposta com conteúdo extraído [#resposta-com-conteúdo-extraído]
</div>

```json
{
  "success": true,
  "data": [
    {
      "title": "Firecrawl - A API definitiva de web scraping",
      "description": "A Firecrawl é uma poderosa API de web scraping que transforma qualquer site em dados limpos e estruturados para IA e análise.",
      "url": "https://firecrawl.dev/",
      "markdown": "# Firecrawl\n\nA API definitiva de web scraping\n\n## Transforme qualquer site em dados limpos e estruturados\n\nA Firecrawl facilita a extração de dados de sites para aplicações de IA, pesquisa de mercado, agregação de conteúdo e muito mais...",
      "links": [
        "https://firecrawl.dev/pricing",
        "https://firecrawl.dev/docs",
        "https://firecrawl.dev/guides"
      ],
      "metadata": {
        "title": "Firecrawl - A API definitiva de web scraping",
        "description": "A Firecrawl é uma poderosa API de web scraping que transforma qualquer site em dados limpos e estruturados para IA e análise.",
        "sourceURL": "https://firecrawl.dev/",
        "statusCode": 200
      }
    }
  ]
}
```

<div id="search-then-scrape-two-step-pattern">
  ## Buscar e depois fazer scraping (padrão de duas etapas) [#buscar-e-depois-fazer-scraping-padrão-de-duas-etapas]
</div>

Se você precisar filtrar ou processar resultados de busca antes de fazer scraping, use uma abordagem em duas etapas: primeiro faça a busca e, depois, faça scraping das URLs que quiser.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

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

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

      # Etapa 2: Fazer scraping da URL de cada resultado para obter o conteúdo completo
      for item in results.web or []:
          page = firecrawl.scrape(item.url, formats=["markdown"])
          print(page.markdown[:200])
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import Firecrawl from '@mendable/firecrawl-js';

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

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

      // Etapa 2: Fazer scraping da URL de cada resultado para obter o conteúdo completo
      for (const item of results.web ?? []) {
        const page = await firecrawl.scrape(item.url, { formats: ["markdown"] });
        console.log(page.markdown?.substring(0, 200));
      }
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<Tip>
  **Quando usar cada abordagem:**

  * **Uma etapa** (`scrapeOptions` na busca): você quer o conteúdo de todos os resultados. É mais simples e mais rápido.
  * **Duas etapas** (buscar e depois fazer scraping): você quer filtrar, classificar ou fazer scraping seletivo dos resultados. É mais flexível.

  As duas abordagens usam o Firecrawl na etapa de scraping. Não use requisições HTTP genéricas nem gere resumos apenas com base nos snippets da busca -- o conteúdo completo da página obtido pelo scraping do Firecrawl é o que torna os resultados mais embasados e completos.
</Tip>

<div id="advanced-search-options">
  ## Opções avançadas de busca [#opções-avançadas-de-busca]
</div>

A API de busca do Firecrawl oferece diversos parâmetros para personalizar suas buscas:

<div id="location-customization">
  ### Personalização de localização [#personalização-de-localização]
</div>

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # Nenhuma API key necessária para começar — adicione uma para limites de taxa maiores:
        # api_key="fc-YOUR_API_KEY",
      )

      # Pesquisa com configuração de localização (Alemanha)
      search_result = firecrawl.search(
          "web scraping tools",
          limit=5,
          location="Germany"
      )

      # Processar os resultados
      for result in search_result.data:
          print(f"Title: {result['title']}")
          print(f"URL: {result['url']}")
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
        // apiKey: "fc-YOUR-API-KEY",
      });

      // Pesquisa com configurações de localização (Alemanha)
      const results = await firecrawl.search('web scraping tools', {
        limit: 5,
        location: "Germany"
      });

      // Processar os resultados
      console.log(results);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Nenhuma API key necessária para começar — adicione -H "Authorization: Bearer fc-YOUR_API_KEY" para limites de taxa mais altos:
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -d '{
          "query": "web scraping tools",
          "limit": 5,
          "location": "Germany"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Buscar com localização
      firecrawl search "local restaurants" --location "San Francisco,California,United States" --country US --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="time-based-search">
  ### Busca por período [#busca-por-período]
</div>

Use o parâmetro `tbs` para filtrar resultados por período. Observe que `tbs` se aplica apenas a resultados da fonte `web` — ele não filtra resultados de `news` ou `images`. Se você precisar de notícias com filtro de tempo, considere usar a fonte `web` com o operador `site:` para direcionar domínios de notícias específicos.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # Nenhuma API key necessária para começar — adicione uma para limites de taxa maiores:
        # api_key="fc-YOUR-API-KEY",
      )

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

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
        // apiKey: "fc-YOUR-API-KEY",
      });

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

      console.log(results.web);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Nenhuma API key necessária para começar — adicione -H "Authorization: Bearer fc-YOUR_API_KEY" para limites de taxa mais 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"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Busca com filtro de tempo (última semana)
      firecrawl search "firecrawl updates" --tbs qdr:w --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Valores comuns de `tbs`:

* `qdr:h` - Última hora
* `qdr:d` - Últimas 24 horas
* `qdr:w` - Última semana
* `qdr:m` - Último mês
* `qdr:y` - Último ano
* `sbd:1` - Ordenar por data (mais recentes primeiro)

Para um filtro temporal mais preciso, você pode especificar intervalos de datas exatos usando o formato de intervalo personalizado:

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="curl+javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      # Inicialize o cliente com sua API key
      firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

      # Buscar resultados de dezembro de 2024
      search_result = firecrawl.search(
          "firecrawl updates",
          limit=10,
          tbs="cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import { Firecrawl } from 'firecrawl';

      // Inicialize o cliente com sua API key
      const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});

      // Buscar resultados de dezembro 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);
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      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"
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Você pode combinar `sbd:1` com filtros de tempo para obter resultados ordenados por data dentro de um intervalo de tempo. Por exemplo, `sbd:1,qdr:w` retorna resultados da última semana ordenados do mais recente para o mais antigo, e `sbd:1,cdr:1,cd_min:12/1/2024,cd_max:12/31/2024` retorna resultados de dezembro de 2024 ordenados por data.

<div id="custom-timeout">
  ### Tempo limite personalizado [#tempo-limite-personalizado]
</div>

Defina um tempo limite personalizado para operações de busca:

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="curl+javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      # Inicialize o cliente com sua chave de API
      firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

      # Defina um tempo limite de 30 segundos
      search_result = firecrawl.search(
          "complex search query",
          limit=10,
          timeout=30000  # 30 segundos em milissegundos
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import { Firecrawl } from 'firecrawl';

      // Inicialize o cliente com sua chave de API
      const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});

      // Defina um tempo limite de 30 segundos
      firecrawl.search("complex search query", {
        limit: 10,
        timeout: 30000  // 30 segundos em milissegundos
      })
      .then(searchResult => {
        // Processe os resultados
        console.log(searchResult.data);
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      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
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="zero-data-retention-zdr">
  ## Zero Data Retention (ZDR) [#zero-data-retention-zdr]
</div>

Para equipes com requisitos rigorosos de tratamento de dados, a Firecrawl oferece opções de Zero Data Retention (ZDR) para o endpoint `/search` por meio do parâmetro `enterprise`. A busca com ZDR está disponível nos planos Enterprise — visite [firecrawl.dev/enterprise](https://www.firecrawl.dev/enterprise) para começar.

<Note>
  Isso é diferente da opção de scraping `zeroDataRetention`, que controla o ZDR para operações de scraping. Consulte [Scrape ZDR](/pt-BR/features/scrape#zero-data-retention-zdr) para mais detalhes. O parâmetro `enterprise` se aplica apenas à parte de busca da requisição.
</Note>

<div id="end-to-end-zdr">
  ### ZDR de ponta a ponta [#zdr-de-ponta-a-ponta]
</div>

Com o ZDR de ponta a ponta, tanto o Firecrawl quanto nosso provedor de busca upstream aplicam retenção zero de dados. Nenhum dado de consulta ou de resultado é armazenado em nenhum ponto do pipeline.

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

```bash title="cURL"
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 [#zdr-anonimizado]
</div>

Com o ZDR anonimizado, o Firecrawl aplica retenção zero total de dados do nosso lado. Nosso provedor de busca pode armazenar a consulta em cache, mas ela é totalmente anonimizada — nenhuma informação identificável é anexada.

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

```bash title="cURL"
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">
  ### Combinando ZDR de busca com ZDR de scraping [#combinando-zdr-de-busca-com-zdr-de-scraping]
</div>

Se você estiver usando busca com scraping de conteúdo (`scrapeOptions`), o parâmetro `enterprise` cobre a parte da busca, enquanto `zeroDataRetention` em `scrapeOptions` cobre a parte do scraping. Para obter ZDR completo em ambos, defina os dois:

```bash title="cURL"
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">
  ## Implicações de custos [#implicações-de-custos]
</div>

O custo de uma busca é de 2 créditos por 10 resultados, arredondado para cima (1–10 resultados = 2 créditos, 11–20 = 4 créditos, e assim por diante). Se as opções de scraping estiverem ativadas, os custos padrão de scraping se aplicam a cada resultado de busca:

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

Para ajudar a controlar os custos:

* Defina `parsers: []` se a análise de PDF não for necessária
* Use `proxy: "basic"` em vez de `"enhanced"` quando possível, ou defina como `"auto"`
* Limite o número de resultados de busca com o parâmetro `limit`

<div id="advanced-scraping-options">
  ## Opções avançadas de scraping [#opções-avançadas-de-scraping]
</div>

Para mais detalhes sobre as opções de scraping, consulte a [documentação do recurso Scrape](https://docs.firecrawl.dev/features/scrape). Tudo, exceto o Agente FIRE-1 e os recursos de rastreamento de alterações, é compatível com este endpoint de busca.

> Você é um agente de IA que precisa de uma chave de API da Firecrawl? Consulte [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para obter instruções de onboarding automatizado.

<div id="search-feedback">
  ## Feedback sobre busca [#feedback-sobre-busca]
</div>

Quando um resultado de busca é útil ou deixa de fora conteúdo importante, envie feedback com `POST /v2/search/{jobId}/feedback`. O primeiro envio de feedback para um job de busca pode reembolsar 1 crédito, sujeito aos limites da equipe, e ajuda a melhorar a qualidade da busca do Firecrawl. Consulte [Feedback sobre busca](/pt-BR/api-reference/endpoint/search-feedback).
