Scraping
Transforme qualquer URL em dados limpos
Firecrawl converte páginas da web em markdown, ideal para aplicações com LLMs.
- Lida com complexidades: proxies, cache, limites de taxa, conteúdo bloqueado por JS
- Lida com conteúdo dinâmico: websites dinâmicos, sites renderizados por JS, PDFs, imagens
- Gera markdown limpo, dados estruturados, capturas de tela ou HTML.
Para mais detalhes, consulte a Referência da API do endpoint Scraping.
Experimente no Playground
Teste scraping no playground interativo — sem precisar de código.
Usado para extrair o conteúdo de uma URL.
# 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",
)Uso
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",
)
# Raspar um site:
doc = firecrawl.scrape("https://firecrawl.dev", formats=["markdown", "html"])
print(doc)Para mais detalhes sobre os parâmetros, consulte a Referência da API.
PDFs e documentos: /scrape detecta automaticamente PDFs, DOCX e outros tipos de documento a partir de URLs. Passe uma URL de PDF da mesma forma que passaria a de qualquer página da web -- o Firecrawl a analisa e retorna markdown limpo. Para arquivos locais que não estejam acessíveis por URL, use /parse.
doc = firecrawl.scrape("https://example.com/report.pdf", formats=["markdown"])
print(doc.markdown)Cada scraping consome 1 crédito. Créditos adicionais são cobrados para certas opções: modo JSON custa 4 créditos adicionais por página, os formatos question e highlights custam 4 créditos adicionais por página por formato, proxy avançado custa 4 créditos adicionais por página, a redação de PII custa 4 créditos adicionais por página e o processamento de PDFs custa 1 crédito por página de PDF, e a extração de áudio ou vídeo custa 4 créditos adicionais por página.
Os SDKs retornarão o objeto de dados diretamente. O cURL retornará o payload exatamente como mostrado abaixo.
{
"success": true,
"data" : {
"markdown": "A Launch Week I chegou! [Confira nosso lançamento do Dia 2 🚀](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[💥 Ganhe 2 meses grátis...",
"html": "<!DOCTYPE html><html lang=\"en\" class=\"light\" style=\"color-scheme: light;\"><body class=\"__variable_36bd41 __variable_d7dc5d font-inter ...",
"metadata": {
"title": "Home - Firecrawl",
"description": "O Firecrawl rastreia e converte qualquer site em markdown limpo.",
"language": "en",
"keywords": "Firecrawl,Markdown,Dados,Mendable,Langchain",
"robots": "follow, index",
"ogTitle": "Firecrawl",
"ogDescription": "Transforme qualquer site em dados prontos para LLM.",
"ogUrl": "https://www.firecrawl.dev/",
"ogImage": "https://www.firecrawl.dev/og.png?123",
"ogLocaleAlternate": [],
"ogSiteName": "Firecrawl",
"sourceURL": "https://firecrawl.dev",
"statusCode": 200,
"contentType": "text/html"
}
}
}Agora você pode escolher em quais formatos deseja sua saída. Você pode especificar vários formatos de saída. Os formatos suportados são:
- Markdown (
markdown) - Resumo (
summary) - HTML (
html) - versão limpa do HTML da página - HTML bruto (
rawHtml) - HTML não modificado conforme recebido da página - Captura de tela (
screenshot, com opções comofullPage,quality,viewport) — as URLs das capturas de tela expiram após 24 horas - Links (
links) - JSON (
json) - saída estruturada - Imagens (
images) - extrair todas as URLs de imagens da página - Branding (
branding) - extrair identidade da marca e sistema de design - Produto (
product) - extrair um produto estruturado (título, preço, disponibilidade, variantes) de páginas de produto - Áudio (
audio) - extrair áudio em MP3 de URLs de vídeo compatíveis, por exemplo, YouTube (retorna uma URL assinada do GCS, expira após 1 hora) - Vídeo (
video) - extrair o vídeo com a melhor qualidade de URLs de vídeo compatíveis, por exemplo, YouTube (retorna uma URL assinada do GCS, expira após 1 hora) - Query (
query, compromptemodeopcional) - faça uma pergunta em linguagem natural sobre a página; a resposta é retornada no campoanswer
As chaves de saída corresponderão ao formato que você escolher.
Usado para extrair dados estruturados de páginas extraídas.
Extraindo produtos? Para páginas de produto, o formato product retorna campos estruturados de produto (título, preço, disponibilidade, variantes) de forma determinística — sem chamada de LLM e sem schema para definir. Use json quando precisar de campos personalizados ou para páginas que não sejam de produto.
from firecrawl import Firecrawl
from pydantic import BaseModel
app = Firecrawl(
# Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
# api_key="fc-SUA-CHAVE-API",
)
class CompanyInfo(BaseModel):
company_mission: str
supports_sso: bool
is_open_source: bool
is_in_yc: bool
result = app.scrape(
'https://firecrawl.dev',
formats=[{
"type": "json",
"schema": CompanyInfo.model_json_schema()
}],
only_main_content=False,
timeout=120000
)
print(result)Resultado:
{
"success": true,
"data": {
"json": {
"company_mission": "Rastreamento e extração de dados na web com IA",
"supports_sso": true,
"is_open_source": true,
"is_in_yc": true
},
"metadata": {
"title": "Firecrawl",
"description": "Rastreamento e extração de dados na web com IA",
"robots": "follow, index",
"ogTitle": "Firecrawl",
"ogDescription": "Rastreamento e extração de dados na web com IA",
"ogUrl": "https://firecrawl.dev/",
"ogImage": "https://firecrawl.dev/og.png",
"ogLocaleAlternate": [],
"ogSiteName": "Firecrawl"
"sourceURL": "https://firecrawl.dev/"
},
}
}Agora é possível extrair sem um esquema, bastando enviar um prompt para o endpoint. O LLM escolhe a estrutura dos dados.
from firecrawl import Firecrawl
app = Firecrawl(
# Nenhuma API key necessária para começar — adicione uma para limites de taxa mais altos:
# api_key="fc-YOUR-API-KEY",
)
result = app.scrape(
'https://firecrawl.dev',
formats=[{
"type": "json",
"prompt": "Extract the company mission from the page."
}],
only_main_content=False,
timeout=120000
)
print(result)Resultado:
{
"success": true,
"data": {
"json": {
"company_mission": "Raspagem e extração de dados na web com IA",
},
"metadata": {
"title": "Firecrawl",
"description": "Raspagem e extração de dados na web com IA",
"robots": "seguir, indexar",
"ogTitle": "Firecrawl",
"ogDescription": "Raspagem e extração de dados na web com IA",
"ogUrl": "https://firecrawl.dev/",
"ogImage": "https://firecrawl.dev/og.png",
"ogLocaleAlternate": [],
"ogSiteName": "Firecrawl",
"sourceURL": "https://firecrawl.dev/"
},
}
}Ao usar o formato json, passe um objeto dentro de formats com os seguintes parâmetros:
schema: JSON Schema para a saída estruturada.prompt: Prompt opcional para orientar a extração quando houver um schema ou quando você preferir uma orientação leve.
O formato de branding extrai informações completas sobre a identidade de marca de uma página da web, incluindo cores, fontes, tipografia, espaçamento, componentes de UI e mais. Isso é útil para análise de design systems, monitoramento de marca ou para criar ferramentas que precisam compreender a identidade visual de um site.
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',
)
result = firecrawl.scrape(
url='https://firecrawl.dev',
formats=['branding']
)
print(result['branding'])Resposta
O formato de branding retorna um objeto BrandingProfile completo com a seguinte estrutura:
{
"success": true,
"data": {
"branding": {
"colorScheme": "dark",
"logo": "https://firecrawl.dev/logo.svg",
"colors": {
"primary": "#FF6B35",
"secondary": "#004E89",
"accent": "#F77F00",
"background": "#1A1A1A",
"textPrimary": "#FFFFFF",
"textSecondary": "#B0B0B0"
},
"fonts": [
{
"family": "Inter"
},
{
"family": "Roboto Mono"
}
],
"typography": {
"fontFamilies": {
"primary": "Inter",
"heading": "Inter",
"code": "Roboto Mono"
},
"fontSizes": {
"h1": "48px",
"h2": "36px",
"h3": "24px",
"body": "16px"
},
"fontWeights": {
"regular": 400,
"medium": 500,
"bold": 700
}
},
"spacing": {
"baseUnit": 8,
"borderRadius": "8px"
},
"components": {
"buttonPrimary": {
"background": "#FF6B35",
"textColor": "#FFFFFF",
"borderRadius": "8px"
},
"buttonSecondary": {
"background": "transparent",
"textColor": "#FF6B35",
"borderColor": "#FF6B35",
"borderRadius": "8px"
}
},
"images": {
"logo": "https://firecrawl.dev/logo.svg",
"favicon": "https://firecrawl.dev/favicon.ico",
"ogImage": "https://firecrawl.dev/og-image.png"
}
}
}
}O objeto branding contém as seguintes propriedades:
colorScheme: Esquema de cores detectado ("light"ou"dark")logo: URL do logotipo principalcolors: Objeto com as cores da marca:primary,secondary,accent: Cores principais da marcabackground,textPrimary,textSecondary: Cores de UIlink,success,warning,error: Cores semânticas
fonts: Lista (array) de famílias tipográficas usadas na páginatypography: Informações detalhadas de tipografia:fontFamilies: Famílias tipográficas primária, de títulos e de códigofontSizes: Definições de tamanho para títulos e corpo do textofontWeights: Definições de espessura (leve, regular, média, negrito)lineHeights: Valores de altura de linha para diferentes tipos de texto
spacing: Informações de espaçamento e layout:baseUnit: Unidade base de espaçamento em pixelsborderRadius: Raio de borda padrãopadding,margins: Valores de espaçamento
components: Estilos de componentes de UI:buttonPrimary,buttonSecondary: Estilos de botõesinput: Estilos de campos de entrada
icons: Informações de estilo de íconesimages: Imagens da marca (logo, favicon, og:image)animations: Configurações de animação e transiçãolayout: Configuração de layout (grid, alturas de cabeçalho/rodapé)personality: Traços de personalidade da marca (tom, energia, público-alvo)
Você pode combinar o formato de branding com outros formatos para obter dados completos da página:
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',
)
result = firecrawl.scrape(
url='https://firecrawl.dev',
formats=['markdown', 'branding', 'screenshot']
)
print(result['markdown'])
print(result['branding'])
print(result['screenshot'])O formato product extrai um produto estruturado de modo determinístico — o mesmo tipo de resultado estruturado que o formato json, mas sem uma chamada de LLM nem um schema definido por você, feito especificamente para páginas de produto. Se você vinha extraindo campos de produto com um schema json, use formats: ["product"] no lugar — é mais rápido e mais barato, mas limitado a produtos.
Ele retorna um objeto product com title, brand, category, description e variants — em que cada variant inclui price, original price, availability e images — útil para monitoramento de preços, ingestão de catálogo ou ferramentas de comparação de preços.
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',
)
result = firecrawl.scrape(
url='https://example.com/products/wireless-headphones',
formats=['product']
)
print(result['product'])Resposta
O formato product retorna um objeto product com a seguinte estrutura:
{
"success": true,
"data": {
"product": {
"title": "Wireless Noise-Cancelling Headphones",
"brand": "Acme",
"category": "Electronics > Audio > Headphones",
"url": "https://example.com/products/wireless-headphones",
"description": "Over-ear wireless headphones with active noise cancellation, 30-hour battery life, and plush memory-foam ear cushions for all-day comfort.",
"variants": [
{
"id": "wireless-headphones-black",
"sku": "ACME-WH-BLACK",
"title": "Wireless Noise-Cancelling Headphones — Black",
"values": {
"color": "Black"
},
"price": {
"amount": 199.99,
"currency": "USD",
"formatted": "$199.99"
},
"sale": {
"originalPrice": {
"amount": 249.99,
"currency": "USD",
"formatted": "$249.99"
}
},
"availability": {
"inStock": true,
"text": "In Stock"
},
"images": [
{
"url": "https://example.com/images/headphones-black.jpg",
"alt": "Wireless Noise-Cancelling Headphones — Black"
}
]
}
]
}
}
}O objeto product contém as seguintes propriedades:
title: O nome do produtobrand: A marca do produto (opcional)category: A categoria do produto (opcional)url: A URL canônica do produtodescription: A descrição do produto (opcional)variants: Array de variantes do produto. Preços, disponibilidade e imagens ficam em cada variante — um produto com um único SKU ainda retorna exatamente uma variante com esses dados. Cada variante tem:id,sku,title: identificadores e nome da variante (todos opcionais)values: um mapa do nome da opção para o valor, por exemplo{ "color": "Charcoal" }(opcional)price: o objeto de preço atual (opcional):amount: O valor numérico do preçocurrency: O código da moeda, informado apenas quando a página o fornece (opcional)formatted: O preço como exibido na página (opcional)
sale: presente apenas quando a variante está com desconto (opcional). Contém:originalPrice: O preço original (antes do desconto), com a mesma estrutura deprice
availability: informações de disponibilidade, sempre presentes em uma variante:inStock: Se a variante está em estoquetext: O texto bruto de disponibilidade extraído da página (opcional)
images: array de imagens da variante, cada uma com umaurle um textoaltopcional (opcional)
O formato de produto extrai o produto de forma determinística a partir de dados estruturados na página — sem uso de LLM. Ele combina várias fontes por prioridade: JSON-LD > microdados do schema.org > RDFa > estado embutido (__NEXT_DATA__/Nuxt/Apollo/Redux/Remix) > runParams do AliExpress > dataLayer do GA4 > OpenGraph/<meta>. A combinação leva a identidade em conta, então campos de produtos diferentes nunca são mesclados. A moeda só é informada quando a página a fornece.
A extração de produtos é fail-closed: páginas ambíguas não geram nenhum produto, e fontes mais fracas, como OpenGraph, só contribuem quando há um preço. Em uma página sem produto extraível, a resposta omite o objeto product e adiciona um warning (por exemplo, “Nenhum produto encontrado...”).
Hospedagem própria: o formato product depende de um serviço dedicado de extração de produtos. No Firecrawl Cloud, ele funciona imediatamente. Se você fizer hospedagem própria, defina PRODUCT_EXTRACTION_SERVICE_URL para apontar para esse serviço — quando ela não estiver definida, solicitar o formato product retorna um aviso e nenhum produto (o mesmo padrão que os formatos de áudio/vídeo usam para esse serviço).
Combinando com outros formatos
Você pode combinar o formato de produto com outros formatos para obter dados completos da página:
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',
)
result = firecrawl.scrape(
url='https://example.com/products/wireless-headphones',
formats=['markdown', 'product']
)
print(result['markdown'])
print(result['product'])O formato audio extrai áudio de sites compatíveis (por exemplo, o YouTube) como arquivos MP3 e retorna uma URL assinada do Google Cloud Storage. Isso é útil para criar pipelines de processamento de áudio, serviços de transcrição ou ferramentas de podcast.
A extração de áudio custa 5 créditos por página (1 base + 4 adicionais).
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",
)
doc = firecrawl.scrape("https://www.youtube.com/watch?v=dQw4w9WgXcQ", formats=["audio"])
print(doc.audio) # URL GCS assinada para o arquivo MP3O formato video extrai o vídeo na melhor qualidade de sites compatíveis (como o YouTube) e retorna uma URL assinada do Google Cloud Storage. Isso é útil para criar pipelines de processamento de vídeo, ferramentas de moderação ou fluxos de trabalho de arquivamento de mídia.
A extração de vídeo custa 5 créditos por página (1 base + 4 adicionais).
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",
)
doc = firecrawl.scrape("https://www.youtube.com/watch?v=dQw4w9WgXcQ", formats=["video"])
print(doc.video) # URL assinada do GCS para o arquivo de vídeoUse o formato question para fazer uma pergunta em linguagem natural sobre a página. O Firecrawl retorna a resposta no campo answer da resposta.
O formato question custa 5 créditos por página (1 base + 4 adicionais pela chamada ao LLM).
Opções dentro do objeto de formato:
question(obrigatório paratype: "question"): a pergunta a ser respondida. Máximo de 10.000 caracteres.
Você pode combinar question com outros formatos — por exemplo, solicitar markdown e question juntos para obter o conteúdo da página e uma resposta em uma única chamada.
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",
)
doc = firecrawl.scrape(
"https://firecrawl.dev",
formats=[{"type": "question", "question": "What is Firecrawl?"}],
)
print(doc.answer)O formato question também está disponível em /search via scrapeOptions, que executa a mesma extração em cada resultado de busca.
Use o formato highlights para encontrar trechos relevantes do texto da página. O Firecrawl retorna o texto selecionado no campo highlights da resposta.
O formato highlights custa 5 créditos por página (1 base + 4 adicionais pela chamada ao LLM).
Opções dentro do objeto de formato:
query(obrigatório paratype: "highlights"): a solicitação para selecionar trechos do texto de origem. Máximo de 10.000 caracteres.
Você pode combinar highlights com outros formatos — por exemplo, solicitar markdown e highlights juntos para obter o conteúdo da página e os trechos de texto em uma única chamada.
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",
)
doc = firecrawl.scrape(
"https://firecrawl.dev",
formats=[{"type": "highlights", "query": "What is Firecrawl?"}],
)
print(doc.highlights)O formato highlights também está disponível em /search via scrapeOptions, que executa a mesma extração em cada resultado de busca.
Defina redactPII: true para ocultar informações de identificação pessoal do markdown retornado. O campo markdown contém o resultado com os dados ocultados.
Consulte Ocultação de PII para exemplos de SDK, cURL, CLI e MCP.
O Firecrawl permite executar várias ações em uma página da web antes de fazer o scraping do conteúdo. Isso é especialmente útil para interagir com conteúdo dinâmico, navegar entre páginas ou acessar conteúdo que exige interação do usuário.
Recomendamos Interact em vez de ações: nossa maneira mais recente e mais poderosa de interagir com páginas extraídas.
O Interact é executado como uma sessão de navegador com estado que permanece ativa entre chamadas, para que você possa conduzir uma página passo a passo de uma destas formas:
- Linguagem natural para fluxos flexíveis e não determinísticos. Ex.: “pesquise por ‘fones de ouvido sem fio’, filtre para 4+ estrelas abaixo de US$200 e retorne os resultados”.
- Código Playwright ou agent-browser para etapas determinísticas. Ex.:
await page.click('#export').
O Interact também oferece suporte a perfis, sessões persistentes e uma visualização ao vivo incorporável do navegador (com um modo interativo em que os usuários finais podem controlar o navegador por conta própria).
Veja um exemplo de como usar ações para acessar google.com, pesquisar por Firecrawl, clicar no primeiro resultado e fazer uma captura de tela.
É importante, quase sempre, usar a ação wait antes/depois de executar outras ações para dar tempo suficiente para a página carregar.
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",
)
doc = firecrawl.scrape(
url="https://example.com/login",
formats=["markdown"],
actions=[
{"type": "write", "text": "[email protected]"},
{"type": "press", "key": "Tab"},
{"type": "write", "text": "secret"},
{"type": "click", "selector": 'button[type="submit"]'},
{"type": "wait", "milliseconds": 1500},
{"type": "screenshot", "full_page": True},
],
)
print(doc.markdown, doc.screenshot){
"success": true,
"data": {
"markdown": "Nossa primeira Launch Week chegou ao fim! [Confira o recap 🚀](blog/firecrawl-launch-week-1-recap)...",
"actions": {
"screenshots": [
"https://alttmdsdujxrfnakrkyi.supabase.co/storage/v1/object/public/media/screenshot-75ef2d87-31e0-4349-a478-fb432a29e241.png"
],
"scrapes": [
{
"url": "https://www.firecrawl.dev/",
"html": "<html><body><h1>Firecrawl</h1></body></html>"
}
]
},
"metadata": {
"title": "Home - Firecrawl",
"description": "O Firecrawl rastreia e converte qualquer site em Markdown limpo.",
"language": "en",
"keywords": "Firecrawl,Markdown,Dados,Mendable,LangChain",
"robots": "index, follow",
"ogTitle": "Firecrawl",
"ogDescription": "Transforme qualquer site em dados prontos para LLMs.",
"ogUrl": "https://www.firecrawl.dev/",
"ogImage": "https://www.firecrawl.dev/og.png?123",
"ogLocaleAlternate": [],
"ogSiteName": "Firecrawl"
"sourceURL": "http://google.com",
"statusCode": 200
}
}
}Para fluxos de trabalho que exigem um controle mais avançado do navegador após o scraping, como sessões autenticadas, navegação em várias etapas ou visualização em tempo real da página, recomendamos usar o Interact em vez de estender o array de ações.
Especifique o país e os idiomas preferidos para obter conteúdo relevante com base no seu local de destino e nas suas preferências de idioma.
Quando você define as configurações de localização, o Firecrawl usará um proxy apropriado, se disponível, e emulará as configurações correspondentes de idioma e fuso horário. Por padrão, a localização é definida como “US” se não for especificada.
Uso
Para usar as configurações de localização e idioma, inclua o objeto location no corpo da sua requisição com as seguintes propriedades:
country: Código de país ISO 3166-1 alpha-2 (por exemplo, ‘US’, ‘AU’, ‘DE’, ‘JP’). O padrão é ‘US’.languages: Uma lista (array) de idiomas e localidades preferidos para a requisição, em ordem de prioridade. O padrão é o idioma da localização especificada.
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",
)
doc = firecrawl.scrape('https://example.com',
formats=['markdown'],
location={
'country': 'US',
'languages': ['en']
}
)
print(doc)Para mais detalhes sobre as localizações compatíveis, consulte a documentação de proxies.
Para acelerar as requisições, o Firecrawl retorna resultados do cache por padrão quando há uma cópia recente disponível.
- Janela de frescor padrão:
maxAge = 172800000ms (2 dias). Se a página em cache for mais recente do que isso, ela é retornada instantaneamente; caso contrário, a página passa por scraping novamente e então armazenada em cache. - Desempenho: Pode acelerar os scrapings em até 5x quando os dados não precisam estar ultra recentes.
- Sempre buscar conteúdo novo: Defina
maxAgecomo0. Observe que isso ignora totalmente o cache, então toda requisição passa por todo o pipeline de scraping, o que significa que a requisição levará mais tempo para ser concluída e terá maior chance de falhar. Use ummaxAgediferente de zero se a atualização em toda requisição não for crítica. - Evitar armazenamento: Defina
storeInCachecomofalsese você não quiser que o Firecrawl armazene em cache os resultados desta requisição. - Consulta somente no cache: Defina
minAgepara fazer uma consulta somente no cache sem acionar um novo scraping. O valor está em milissegundos e especifica a idade mínima que os dados em cache devem ter. Se nenhum dado em cache for encontrado, um404com o código de erroSCRAPE_NO_CACHED_DATAé retornado. DefinaminAgecomo1para aceitar qualquer dado em cache, independentemente da idade. - Rastreio de mudanças: Requisições que incluem
changeTrackingignoram o cache, entãomaxAgeé desconsiderado. - Créditos: Resultados em cache ainda custam 1 crédito por página. O cache melhora a velocidade, não o uso de créditos.
Exemplo (forçar conteúdo novo):
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key='fc-YOUR_API_KEY')
doc = firecrawl.scrape(url='https://example.com', max_age=0, formats=['markdown'])
print(doc)Exemplo (usar uma janela de cache de 10 minutos):
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key='fc-YOUR_API_KEY')
doc = firecrawl.scrape(url='https://example.com', max_age=600000, formats=['markdown', 'html'])
print(doc)Agora é possível fazer scraping em lote de várias URLs ao mesmo tempo. A função recebe as URLs iniciais e parâmetros opcionais como argumentos. O parâmetro params permite definir opções adicionais para a tarefa de scraping em lote, como os formatos de saída.
Funciona de forma muito semelhante ao endpoint /crawl. Ele cria um job de raspagem em lote e retorna um ID do job para você acompanhar o status da raspagem em lote.
O SDK oferece 2 métodos: síncrono e assíncrono. O método síncrono retorna os resultados do job de raspagem em lote, enquanto o método assíncrono retorna um ID do job que você pode usar para verificar o status da raspagem em lote.
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-SUA-API-KEY")
job = firecrawl.batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
], formats=["markdown"], poll_interval=2, wait_timeout=120)
print(job)Se você estiver usando os métodos síncronos dos SDKs, eles retornarão os resultados do job de scraping em lote. Caso contrário, será retornado um ID de job que você pode usar para verificar o status do scraping em lote.
{
"status": "completed",
"total": 36,
"completed": 36,
"creditsUsed": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
"data": [
{
"markdown": "[Página inicial da documentação do Firecrawl!...",
"html": "<!DOCTYPE html><html lang=\"en\" class=\"js-focus-visible lg:[--scroll-mt:9.5rem]\" data-js-focus-visible=\"\">...",
"metadata": {
"title": "Crie um ‘chat com o site’ usando Groq Llama 3 | Firecrawl",
"language": "en",
"sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
"description": "Aprenda a usar o Firecrawl, o Groq Llama 3 e o LangChain para criar um bot de ‘chat com o seu site’."
"ogLocaleAlternate": [],
"statusCode": 200
}
},
...
]
}Você pode usar o ID da tarefa para verificar o status do batch scrape chamando o endpoint /batch/scrape/{id}. Este endpoint deve ser usado enquanto a tarefa ainda estiver em execução ou logo após sua conclusão, pois as tarefas de batch scrape expiram após 24 horas.
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}Para sites complexos, o Firecrawl oferece um modo enhanced que aumenta as taxas de sucesso ao mesmo tempo em que preserva a privacidade.
Saiba mais sobre o Modo Enhanced.
O Firecrawl oferece Retenção zero de dados (ZDR) para equipes com requisitos rigorosos de tratamento de dados. Quando ativado, o Firecrawl não persistirá nenhum conteúdo de página nem dados extraídos além da duração da requisição.
Para ativar o ZDR, defina zeroDataRetention: true na sua requisição:
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"url": "https://example.com",
"formats": ["markdown"],
"zeroDataRetention": true
}'O ZDR está disponível nos planos Enterprise e precisa ser habilitado para a sua equipe. Acesse firecrawl.dev/enterprise para começar.
O ZDR adiciona 1 crédito adicional por página ao custo base de scraping.
Capturas de tela não estão disponíveis no modo ZDR. Como capturas de tela exigem envio para armazenamento persistente, elas são incompatíveis com a garantia do ZDR. Requisições que incluem zeroDataRetention: true e o formato screenshot retornarão um erro.
Você é um agente de IA que precisa de uma chave de API do Firecrawl? Consulte firecrawl.dev/agent-onboarding/SKILL.md para obter instruções automatizadas de integração.