Coleta em lote de várias URLs

Agora você pode coletar em lote várias URLs simultaneamente. A função recebe as URLs iniciais e parâmetros opcionais como argumentos. O argumento params permite especificar opções adicionais para a tarefa de coleta em lote, como os formatos de saída.

Como funciona

Funciona de forma muito semelhante ao endpoint /crawl. Você pode iniciar o lote e aguardar a conclusão ou iniciá-lo e lidar com a conclusão por conta própria.
  • batchScrape (JS) / batch_scrape (Python): inicia um job em lote e aguarda a conclusão, retornando os resultados.
  • startBatchScrape (JS) / start_batch_scrape (Python): inicia um job em lote e retorna o ID do job para que você possa fazer polling ou usar webhooks.

Uso

from firecrawl import Firecrawl

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

start = firecrawl.start_batch_scrape([
    "https://firecrawl.dev",
    "https://docs.firecrawl.dev",
], formats=["markdown"])  # retorna o ID

job = firecrawl.batch_scrape([
    "https://firecrawl.dev",
    "https://docs.firecrawl.dev",
], formats=["markdown"], poll_interval=2, wait_timeout=120)

print(job.status, job.completed, job.total)

Resposta

  • Chamar batchScrape/batch_scrape retorna os resultados completos quando o lote for concluído.
Concluído
{
  "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![logo claro](https://mintlify.s3-us-west-1.amazonaws.com/firecrawl/logo/light.svg)!...",
      "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
      }
    },
    ...
  ]
}
`
  • Chamar startBatchScrape/start_batch_scrape retorna um ID de tarefa que você pode acompanhar por getBatchScrapeStatus/get_batch_scrape_status, pelo endpoint da API /batch/scrape/{id} ou por webhooks. Este endpoint se destina a verificações em andamento ou imediatamente após a conclusão, pois tarefas em lote expiram após 24 horas.
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}

Coleta em lote com extração estruturada

Você também pode usar o endpoint de coleta em lote para extrair dados estruturados das páginas. Isso é útil se você quiser obter os mesmos dados estruturados de uma lista de URLs.
from firecrawl import Firecrawl

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

# Raspar vários sites:
batch_scrape_result = firecrawl.batch_scrape(
    ['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'], 
    formats=[{
        'type': 'json',
        'prompt': 'Extraia o título e a descrição da página.',
        'schema': {
            'type': 'object',
            'properties': {
                'title': {'type': 'string'},
                'description': {'type': 'string'}
            },
            'required': ['title', 'description']
        }
    }]
)
print(batch_scrape_result)

# Ou você pode usar o método start:
batch_scrape_job = firecrawl.start_batch_scrape(
    ['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'], 
    formats=[{
        'type': 'json',
        'prompt': 'Extraia o título e a descrição da página.',
        'schema': {
            'type': 'object',
            'properties': {
                'title': {'type': 'string'},
                'description': {'type': 'string'}
            },
            'required': ['title', 'description']
        }
    }]
)
print(batch_scrape_job)

# Em seguida, você pode usar o ID do job para verificar o status da raspagem em lote:
batch_scrape_status = firecrawl.get_batch_scrape_status(batch_scrape_job.id)
print(batch_scrape_status)

Resposta

  • batchScrape/batch_scrape retorna os resultados completos:
Concluído
{
  "status": "concluído",
  "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": [
    {
      "json": {
        "title": "Crie um 'chat com o site' usando Groq Llama 3 | Firecrawl",
        "description": "Aprenda a usar Firecrawl, Groq Llama 3 e LangChain para criar um bot de 'chat com o seu site'."
      }
    },
    ...
  ]
}
  • startBatchScrape/start_batch_scrape retorna um ID de tarefa:
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}

Extração em lote com webhooks

Você pode configurar webhooks para receber notificações em tempo real à medida que cada URL do seu lote é raspada. Isso permite processar os resultados imediatamente, em vez de esperar a conclusão de todo o lote.
cURL
curl -X POST https://api.firecrawl.dev/v2/batch/scrape \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "urls": [
        "https://example.com/page1",
        "https://example.com/page2",
        "https://example.com/page3"
      ],
      "webhook": {
        "url": "https://your-domain.com/webhook",
        "metadata": {
          "any_key": "any_value"
        },
        "events": ["iniciado", "página", "concluído"]
      }
    }'
Para documentação completa sobre webhooks, incluindo tipos de eventos, estrutura do payload e exemplos de implementação, consulte a documentação de webhooks.

Referência rápida

Tipos de eventos:
  • batch_scrape.started - Quando a raspagem em lote é iniciada
  • batch_scrape.page - Para cada URL raspada com sucesso
  • batch_scrape.completed - Quando todas as URLs forem processadas
  • batch_scrape.failed - Se a raspagem em lote encontrar um erro
Payload básico:
{
  "success": true,
  "type": "batch_scrape.page",
  "id": "batch-job-id",
  "data": [...], // Dados da página para eventos "page"
  "metadata": {}, // Metadados personalizados
  "error": null
}
Para ver configurações detalhadas de webhooks, práticas recomendadas de segurança e dicas de solução de problemas, acesse a documentação de webhooks.