Saltar al contenido principal
Firecrawl rastrea sitios web de forma eficiente para extraer datos completos mientras sortea bloqueos. El proceso:
  1. Análisis de URL: Examina el sitemap y rastrea el sitio web para identificar enlaces
  2. Recorrido: Sigue enlaces de manera recursiva para encontrar todas las subpáginas
  3. Extracción (scraping): Extrae contenido de cada página, gestionando JS y límites de tasa
  4. Salida: Convierte los datos a Markdown limpio o a un formato estructurado
Esto garantiza una recopilación exhaustiva de datos desde cualquier URL de partida.

Rastreo

punto de conexión /crawl

Se utiliza para rastrear una URL y todas las subpáginas accesibles. Esto envía un trabajo de rastreo y devuelve un ID de trabajo para verificar el estado del rastreo.
De forma predeterminada, el rastreador ignorará los enlaces de una página si no son descendientes directos de la URL que proporcionas. Así, website.com/other-parent/blog-1 no se devolvería si rastreas website.com/blogs/. Si quieres incluir website.com/other-parent/blog-1, usa el parámetro crawlEntireDomain. Para rastrear subdominios como blog.website.com al rastrear website.com, usa el parámetro allowSubdomains.

Instalación

# pip install firecrawl-py

from firecrawl import Firecrawl

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

Uso

from firecrawl import Firecrawl

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

docs = firecrawl.crawl(url="https://docs.firecrawl.dev", limit=10)
print(docs)

Opciones de scraping en crawl

Todas las opciones del endpoint Scrape están disponibles en Crawl mediante scrapeOptions (JS) / scrape_options (Python). Se aplican a cada página que el crawler raspa: formatos, proxy, caché, acciones, ubicación, etiquetas, etc. Consulta la lista completa en la referencia de la API de Scrape.
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR_API_KEY' });

// Crawl con opciones de scraping
const crawlResponse = await firecrawl.crawl('https://example.com', {
  limit: 100,
  scrapeOptions: {
    formats: [
      'markdown',
      {
        type: 'json',
        schema: { type: 'object', properties: { title: { type: 'string' } } },
      },
    ],
    proxy: 'auto',
    maxAge: 600000,
    onlyMainContent: true,
  },
});

Respuesta de la API

Si usas cURL o el método starter, se devolverá un ID para verificar el estado del rastreo.
Si usas el SDK, consulta los métodos a continuación para conocer el comportamiento de waiter vs starter.
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/crawl/123-456-789"
}

Consultar trabajo de rastreo

Se usa para verificar el estado de un trabajo de rastreo y obtener su resultado.
Este endpoint solo funciona para rastreos que están en progreso o que se han completado recientemente.
estado = firecrawl.get_crawl_status("<crawl-id>")
print(estado)

Manejo de respuestas

La respuesta varía según el estado del rastreo. Para respuestas incompletas o de gran tamaño que superen los 10 MB, se proporciona un parámetro de URL next. Debes solicitar esta URL para obtener los siguientes 10 MB de datos. Si el parámetro next no está presente, indica el final de los datos del rastreo. El parámetro skip define el número máximo de resultados incluidos en cada bloque de resultados devueltos.
Los parámetros skip y next solo son relevantes cuando se consume la API directamente. Si usas el SDK, nos encargamos de esto por ti y devolveremos todos los resultados de una vez.
{
  "status": "en proceso de scraping",
  "total": 36,
  "completed": 10,
  "creditsUsed": 10,
  "expiresAt": "2024-00-00T00:00:00.000Z",
  "next": "https://api.firecrawl.dev/v2/crawl/123-456-789?skip=10",
  "data": [
    {
      "markdown": "[Página principal de la documentación de 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": "Crea un 'chat con el sitio web' usando Groq Llama 3 | Firecrawl",
        "language": "en",
        "sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
        "description": "Aprende a usar Firecrawl, Groq Llama 3 y LangChain para crear un bot de 'chat con tu sitio web'."
        "ogLocaleAlternate": [],
        "statusCode": 200
      }
    },
    ...
  ]
}

Métodos del SDK

Hay dos maneras de usar el SDK:
  1. Rastrear y esperar (crawl):
    • Espera a que el rastreo termine y devuelve la respuesta completa
    • Gestiona la paginación automáticamente
    • Recomendado para la mayoría de los casos de uso
from firecrawl import Firecrawl, ScrapeOptions

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

# Explora un sitio web:
crawl_status = firecrawl.crawl(
  'https://firecrawl.dev', 
  limit=100, 
  scrape_options=ScrapeOptions(formats=['markdown', 'html']),
  poll_interval=30
)
print(crawl_status)
La respuesta incluye el estado del rastreo y todos los datos extraídos:
success=True
status='completed'
completed=100
total=100
creditsUsed=100
expiresAt=datetime.datetime(2025, 4, 23, 19, 21, 17, tzinfo=TzInfo(UTC))
next=None
data=[
  Document(
    markdown='[Día 7 - Semana de lanzamiento III. Día de integraciones (del 14 al 20 de abril)](...',
    metadata={
      'title': '15 proyectos de web scraping con Python: de principiante a avanzado',
      ...
      'scrapeId': '97dcf796-c09b-43c9-b4f7-868a7a5af722',
      'sourceURL': 'https://www.firecrawl.dev/blog/python-web-scraping-projects',
      'url': 'https://www.firecrawl.dev/blog/python-web-scraping-projects',
      'statusCode': 200
    }
  ),
  ...
]
  1. Iniciar y luego verificar el estado (startCrawl/start_crawl):
    • Devuelve de inmediato un ID de rastreo
    • Permite verificar el estado manualmente
    • Útil para rastreos de larga duración o lógica de sondeo personalizada
from firecrawl import Firecrawl

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

job = firecrawl.start_crawl(url="https://docs.firecrawl.dev", limit=10)
print(job)

# Comprueba el estado del rastreo
status = firecrawl.get_crawl_status(job.id)
print(status)

WebSocket de rastreo

El método de Firecrawl basado en WebSocket, Crawl URL and Watch, permite la extracción y el monitoreo de datos en tiempo real. Inicia un rastreo con una URL y personalízalo con opciones como límites de páginas, dominios permitidos y formatos de salida; ideal para necesidades de procesamiento de datos inmediatas.
import asyncio
from firecrawl import AsyncFirecrawl

async def main():
    firecrawl = AsyncFirecrawl(api_key="fc-YOUR-API-KEY")

    # Iniciar un rastreo primero
    started = await firecrawl.start_crawl("https://firecrawl.dev", limit=5)

    # Monitorear actualizaciones (snapshots) hasta estado terminal
    async for snapshot in firecrawl.watcher(started.id, kind="crawl", poll_interval=2, timeout=120):
        if snapshot.status == "completed":
            print("COMPLETADO", snapshot.status)
            for doc in snapshot.data:
                print("DOC", doc.metadata.source_url if doc.metadata else None)
        elif snapshot.status == "failed":
            print("ERROR", snapshot.status)
        else:
            print("ESTADO", snapshot.status, snapshot.completed, "/", snapshot.total)

asyncio.run(main())

Webhook de rastreo

Puedes configurar webhooks para recibir notificaciones en tiempo real a medida que avanza el rastreo. Esto te permite procesar las páginas conforme se van extrayendo, en lugar de esperar a que finalice todo el rastreo.
cURL
curl -X POST https://api.firecrawl.dev/v2/crawl \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer <YOUR_API_KEY>' \
    -d '{
      "url": "https://docs.firecrawl.dev",
      "limit": 100,
      "webhook": {
        "url": "https://tu-dominio.com/webhook",
        "metadata": {
          "any_key": "any_value"
        },
        "events": ["started", "page", "completed"]
      }
    }'
Para una documentación completa sobre webhooks, incluidos los tipos de eventos, la estructura del payload y ejemplos de implementación, consulta la documentación de webhooks.

Referencia rápida

Tipos de eventos:
  • crawl.started - Cuando se inicia el rastreo
  • crawl.page - Por cada página extraída correctamente
  • crawl.completed - Cuando finaliza el rastreo
  • crawl.failed - Si ocurre un error durante el rastreo
Carga útil básica:
{
  "success": true,
  "type": "crawl.page",
  "id": "crawl-job-id",
  "data": [...], // Datos de página para eventos 'page'
  "metadata": {}, // Tus metadatos personalizados
  "error": null
}
Para obtener información detallada sobre la configuración de webhooks, las prácticas recomendadas de seguridad y la resolución de problemas, visita la documentación sobre Webhooks.