Referência para todas as opções em todos os endpoints de scraping, rastreamento, mapeamento e agente do Firecrawl."
scraping básica#
Para raspar uma única página e obter conteúdo em Markdown limpo, use o endpoint /scrape.
Extração de PDFs#
O Firecrawl oferece suporte a PDFs. Use a opção parsers (por exemplo, parsers: ["pdf"]) quando quiser garantir a extração de PDFs. Você pode controlar a estratégia de extração com a opção mode:
auto(padrão) — tenta primeiro uma extração rápida baseada em texto e, se necessário, recorre a OCR.fast— apenas extração baseada em texto (texto embutido). Mais rápido, mas ignora páginas digitalizadas ou com muitas imagens.ocr— força a extração via OCR em todas as páginas. Use para documentos digitalizados ou quandoautoclassificar uma página incorretamente.
{ type: "pdf" } e "pdf" usam por padrão mode: "auto".
Opções de scraping#
Ao usar o endpoint /scrape, você pode personalizar a requisição com as seguintes opções.
Formatos (formats)#
O array formats controla quais tipos de saída o scraper retorna. Padrão: ["markdown"].
Formatos em string: passe o nome diretamente (por exemplo, "markdown").
| Formato | Descrição |
|---|---|
markdown | Conteúdo da página convertido para Markdown limpo. |
html | HTML processado com elementos desnecessários removidos. |
rawHtml | HTML original exatamente como retornado pelo servidor. |
rawBase64 | Corpo da resposta HTTP original codificado em Base64, como uma string Base64 simples. Deve ser o único formato na requisição. O tipo MIME está em metadata.contentType. |
links | Todos os links encontrados na página. |
images | Todas as imagens encontradas na página. |
summary | Um resumo gerado por um LLM do conteúdo da página. |
branding | Extrai a identidade de marca (cores, fontes, tipografia, espaçamento, componentes de UI). |
product | Extrai um produto estruturado (título, preço, disponibilidade, imagens e variantes) de páginas de produto por meio de dados estruturados de múltiplas fontes. |
Formatos em objeto: passe um objeto com type e opções adicionais.
| Formato | Opções | Descrição |
|---|---|---|
json | prompt?: string, schema?: object | Extrai dados estruturados usando um LLM. Forneça um schema JSON e/ou um prompt em linguagem natural (máx. 10.000 caracteres). |
screenshot | fullPage?: boolean, quality?: number, viewport?: { width, height } | Captura uma captura de tela. No máximo uma por requisição. A resolução máxima do viewport é 7680×4320. As URLs das capturas de tela expiram após 24 horas. |
changeTracking | modes?: ("json" | "git-diff")[], tag?: string, schema?: object, prompt?: string | Rastreio de mudanças entre scrapes. Requer que "markdown" também esteja no array de formatos. |
attributes | selectors: [{ selector: string, attribute: string }] | Extrai atributos HTML específicos de elementos que correspondem a seletores CSS. |
Scraping móvel#
Defina mobile: true para emular um dispositivo móvel. Isso é útil quando um site responsivo oculta conteúdo na versão desktop ou exibe um layout diferente em navegadores móveis.
Para sites específicos de uma região, combine com location e uma captura de tela em um dispositivo móvel para verificar o layout renderizado:
Se o site ainda exibir um layout para desktop apesar de mobile: true, adicione um User-Agent mobile via headers:
Filtragem de conteúdo#
Esses parâmetros controlam quais partes da página aparecem na saída. Quando onlyMainContent é true (o padrão), o boilerplate (nav, footer etc.) é removido. includeTags e excludeTags são aplicados ao DOM original da página, não ao resultado após a filtragem, portanto seus seletores devem segmentar os elementos conforme aparecem no HTML de origem. Defina onlyMainContent: false para usar a página completa como ponto de partida para a filtragem por tags.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
onlyMainContent | boolean | true | Retorna apenas o conteúdo principal. Defina como false para retornar a página completa. |
includeTags | array | — | Seletores CSS a serem incluídos — tags, classes, IDs ou seletores de atributo (por exemplo, ["h1", "p", ".main-content", "[data-testid=\"main\"]"]). |
excludeTags | array | — | Seletores CSS a serem excluídos — tags, classes, IDs ou seletores de atributo (por exemplo, ["#ad", "#footer", "[role=\"banner\"]"]). |
Tempo e cache#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
waitFor | integer (ms) | 0 | Tempo extra de espera antes do scraping, além do smart-wait. Use com moderação. |
maxAge | integer (ms) | 172800000 | Retorne uma versão em cache se estiver mais recente do que esse valor (o padrão é 2 dias). Defina 0 para sempre buscar uma versão atualizada. |
timeout | integer (ms) | 60000 | Duração máxima da requisição antes de abortar (o padrão é 60 segundos). O mínimo é 1000 (1 segundo). |
Análise de PDF#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
parsers | array | ["pdf"] | Controla o processamento de PDFs. Use [] para ignorar a análise e retornar base64 (1 crédito fixo). |
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
type | "pdf" | (obrigatório) | Tipo de parser. |
mode | "fast" | "auto" | "ocr" | "auto" | fast: extração somente de texto. auto: fast com OCR como fallback. ocr: força OCR. |
maxPages | integer | — | Limita o número de páginas a serem analisadas. |
pages | boolean | false | Também retorna o markdown físico por página no campo pages do documento. Sem custo adicional. |
blocks | boolean | false | Também retorna blocos de layout tipados por página (caixas delimitadoras normalizadas, tipos de bloco, ordem de leitura, intervalos de caracteres do markdown) no campo blocks do documento. Sem custo adicional. |
pageMarkers | boolean | false | Anota quebras de página no markdown do documento com marcadores <!-- page N --> (somente entre páginas; a numeração pode pular páginas mescladas em uma quebra — consulte Parse). Sem custo adicional. |
Ações#
Execute ações no navegador antes do scraping. Isso é útil para conteúdo dinâmico, navegação ou páginas com acesso restrito. Você pode incluir até 50 ações por requisição, e o tempo total de espera entre todas as ações wait e waitFor não pode exceder 60 segundos.
| Ação | Parâmetros | Descrição |
|---|---|---|
wait | milliseconds?: number, selector?: string | Aguarde por um tempo fixo ou até que um elemento fique visível (informe um ou outro, não ambos). Ao usar selector, o tempo limite é de 30 segundos. |
click | selector: string, all?: boolean | Clique em um elemento que corresponda ao seletor CSS. Defina all: true para clicar em todas as correspondências. |
write | text: string | Digite texto no campo atualmente em foco. Primeiro, você deve focar o elemento com uma ação click. |
press | key: string | Pressione uma tecla do teclado (por exemplo, "Enter", "Tab", "Escape"). |
scroll | direction?: "up" | "down", selector?: string | Role a página ou um elemento específico. A direção padrão é "down". |
screenshot | fullPage?: boolean, quality?: number, viewport?: { width, height } | Faça uma captura de tela. A resolução máxima da viewport é 7680×4320. |
scrape | (nenhum) | Capture o HTML atual da página neste ponto da sequência de ações. |
executeJavascript | script: string | Execute código JavaScript na página. Os valores retornados ficam disponíveis no array actions.javascriptReturns da resposta. |
pdf | format?: string, landscape?: boolean, scale?: number | Gere um PDF. Formatos compatíveis: "A0" a "A6", "Letter", "Legal", "Tabloid", "Ledger". O padrão é "Letter". |
Observações sobre a execução de ações#
- Write requer um
clickanterior para focar o elemento de destino. - Scroll aceita um
selectoropcional para rolar um elemento específico em vez da página. - Wait aceita
milliseconds(atraso fixo) ouselector(esperar até que fique visível). - As ações são executadas sequencialmente: cada etapa é concluída antes da próxima começar.
- Ações não são compatíveis com PDFs. Se a URL for resolvida para um PDF, a requisição falhará.
Exemplos de Ações Avançadas#
Fazendo uma captura de tela:
Clicar em vários elementos:
Gerar um PDF:
Executar JavaScript (por exemplo, para extrair dados embutidos na página):
O valor de retorno de cada ação executeJavascript é armazenado no array actions.javascriptReturns da resposta.
Exemplo completo de scraping#
A solicitação abaixo combina várias opções de scraping:
Essa requisição retorna markdown, HTML, HTML bruto, links e uma captura de tela da página inteira. Ela restringe o conteúdo a <h1>, <p>, <a> e .main-content, enquanto exclui #ad e #footer, aguarda 1 segundo antes de iniciar o scraping, define um tempo limite de 15 segundos e habilita a análise de PDFs.
Consulte a referência completa da API de Scrape para mais detalhes.
Extração em JSON via formatos#
Use o objeto de formato JSON em formats para extrair dados estruturados de uma só vez:
Endpoint do agente#
Use o endpoint /v2/agent para extração autônoma de dados em várias páginas. O agente é executado de forma assíncrona: você inicia um job e depois consulta os resultados.
Agent é a referência canônica para este endpoint, incluindo rastros de execução, webhooks e a lista completa de parâmetros.
Opções do agente#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
prompt | string | (obrigatório) | Instruções em linguagem natural descrevendo quais dados extrair (máx. 10.000 caracteres). |
urls | array | — | URLs às quais o agente estará limitado. |
schema | object | — | Schema JSON para estruturar os dados extraídos. |
maxCredits | number | 2500 | Créditos máximos que o agente pode gastar. O dashboard suporta até 2.500; para limites maiores, defina isso pela API (valores acima de 2.500 são sempre cobrados como requisições pagas). |
strictConstrainToURLs | boolean | false | Quando true, o agente visita apenas as URLs fornecidas. |
model | string | "spark-2" | Modelo de IA a ser usado. Os modelos Spark 1 estão descontinuados e atualmente são direcionados para "spark-2". |
effort | string | (não definido) | Orçamento de raciocínio: "low", "medium" ou "high". Cada execução é realizada em "spark-2", portanto você pode enviar effort com ou sem model. |
Verificar status do agente#
Faça requisições periódicas para GET /v2/agent/{jobId} para verificar o progresso. O campo status da resposta será "processing", "completed" ou "failed".
Os SDKs de Python e Node também fornecem um método conveniente (firecrawl.agent()) que inicia o job e consulta o status automaticamente até a conclusão.
Rastreamento de várias páginas#
Para rastrear várias páginas, use o endpoint /v2/crawl. O rastreamento é executado de forma assíncrona e retorna um ID do job. Use o parâmetro limit para controlar quantas páginas serão rastreadas. Se omitido, o rastreamento processará até 10.000 páginas.
Resposta#
Verificar o job de rastreamento#
Use o ID do job para verificar o status do rastreamento e recuperar os resultados.
Se o conteúdo tiver mais de 10MB ou se o job de rastreamento ainda estiver em execução, a resposta pode incluir o parâmetro next, uma URL para a próxima página de resultados.
Prévia do prompt e dos parâmetros de rastreamento#
Você pode fornecer um prompt em linguagem natural para que o Firecrawl defina as configurações de rastreamento. Visualize-as primeiro:
Opções do crawler#
Ao usar o endpoint /v2/crawl, você pode configurar o comportamento do crawler com as seguintes opções.
Filtragem de caminhos#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
includePaths | array | — | Padrões regex para URLs a serem incluídas (apenas o pathname por padrão). |
excludePaths | array | — | Padrões regex para URLs a serem excluídas (apenas o pathname por padrão). |
regexOnFullURL | boolean | false | Aplica os padrões à URL completa em vez de apenas ao pathname. |
A URL inicial também é verificada em relação a includePaths. Se ela não corresponder a nenhum dos padrões, o rastreamento poderá retornar 0 páginas.
Escopo do rastreamento#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
maxDiscoveryDepth | integer | — | Profundidade máxima de links para descoberta de novas URLs. |
limit | integer | 10000 | Máximo de páginas a serem rastreadas. |
crawlEntireDomain | boolean | false | Explorar páginas irmãs (siblings) e pais (parents) para cobrir todo o domínio. |
allowExternalLinks | boolean | false | Seguir links para domínios externos. |
allowSubdomains | boolean | false | Seguir subdomínios do domínio principal. |
delay | number (s) | — | Atraso entre coletas. Definir isso força a concorrência para 1. |
Sitemap e deduplicação#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sitemap | string | "include" | "include": usar sitemap + descoberta de links. "skip": ignorar sitemap. "only": rastrear apenas URLs do sitemap. |
deduplicateSimilarURLs | boolean | true | Normaliza variantes de URL (www., https, barras finais, index.html) tratando-as como duplicadas. |
ignoreQueryParameters | boolean | false | Remove query strings antes da deduplicação (por exemplo, /page?a=1 e /page?a=2 se tornam uma única URL). |
Opções de scrape para crawl#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
scrapeOptions | object | { formats: ["markdown"] } | Configuração de scrape por página. Aceita todas as opções de scrape listadas acima. |
Exemplo de rastreamento#
Mapeamento de links de websites#
O endpoint /v2/map identifica URLs relacionadas a um determinado website.
Opções do Map#
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
search | string | — | Filtra links por correspondência de texto. |
limit | integer | 100 | Número máximo de links retornados. |
sitemap | string | "include" | "include", "skip" ou "only". |
includeSubdomains | boolean | true | Inclui subdomínios. |
Aqui está a referência da API: Documentação do endpoint Map
Adicionando o Firecrawl à lista de permissões#
Como permitir que o Firecrawl faça scraping do seu site#
- User Agent: permita
FirecrawlAgentno seu firewall ou nas suas regras de segurança. - Endereços IP: o Firecrawl não usa um conjunto fixo de IPs de saída.
Permitindo que sua aplicação faça chamadas à API do Firecrawl#
Se o seu firewall bloquear requisições de saída da sua aplicação para serviços externos, você precisa adicionar o endereço IP do servidor da API do Firecrawl à lista de permissões para que sua aplicação possa acessar a API do Firecrawl (api.firecrawl.dev):
- Endereço IP:
35.245.250.27
Adicione esse IP à lista de permissões de saída do seu firewall para que seu backend possa enviar requisições de scrape, crawl, map e agent para o Firecrawl.

