Saltar al contenido principal
Esta guía te mostrará los distintos endpoints de Firecrawl y cómo aprovecharlos al máximo con todos sus parámetros.

Scraping básico con Firecrawl

Para extraer una sola página y obtener contenido limpio en Markdown, puedes usar el endpoint /scrape.
# pip install firecrawl-py

from firecrawl import Firecrawl

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

doc = firecrawl.scrape("https://firecrawl.dev")

print(doc.markdown)

Extracción de PDF

Firecrawl admite PDF. Usa la opción parsers (por ejemplo, parsers: ["pdf"]) cuando quieras asegurar el análisis de PDF.

Opciones de extracción

Al usar el endpoint /scrape, puedes personalizar la extracción con las siguientes opciones.

Formatos (formats)

  • Tipo: array
  • Cadenas: ["markdown", "links", "html", "rawHtml", "summary", "images"]
  • Formatos de objeto:
    • JSON: { type: "json", prompt, schema }
    • Captura de pantalla: { type: "screenshot", fullPage?, quality?, viewport? }
    • Seguimiento de cambios: { type: "changeTracking", modes?, prompt?, schema?, tag? } (requiere markdown)
  • Valor predeterminado: ["markdown"]

Contenido completo de la página vs contenido principal (onlyMainContent)

  • Tipo: boolean
  • Descripción: De forma predeterminada, el scraper devuelve solo el contenido principal. Configúralo en false para devolver el contenido completo de la página.
  • Predeterminado: true

Incluir etiquetas (includeTags)

  • Tipo: array
  • Descripción: Etiquetas, clases o IDs de HTML que se incluirán en el scraping.

Excluir etiquetas (excludeTags)

  • Tipo: array
  • Descripción: Etiquetas/clases/ids HTML que se excluirán del scraping.

Esperar a que la página esté lista (waitFor)

  • Tipo: integer
  • Descripción: Milisegundos de espera adicional antes de realizar el scraping (usar con moderación). Este tiempo de espera se suma a la función de espera inteligente de Firecrawl.
  • Valor predeterminado: 0

Actualidad y caché (maxAge)

  • Tipo: integer (milisegundos)
  • Descripción: Si existe una versión en caché de la página más reciente que maxAge, Firecrawl la devuelve al instante; de lo contrario, vuelve a extraerla y actualiza la caché. Establece 0 para forzar siempre una obtención en vivo.
  • Predeterminado: 172800000 (2 días)

Tiempo de espera de la solicitud (timeout)

  • Tipo: integer
  • Descripción: Duración máxima, en milisegundos, antes de cancelar.
  • Valor predeterminado: 30000 (30 segundos)

Análisis de PDF (parsers)

  • Tipo: array
  • Descripción: Controla el comportamiento del análisis. Para analizar PDFs, establece parsers: ["pdf"].
  • Costo: El análisis de PDF cuesta 1 crédito por página de PDF. Para omitir el análisis de PDF y recibir el archivo como base64 (por una tarifa plana de 1 crédito), establece parsers: [].
  • Limitar páginas: Para limitar el análisis de PDF a un número específico de páginas, usa parsers: [{"type": "pdf", "maxPages": 10}].

Acciones (actions)

Cuando utilizas el punto de conexión /scrape, Firecrawl te permite realizar varias acciones en una página web antes de extraer su contenido. Esto es especialmente útil para interactuar con contenido dinámico, navegar entre páginas o acceder a contenido que requiere interacción del usuario.
  • Tipo: array
  • Descripción: Secuencia de pasos del navegador que se ejecutan antes del scraping.
  • Acciones compatibles:
    • wait - Esperar a que la página cargue: { type: "wait", milliseconds: number } o { type: "wait", selector: string }
    • click - Hacer clic en un elemento: { type: "click", selector: string, all?: boolean }
    • write - Escribir texto en un campo: { type: "write", text: string } (el elemento debe estar enfocado primero con un clic)
    • press - Pulsar una tecla del teclado: { type: "press", key: string }
    • scroll - Desplazar la página: { type: "scroll", direction: "up" | "down", selector?: string }
    • screenshot - Tomar una captura de pantalla: { type: "screenshot", fullPage?: boolean, quality?: number, viewport?: { width: number, height: number } }
    • scrape - Extraer un subelemento: { type: "scrape" }
    • executeJavascript - Ejecutar código JS: { type: "executeJavascript", script: string }
    • pdf - Generar un PDF: { type: "pdf", format?: string, landscape?: boolean, scale?: number }
from firecrawl import Firecrawl

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

doc = firecrawl.scrape('https://example.com', {
  'actions': [
    { 'type': 'wait', 'milliseconds': 1000 },
    { 'type': 'click', 'selector': '#accept' },
    { 'type': 'scroll', 'direction': 'down' },
    { 'type': 'click', 'selector': '#q' },
    { 'type': 'write', 'text': 'firecrawl' },
    { 'type': 'press', 'key': 'Enter' },
    { 'type': 'wait', 'milliseconds': 2000 }
  ],
  'formats': ['markdown']
})

print(doc.markdown)

Notas sobre la ejecución de acciones

  • Acción de escritura: Primero debes enfocar el elemento usando una acción de click antes de usar write. El texto se escribe carácter por carácter para simular la entrada por teclado.
  • Selector de scroll: Si quieres desplazar un elemento específico en lugar de toda la página, pasa el parámetro selector a scroll.
  • Espera con selector: Puedes esperar a que un elemento específico sea visible usando wait con un parámetro selector, o esperar un tiempo fijo usando milliseconds.
  • Las acciones son secuenciales: Las acciones se ejecutan en orden y Firecrawl espera a que se completen las interacciones con la página antes de pasar a la siguiente acción.
  • Las acciones no son compatibles con PDFs: Las acciones requieren un motor de navegador y no se pueden usar en URLs que devuelven contenido PDF (incluyendo URLs que redirigen a PDFs). Si incluyes actions en tu petición y la URL resuelve en un PDF, la petición fallará. Elimina actions de tu petición cuando hagas scraping de PDFs.

Ejemplos de acciones avanzadas

Tomar una captura de pantalla:
cURL
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",
    "actions": [
      { "type": "click", "selector": "#load-more" },
      { "type": "wait", "milliseconds": 1000 },
      { "type": "screenshot", "fullPage": true, "quality": 80 }
    ]
  }'
Clic en varios elementos:
cURL
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",
    "actions": [
      { "type": "click", "selector": ".expand-button", "all": true },
      { "type": "wait", "milliseconds": 500 }
    ],
    "formats": ["markdown"]
  }'
Generación de un PDF:
cURL
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",
    "actions": [
      { "type": "pdf", "format": "A4", "landscape": false }
    ]
  }'

Ejemplo de uso

cURL
curl -X POST https://api.firecrawl.dev/v2/scrape \
    -H '
    Content-Type: application/json' \
    -H 'Authorization: Bearer fc-TU-API-KEY' \
    -d '{
      "url": "https://docs.firecrawl.dev",
      "formats": [
        "markdown",
        "links",
        "html",
        "rawHtml",
        { "type": "screenshot", "fullPage": true, "quality": 80 }
      ],
      "includeTags": ["h1", "p", "a", ".main-content"],
      "excludeTags": ["#ad", "#footer"],
      "onlyMainContent": false,
      "waitFor": 1000,
      "timeout": 15000,
      "parsers": ["pdf"]
    }'
En este ejemplo, el scraper:
  • Devuelve el contenido completo de la página en markdown.
  • Incluye el markdown, el HTML sin procesar, el HTML, los enlaces y una captura de pantalla en la respuesta.
  • Incluye solo las etiquetas HTML <h1>, <p>, <a> y los elementos con la clase .main-content, excluyendo cualquier elemento con los IDs #ad y #footer.
  • Espera 1000 milisegundos (1 segundo) antes de realizar el scraping para permitir que la página cargue.
  • Establece la duración máxima de la solicitud de scraping en 15000 milisegundos (15 segundos).
  • Analiza PDF explícitamente mediante parsers: ["pdf"].
Referencia de la API: Scrape Endpoint Documentation

Extracción JSON mediante formatos

Usa el objeto de formato JSON en formats para extraer datos estructurados en una sola operación:
curl -X POST https://api.firecrawl.dev/v2/scrape \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer fc-YOUR-API-KEY' \
  -d '{
    "url": "https://firecrawl.dev",
    "formats": [{
      "type": "json",
      "prompt": "Extract the features of the product",
      "schema": {"type": "object", "properties": {"features": {"type": "object"}}, "required": ["features"]}
    }]
  }'

Endpoint de extracción

Utiliza la API específica de trabajos de extracción cuando necesites una extracción asíncrona con consulta del estado.
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR-API-KEY' });

// Inicia un trabajo de extracción
const started = await firecrawl.startExtract({
  urls: ['https://docs.firecrawl.dev'],
  prompt: 'Extraer título',
  schema: { type: 'object', properties: { title: { type: 'string' } }, required: ['title'] }
});

// Consulta el estado
const status = await firecrawl.getExtractStatus(started.id);
console.log(status.status, status.data);

Rastreo de múltiples páginas

Para rastrear varias páginas, usa el endpoint /v2/crawl.
cURL
curl -X POST https://api.firecrawl.dev/v2/crawl \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer fc-TU-CLAVE-DE-API' \
    -d '{
      "url": "https://docs.firecrawl.dev"
    }'
Devuelve un ID
{ "id": "1234-5678-9101" }

Consultar trabajo de rastreo

Se utiliza para consultar el estado de un trabajo de rastreo y obtener su resultado.
cURL
curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer fc-YOUR-API-KEY'

Paginación/URL siguiente

Si el contenido es superior a 10 MB o si la tarea de rastreo aún se está ejecutando, la respuesta puede incluir un parámetro next, una URL de la siguiente página de resultados.

Vista previa del prompt y parámetros de rastreo

Puedes proporcionar un prompt en lenguaje natural para que Firecrawl derive la configuración de rastreo. Primero, prévisualízala:
cURL
curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer fc-YOUR-API-KEY' \
  -d '{
    "url": "https://docs.firecrawl.dev",
    "prompt": "Extrae la documentación y el blog"
  }'

Opciones del rastreador

Al usar el endpoint /v2/crawl, puedes personalizar el comportamiento del rastreo con:

includePaths

  • Tipo: array
  • Descripción: Patrones de expresiones regulares a incluir. De forma predeterminada, se comparan solo con el pathname de la URL (no con los parámetros de consulta). Para hacer coincidir con la URL completa, incluidas las query strings, usa regexOnFullURL: true.
  • Ejemplo: ["^/blog/.*$", "^/docs/.*$"]

excludePaths

  • Tipo: array
  • Descripción: Patrones de expresiones regulares para excluir. De forma predeterminada, se comparan únicamente con el pathname de la URL (no con los parámetros de consulta). Para hacer coincidir contra la URL completa, incluidas las query strings, usa regexOnFullURL: true.
  • Ejemplo: ["^/admin/.*$", "^/private/.*$"]

regexOnFullURL

  • Type: boolean
  • Description: Cuando es true, los patrones de includePaths y excludePaths se evalúan contra la URL completa (incluidos los parámetros de consulta) en lugar de solo el pathname. Útil para filtrar URLs por parámetros de consulta.
  • Default: false

maxDiscoveryDepth

  • Tipo: integer
  • Descripción: Profundidad máxima de descubrimiento para encontrar nuevas URLs.

limit

  • Tipo: integer
  • Descripción: Número máximo de páginas a rastrear.
  • Valor predeterminado: 10000

crawlEntireDomain

  • Type: boolean
  • Description: Explorar a través de páginas hermanas y superiores para cubrir todo el dominio.
  • Default: false
  • Tipo: boolean
  • Descripción: Seguir enlaces a dominios externos.
  • Valor predeterminado: false

allowSubdomains

  • Tipo: boolean
  • Descripción: Seguir los subdominios del dominio principal.
  • Valor predeterminado: false

delay

  • Tipo: number
  • Descripción: Retraso en segundos entre scrapes.
  • Predeterminado: undefined

sitemap

  • Type: string
  • Enum: "skip", "include", "only"
  • Description: Controla cómo el rastreador usa el sitemap del sitio web. "include" (predeterminado) usa el sitemap junto con el descubrimiento de enlaces. "skip" ignora el sitemap por completo. "only" restringe el rastreo a las URL encontradas en el sitemap (más la URL inicial).
  • Default: "include"

deduplicateSimilarURLs

  • Tipo: boolean
  • Descripción: Cuando es true, el rastreador trata como duplicadas las variantes de URL que apuntan a la misma página; por ejemplo, www. frente a no-www., http frente a https, barras finales y sufijos index.html/index.php se normalizan antes de comprobar si hay duplicados. Esto no elimina los parámetros de consulta de la URL (para eso, usa ignoreQueryParameters).
  • Valor predeterminado: true

ignoreQueryParameters

  • Type: boolean
  • Description: Cuando es true, las cadenas de consulta se eliminan de las URL antes de la deduplicación, por lo que /page?a=1 y /page?a=2 se consideran la misma URL y solo se rastrean una vez.
  • Default: false

scrapeOptions

  • Tipo: object
  • Descripción: Opciones para el scraper (consulta los formatos arriba).
  • Ejemplo: { "formats": ["markdown", "links", {"type": "screenshot", "fullPage": true}], "includeTags": ["h1", "p", "a", ".main-content"], "excludeTags": ["#ad", "#footer"], "onlyMainContent": false, "waitFor": 1000, "timeout": 15000}
  • Valores predeterminados: formats: ["markdown"], caché habilitada de forma predeterminada (maxAge ~ 2 días)

Ejemplo de uso

cURL
curl -X POST https://api.firecrawl.dev/v2/crawl \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer fc-TU-API-KEY' \
    -d '{
      "url": "https://docs.firecrawl.dev",
      "includePaths": ["^/blog/.*$", "^/docs/.*$"],
      "excludePaths": ["^/admin/.*$", "^/private/.*$"],
      "maxDiscoveryDepth": 2,
      "limit": 1000
    }'
El endpoint /v2/map identifica las URL relacionadas con un sitio web dado.

Uso

cURL
curl -X POST https://api.firecrawl.dev/v2/map \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer fc-TU-API-KEY' \
    -d '{
      "url": "https://docs.firecrawl.dev"
    }'

Opciones de mapeo

  • Tipo: string
  • Descripción: Filtra enlaces que contengan el texto.

limit

  • Tipo: integer
  • Descripción: Número máximo de enlaces a retornar.
  • Valor por defecto: 100

sitemap

  • Tipo: "only" | "include" | "skip"
  • Descripción: Controla el uso del sitemap durante el mapeo.
  • Predeterminado: "include"

includeSubdomains

  • Tipo: boolean
  • Descripción: Incluye los subdominios del sitio web.
  • Valor predeterminado: true
Consulta la referencia de la API: Documentación del endpoint /map

Agregar Firecrawl a la lista de permitidos

Permitir que Firecrawl rastree tu sitio web

Si deseas que Firecrawl rastree tu propio sitio web y necesitas incluir el rastreador en una lista de permitidos:
  • User Agent: Firecrawl se identifica con el user agent FirecrawlAgent. Permite esta cadena de user agent en tu firewall o en tus reglas de seguridad.
  • Direcciones IP: Firecrawl no utiliza un conjunto fijo de direcciones IP para las solicitudes de rastreo salientes.

Permitir que tu aplicación llame a la API de Firecrawl

Si tu firewall bloquea las solicitudes salientes de tu aplicación hacia servicios externos, agrega 35.245.250.27 a la lista de permitidos para habilitar las llamadas a la API de Firecrawl.