O endpoint /extract simplifica a coleta de dados estruturados a partir de qualquer quantidade de URLs ou até de domínios inteiros. Forneça uma lista de URLs, opcionalmente com curingas (por exemplo, example.com/*), e um prompt ou um esquema descrevendo as informações desejadas. O Firecrawl se encarrega de rastrear, analisar e consolidar conjuntos de dados, grandes ou pequenos.
O Extract tem cobrança diferente dos demais endpoints. Consulte os preços do Extract para mais detalhes.

Usando /extract

Você pode extrair dados estruturados de uma ou várias URLs, incluindo curingas:
  • Página única
    Exemplo: https://firecrawl.dev/some-page
  • Múltiplas páginas / Domínio completo
    Exemplo: https://firecrawl.dev/*
Ao usar /*, o Firecrawl rastreia e processa automaticamente todas as URLs que conseguir descobrir nesse domínio e, em seguida, extrai os dados solicitados. Este recurso é experimental; envie um e-mail para help@firecrawl.com se tiver problemas.

Exemplo de uso

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

schema = {
    "type": "object",
    "properties": {"description": {"type": "string"}},
    "required": ["description"],
}

res = firecrawl.extract(
    urls=["https://docs.firecrawl.dev"],
    prompt="Extrair a descrição da página",
    schema=schema,
)

print(res.data["description"])
Parâmetros principais:
  • urls: Uma lista com um ou mais URLs. Suporta curingas (/*) para uma varredura mais ampla.
  • prompt (Opcional, exceto se não houver schema): Um prompt em linguagem natural descrevendo os dados desejados ou como você quer que esses dados sejam estruturados.
  • schema (Opcional, exceto se não houver prompt): Uma estrutura mais rígida caso você já conheça o layout JSON.
  • enableWebSearch (Opcional): Quando true, a extração pode seguir links fora do domínio especificado.
Consulte a referência da API para mais detalhes.

Resposta (SDKs)

JSON
{
  "success": true,
  "data": {
    "company_mission": "A Firecrawl é a maneira mais fácil de extrair dados da web. Desenvolvedores a utilizam para, de forma confiável, converter URLs em markdown pronto para LLM ou em dados estruturados com uma única chamada de API.",
    "supports_sso": false,
    "is_open_source": true,
    "is_in_yc": true
  }
}

Status do job e conclusão

Ao enviar um job de extração — diretamente pela API ou pelos métodos de inicialização — você receberá um ID de job. Você pode usar esse ID para:
  • Obter o status do job: Envie uma solicitação para o endpoint /extract/ para ver se o job ainda está em execução ou se foi concluído.
  • Aguardar resultados: Se você usar o método padrão extract (Python/Node), o SDK aguarda e retorna os resultados finais.
  • Iniciar e depois consultar: Se você usar os métodos de início — start_extract (Python) ou startExtract (Node) — o SDK retorna um ID de job imediatamente. Use get_extract_status (Python) ou getExtractStatus (Node) para verificar o progresso.
Este endpoint só funciona para jobs em andamento ou concluídos recentemente (nas últimas 24 horas).
Abaixo estão exemplos de código para verificar o status de um job de extração usando Python, Node.js e cURL:
from firecrawl import Firecrawl

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

# Primeiro, inicie uma tarefa de extração
extract_job = firecrawl.start_extract([
    'https://docs.firecrawl.dev/*', 
    'https://firecrawl.dev/'
], prompt="Extraia a missão da empresa e os recursos destas páginas.")

# Obtenha o status da tarefa de extração
job_status = firecrawl.get_extract_status(extract_job.id)

print(job_status)
# Exemplo de saída:
# id=None
# status='concluído'
# expires_at=datetime.datetime(...)
# success=True
# dados=[{ ... }]
# error=None
# aviso=None
# fontes=None

Estados possíveis

  • completed: A extração foi concluída com sucesso.
  • processing: O Firecrawl ainda está processando sua solicitação.
  • failed: Ocorreu um erro; os dados não foram totalmente extraídos.
  • cancelled: A tarefa foi cancelada pelo usuário.

Exemplo pendente

JSON
{
  "success": true,
  "data": [],
  "status": "processing",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}

Exemplo concluído

JSON
{
  "success": true,
  "data": {
      "company_mission": "A Firecrawl é a maneira mais simples de extrair dados da web. Desenvolvedores a utilizam para converter URLs, com confiabilidade, em markdown pronto para LLM ou dados estruturados com uma única chamada à API.",
      "supports_sso": false,
      "is_open_source": true,
      "is_in_yc": true
    },
  "status": "concluído",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}

Extraindo sem um esquema

Se você preferir não definir uma estrutura rígida, pode simplesmente fornecer um prompt. O modelo subjacente escolherá uma estrutura para você, o que pode ser útil para solicitações mais exploratórias ou flexíveis.
from firecrawl import Firecrawl

# Inicialize o FirecrawlApp com sua chave de API
firecrawl = Firecrawl(api_key='your_api_key')

data = firecrawl.extract([
  'https://docs.firecrawl.dev/',
  'https://firecrawl.dev/'
], prompt="Extraia a missão da Firecrawl da página.")
print(data)
JSON
{
  "success": true,
  "data": {
    "company_mission": "Transforme sites em dados prontos para LLMs. Impulsione seus apps de IA com dados limpos coletados de qualquer site."
  }
}
Definir enableWebSearch = true na sua requisição expandirá o crawl além do conjunto de URLs fornecido. Isso pode capturar informações de suporte ou relacionadas a partir de páginas linkadas. Veja um exemplo que extrai informações sobre dash cams, enriquecendo os resultados com dados de páginas relacionadas:
from firecrawl import Firecrawl

# Initialize the FirecrawlApp with your API key

firecrawl = Firecrawl(api_key='your_api_key')

data = firecrawl.extract([
'https://nextbase.com/dash-cams/622gw-dash-cam'
], prompt="Extract details about the best dash cams including prices, features, pros/cons and reviews.", enable_web_search=True)
print(data)
JSON
{
  "success": true,
  "data": {
    "dash_cams": [
      {
        "name": "Nextbase 622GW",
        "price": "$399.99",
        "features": [
          "4K video recording",
          "Image stabilization",
          "Alexa built-in",
          "What3Words integration"
        ],
        /* Information below enriched with other websites like 
        https://www.techradar.com/best/best-dash-cam found 
        via enableWebSearch parameter */
        "pros": [
          "Excellent video quality",
          "Great night vision",
          "Built-in GPS"
        ],
        "cons": ["Premium price point", "App can be finicky"]
      }
    ],
  }

A resposta inclui contexto adicional obtido de páginas relacionadas, oferecendo informações mais completas e precisas.

Extração sem URLs

O endpoint /extract agora permite extrair dados estruturados usando um prompt, sem a necessidade de URLs específicas. Isso é útil para pesquisa ou quando as URLs exatas são desconhecidas. Atualmente em alpha.
from pydantic import BaseModel

class ExtractSchema(BaseModel):
    company_mission: str


# Defina o prompt para extração
prompt = 'Extraia a missão da empresa do site da Firecrawl.'

# Realize a extração
scrape_result = firecrawl.extract(prompt=prompt, schema=ExtractSchema)

print(scrape_result)

Limitações Conhecidas (Beta)

  1. Cobertura de Sites em Grande Escala
    A cobertura completa de sites muito grandes (por exemplo, “todos os produtos da Amazon”) em uma única requisição ainda não é suportada.
  2. Consultas Lógicas Complexas
    Pedidos como “encontrar todas as postagens de 2025” podem não retornar de forma confiável todos os dados esperados. Capacidades de consulta mais avançadas estão em desenvolvimento.
  3. Inconsistências Ocasionais
    Os resultados podem variar entre execuções, especialmente em sites muito grandes ou dinâmicos. Geralmente os detalhes essenciais são capturados, mas alguma variação é possível.
  4. Estado Beta
    Como o endpoint /extract ainda está em Beta, recursos e desempenho continuarão evoluindo. Agradecemos relatos de bugs e feedback para nos ajudar a melhorar.

Usando o FIRE-1

O FIRE-1 é um agente de IA que amplia as capacidades de scraping do Firecrawl. Ele pode controlar ações do navegador e navegar por estruturas complexas de sites para viabilizar a extração de dados além do scraping tradicional. Você pode usar o agente FIRE-1 com o endpoint /extract para tarefas de extração complexas que exigem navegar por várias páginas ou interagir com elementos. Exemplo (cURL):
curl -X POST https://api.firecrawl.dev/v2/extract \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer SUA_CHAVE_DE_API' \
    -d '{
      "urls": ["https://example-forum.com/topic/123"],
      "prompt": "Extraia todos os comentários de usuários deste tópico do fórum.",
      "schema": {
        "type": "object",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "author": {"type": "string"},
                "comment_text": {"type": "string"}
              },
              "required": ["author", "comment_text"]
            }
          }
        },
        "required": ["comments"]
      },
      "agent": {
        "model": "FIRE-1"
      }
    }'
O FIRE-1 já está disponível e em versão de prévia.

Cobrança e acompanhamento de uso

Você pode conferir os preços do endpoint /extract na página de preços do Extract e acompanhar o uso pela página do Extract no dashboard. Tem algum feedback ou precisa de ajuda? Envie um e-mail para help@firecrawl.com.