Skip to main content

Guia Avançado de Scraping

Configure opções de scraping, ações do navegador, rastreamento, map e o endpoint do agente em toda a API do Firecrawl.
12 min read

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 quando auto classificar 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").

FormatoDescrição
markdownConteúdo da página convertido para Markdown limpo.
htmlHTML processado com elementos desnecessários removidos.
rawHtmlHTML original exatamente como retornado pelo servidor.
rawBase64Corpo 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.
linksTodos os links encontrados na página.
imagesTodas as imagens encontradas na página.
summaryUm resumo gerado por um LLM do conteúdo da página.
brandingExtrai a identidade de marca (cores, fontes, tipografia, espaçamento, componentes de UI).
productExtrai 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.

FormatoOpçõesDescrição
jsonprompt?: string, schema?: objectExtrai dados estruturados usando um LLM. Forneça um schema JSON e/ou um prompt em linguagem natural (máx. 10.000 caracteres).
screenshotfullPage?: 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.
changeTrackingmodes?: ("json" | "git-diff")[], tag?: string, schema?: object, prompt?: stringRastreio de mudanças entre scrapes. Requer que "markdown" também esteja no array de formatos.
attributesselectors: [{ 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âmetroTipoPadrãoDescrição
onlyMainContentbooleantrueRetorna apenas o conteúdo principal. Defina como false para retornar a página completa.
includeTagsarraySeletores CSS a serem incluídos — tags, classes, IDs ou seletores de atributo (por exemplo, ["h1", "p", ".main-content", "[data-testid=\"main\"]"]).
excludeTagsarraySeletores CSS a serem excluídos — tags, classes, IDs ou seletores de atributo (por exemplo, ["#ad", "#footer", "[role=\"banner\"]"]).

Tempo e cache#

ParâmetroTipoPadrãoDescrição
waitForinteger (ms)0Tempo extra de espera antes do scraping, além do smart-wait. Use com moderação.
maxAgeinteger (ms)172800000Retorne 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.
timeoutinteger (ms)60000Duraçã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âmetroTipoPadrãoDescrição
parsersarray["pdf"]Controla o processamento de PDFs. Use [] para ignorar a análise e retornar base64 (1 crédito fixo).
PropriedadeTipoPadrãoDescriçã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.
maxPagesintegerLimita o número de páginas a serem analisadas.
pagesbooleanfalseTambém retorna o markdown físico por página no campo pages do documento. Sem custo adicional.
blocksbooleanfalseTambé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.
pageMarkersbooleanfalseAnota 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çãoParâmetrosDescrição
waitmilliseconds?: number, selector?: stringAguarde 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.
clickselector: string, all?: booleanClique em um elemento que corresponda ao seletor CSS. Defina all: true para clicar em todas as correspondências.
writetext: stringDigite texto no campo atualmente em foco. Primeiro, você deve focar o elemento com uma ação click.
presskey: stringPressione uma tecla do teclado (por exemplo, "Enter", "Tab", "Escape").
scrolldirection?: "up" | "down", selector?: stringRole a página ou um elemento específico. A direção padrão é "down".
screenshotfullPage?: 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.
executeJavascriptscript: stringExecute código JavaScript na página. Os valores retornados ficam disponíveis no array actions.javascriptReturns da resposta.
pdfformat?: string, landscape?: boolean, scale?: numberGere 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 click anterior para focar o elemento de destino.
  • Scroll aceita um selector opcional para rolar um elemento específico em vez da página.
  • Wait aceita milliseconds (atraso fixo) ou selector (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:

cURL

Clicar em vários elementos:

cURL

Gerar um PDF:

cURL

Executar JavaScript (por exemplo, para extrair dados embutidos na página):

cURL

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:

cURL

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âmetroTipoPadrãoDescrição
promptstring(obrigatório)Instruções em linguagem natural descrevendo quais dados extrair (máx. 10.000 caracteres).
urlsarrayURLs às quais o agente estará limitado.
schemaobjectSchema JSON para estruturar os dados extraídos.
maxCreditsnumber2500Cré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).
strictConstrainToURLsbooleanfalseQuando true, o agente visita apenas as URLs fornecidas.
modelstring"spark-2"Modelo de IA a ser usado. Os modelos Spark 1 estão descontinuados e atualmente são direcionados para "spark-2".
effortstring(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".

cURL

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.

cURL

Resposta#

Verificar o job de rastreamento#

Use o ID do job para verificar o status do rastreamento e recuperar os resultados.

cURL

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:

cURL

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âmetroTipoPadrãoDescrição
includePathsarrayPadrões regex para URLs a serem incluídas (apenas o pathname por padrão).
excludePathsarrayPadrões regex para URLs a serem excluídas (apenas o pathname por padrão).
regexOnFullURLbooleanfalseAplica os padrões à URL completa em vez de apenas ao pathname.
Warning

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âmetroTipoPadrãoDescrição
maxDiscoveryDepthintegerProfundidade máxima de links para descoberta de novas URLs.
limitinteger10000Máximo de páginas a serem rastreadas.
crawlEntireDomainbooleanfalseExplorar páginas irmãs (siblings) e pais (parents) para cobrir todo o domínio.
allowExternalLinksbooleanfalseSeguir links para domínios externos.
allowSubdomainsbooleanfalseSeguir subdomínios do domínio principal.
delaynumber (s)Atraso entre coletas. Definir isso força a concorrência para 1.

Sitemap e deduplicação#

ParâmetroTipoPadrãoDescrição
sitemapstring"include""include": usar sitemap + descoberta de links. "skip": ignorar sitemap. "only": rastrear apenas URLs do sitemap.
deduplicateSimilarURLsbooleantrueNormaliza variantes de URL (www., https, barras finais, index.html) tratando-as como duplicadas.
ignoreQueryParametersbooleanfalseRemove 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âmetroTipoPadrãoDescrição
scrapeOptionsobject{ formats: ["markdown"] }Configuração de scrape por página. Aceita todas as opções de scrape listadas acima.

Exemplo de rastreamento#

cURL

O endpoint /v2/map identifica URLs relacionadas a um determinado website.

cURL

Opções do Map#

ParâmetroTipoPadrãoDescrição
searchstringFiltra links por correspondência de texto.
limitinteger100Número máximo de links retornados.
sitemapstring"include""include", "skip" ou "only".
includeSubdomainsbooleantrueInclui 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 FirecrawlAgent no 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.