El punto de conexión /extract simplifica la recopilación de datos estructurados desde cualquier número de URL o dominios completos. Proporciona una lista de URL, opcionalmente con comodines (p. ej., example.com/*), y un prompt o un esquema que describa la información que necesitas. Firecrawl se encarga del rastreo, el análisis y la compilación de conjuntos de datos, grandes o pequeños.
Extract se factura de forma diferente a otros puntos de conexión. Consulta los precios de Extract para más detalles.

Uso de /extract

Puedes extraer datos estructurados de una o varias URL, incluidos comodines:
  • Página única
    Ejemplo: https://firecrawl.dev/some-page
  • Múltiples páginas / Dominio completo
    Ejemplo: https://firecrawl.dev/*
Cuando usas /*, Firecrawl rastreará y analizará automáticamente todas las URL que pueda descubrir en ese dominio y luego extraerá los datos solicitados. Esta función es experimental; escribe a help@firecrawl.com si tienes problemas.

Ejemplo 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="Extrae la descripción de la página",
    schema=schema,
)

print(res.data["description"])
Parámetros clave:
  • urls: Una lista de una o más URL. Admite comodines (/*) para un rastreo más amplio.
  • prompt (Opcional salvo que no haya schema): Un prompt en lenguaje natural que describe los datos que quieres o especifica cómo quieres estructurarlos.
  • schema (Opcional salvo que no haya prompt): Una estructura más rígida si ya conoces el esquema JSON.
  • enableWebSearch (Opcional): Si es true, la extracción puede seguir enlaces fuera del dominio especificado.
Consulta la Referencia de la API para más detalles.

Respuesta (SDKs)

JSON
{
  "success": true,
  "data": {
    "company_mission": "Firecrawl es la forma más sencilla de extraer datos de la web. Los desarrolladores nos utilizan para convertir de forma confiable URLs en markdown apto para LLM o en datos estructurados con una sola llamada a la API.",
    "supports_sso": false,
    "is_open_source": true,
    "is_in_yc": true
  }
}

Estado del trabajo y finalización

Cuando envías un trabajo de extracción —ya sea directamente mediante la API o a través de los métodos de inicio— recibirás un ID de trabajo. Puedes usar este ID para:
  • Obtener el estado del trabajo: Envía una solicitud al punto de conexión /extract/ para ver si el trabajo sigue en ejecución o ya finalizó.
  • Esperar los resultados: Si usas el método predeterminado extract (Python/Node), el SDK espera y devuelve los resultados finales.
  • Iniciar y luego consultar: Si usas los métodos de inicio —start_extract (Python) o startExtract (Node)— el SDK devuelve un ID de trabajo de inmediato. Usa get_extract_status (Python) o getExtractStatus (Node) para consultar el progreso.
Este punto de conexión solo funciona para trabajos en curso o completados recientemente (dentro de 24 horas).
A continuación, se muestran ejemplos de código para comprobar el estado de un trabajo de extracción usando Python, Node.js y cURL:
from firecrawl import Firecrawl

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

# Start an extraction job first
extract_job = firecrawl.start_extract([
    'https://docs.firecrawl.dev/*', 
    'https://firecrawl.dev/'
], prompt="Extract the company mission and features from these pages.")

# Get the status of the extraction job
job_status = firecrawl.get_extract_status(extract_job.id)

print(job_status)
# Example output:
# id=None
# status='completed'
# expires_at=datetime.datetime(...)
# success=True
# data=[{ ... }]
# error=None
# warning=None
# sources=None

Posibles estados

  • completed: La extracción se completó correctamente.
  • processing: Firecrawl aún está procesando tu solicitud.
  • failed: Ocurrió un error; los datos no se extrajeron por completo.
  • cancelled: El trabajo fue cancelado por el usuario.

Ejemplo pendiente

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

Ejemplo completado

JSON
{
  "success": true,
  "data": {
      "company_mission": "Firecrawl es la forma más sencilla de extraer datos de la web. Los desarrolladores nos utilizan para convertir, de forma confiable, URLs en markdown listo para LLM o en datos estructurados con una sola llamada a la API.",
      "supports_sso": false,
      "is_open_source": true,
      "is_in_yc": true
    },
  "status": "completado"
  "expiresAt": "2025-01-08T20:58:12.000Z"
}

Extracción sin esquema

Si prefieres no definir una estructura estricta, puedes simplemente proporcionar un prompt. El modelo subyacente elegirá una estructura por ti, lo que puede ser útil para solicitudes más exploratorias o flexibles.
from firecrawl import Firecrawl

# Inicializa FirecrawlApp con tu clave de API
firecrawl = Firecrawl(api_key='your_api_key')

data = firecrawl.extract([
  'https://docs.firecrawl.dev/',
  'https://firecrawl.dev/'
], prompt="Extrae la misión de Firecrawl de la página.")
print(data)
JSON
{
  "success": true,
  "data": {
    "company_mission": "Convierte sitios web en datos listos para LLM. Impulsa tus aplicaciones de IA con datos limpios extraídos de cualquier sitio web."
  }
}
Establecer enableWebSearch = true en tu solicitud ampliará el rastreo más allá del conjunto de URL proporcionado. Esto puede capturar información de respaldo o relacionada de páginas enlazadas. Aquí tienes un ejemplo que extrae información sobre cámaras para tablero (dash cams), enriqueciendo los resultados con datos de páginas relacionadas:
from firecrawl import Firecrawl

# Inicializa FirecrawlApp con tu clave de API

firecrawl = Firecrawl(api_key='your_api_key')

data = firecrawl.extract([
'https://nextbase.com/dash-cams/622gw-dash-cam'
], prompt="Extrae información sobre las mejores cámaras para salpicadero, incluidos precios, características, ventajas/desventajas y reseñas.", enable_web_search=True)
print(data)
JSON
{
  "success": true,
  "data": {
    "dash_cams": [
      {
        "name": "Nextbase 622GW",
        "price": "$399.99",
        "features": [
          "Grabación de video en 4K",
          "Estabilización de imagen",
          "Alexa integrado",
          "Integración con What3Words"
        ],
        /* Información de abajo enriquecida con otros sitios web como 
        https://www.techradar.com/best/best-dash-cam, encontrada 
        mediante el parámetro enableWebSearch */
        "pros": [
          "Excelente calidad de video",
          "Muy buena visión nocturna",
          "GPS integrado"
        ],
        "cons": ["Precio elevado", "La app puede ser inestable"]
      }
    ],
  }

La respuesta incluye contexto adicional obtenido de páginas relacionadas, lo que ofrece información más completa y precisa.

Extracción sin URLs

El punto de conexión /extract ahora permite extraer datos estructurados con un prompt sin necesidad de URLs específicas. Es útil para investigación o cuando se desconocen las URLs exactas. Actualmente en alfa.
from pydantic import BaseModel

class ExtractSchema(BaseModel):
    company_mission: str


# Define the prompt for extraction
prompt = 'Extract the company mission from Firecrawl\'s website.'

# Perform the extraction
scrape_result = firecrawl.extract(prompt=prompt, schema=ExtractSchema)

print(scrape_result)

Limitaciones conocidas (Beta)

  1. Cobertura de sitios a gran escala
    Aún no se admite cubrir por completo sitios masivos (p. ej., “todos los productos de Amazon”) en una sola solicitud.
  2. Consultas lógicas complejas
    Solicitudes como “encontrar todas las publicaciones de 2025” pueden no devolver de forma fiable todos los datos esperados. Estamos trabajando en capacidades de consulta más avanzadas.
  3. Inconsistencias ocasionales
    Los resultados pueden variar entre ejecuciones, especialmente en sitios muy grandes o dinámicos. Por lo general se capturan los detalles clave, pero puede haber cierta variación.
  4. Estado Beta
    Dado que /extract sigue en Beta, las funciones y el rendimiento continuarán evolucionando. Agradecemos los reportes de errores y comentarios para ayudarnos a mejorar.

Uso de FIRE-1

FIRE-1 es un agente de IA que amplía las capacidades de scraping de Firecrawl. Puede controlar acciones del navegador y navegar por estructuras web complejas para permitir una extracción de datos más completa que los métodos de scraping tradicionales. Puedes usar el agente FIRE-1 con el punto de conexión /extract para tareas de extracción complejas que requieren navegar por varias páginas o interactuar con elementos. Ejemplo (cURL):
curl -X POST https://api.firecrawl.dev/v2/extract \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "urls": ["https://example-forum.com/topic/123"],
      "prompt": "Extrae todos los comentarios de los usuarios de este hilo del foro.",
      "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"
      }
    }'
FIRE-1 ya está activo y disponible en versión preliminar.

Facturación y seguimiento del uso

Puedes consultar los precios de /extract en la página de precios de Extract y supervisar el uso en la página de Extract del panel. ¿Tienes comentarios o necesitas ayuda? Escribe a help@firecrawl.com.