# Crawl (/es/api-reference/endpoint/crawl-post)

<!-- agent-signals: reading_time_min: 22 · est_tokens: 13898 · updated: 2026-07-30 -->
Related: [Búsqueda](/es/api-reference/endpoint/search.md), [Comentarios sobre la búsqueda](/es/api-reference/endpoint/search-feedback.md), [Scrape](/es/api-reference/endpoint/scrape.md), [Raspado en lote](/es/api-reference/endpoint/batch-scrape.md), [Obtener el estado de la captura por lotes](/es/api-reference/endpoint/batch-scrape-get.md), [Cancelar extracción en lote](/es/api-reference/endpoint/batch-scrape-delete.md)

> ¿Eres un agente de IA que necesita una clave de API de Firecrawl? Consulta [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para obtener instrucciones para la incorporación automatizada.

`POST /crawl`

Rastrear varias URL en función de las opciones

## OpenAPI

```json
{
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "properties": {
            "allowExternalLinks": {
              "default": false,
              "description": "Permite que el rastreador siga enlaces a sitios web externos.",
              "type": "boolean"
            },
            "allowSubdomains": {
              "default": false,
              "description": "Permite que el rastreador siga enlaces a subdominios del dominio principal.",
              "type": "boolean"
            },
            "crawlEntireDomain": {
              "default": false,
              "description": "Permite que el crawler siga enlaces internos a URLs hermanas o padre, no solo rutas hijas.\n\nfalse: Solo rastrea URLs más profundas (hijas).\n→ p. ej. /features/feature-1 → /features/feature-1/tips ✅\n→ No seguirá /pricing ni / ❌\n\ntrue: Rastrea cualquier enlace interno, incluidos hermanos y padres.\n→ p. ej. /features/feature-1 → /pricing, /, etc. ✅\n\nUsa true para lograr una cobertura interna más amplia, más allá de las rutas anidadas.",
              "type": "boolean"
            },
            "delay": {
              "description": "Retraso, en segundos, entre scrapes. Esto ayuda a respetar los límites de tasa del sitio web. Al configurar esto, la concurrencia se fuerza a 1.",
              "type": "number"
            },
            "excludePaths": {
              "description": "Patrones de expresiones regulares para las rutas (pathname) de URL que excluyen del rastreo las URLs que coincidan con ellos. Por ejemplo, si configuras `\"excludePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, se excluirán todos los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "ignoreQueryParameters": {
              "default": false,
              "description": "No vuelvas a scrapear la misma ruta con distintos parámetros de consulta (o sin parámetros)",
              "type": "boolean"
            },
            "ignoreRobotsTxt": {
              "default": false,
              "description": "Ignora las reglas de robots.txt del sitio web. Solo disponible para Enterprise; contacta con support@firecrawl.com para habilitarlo.",
              "type": "boolean"
            },
            "includePaths": {
              "description": "Patrones regex de rutas (pathname) de URL que determinan qué URLs se incluyen en el rastreo. Solo las rutas que coincidan con los patrones especificados se incluirán en la respuesta. Nota: la URL inicial también se comprueba con estos patrones; si no coincide, el rastreo puede devolver 0 páginas. Por ejemplo, si configuras \"includePaths\": [\"blog/.*\"] para la URL base firecrawl.dev/blog, solo se incluirán en los resultados las páginas bajo /blog/, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "limit": {
              "default": 10000,
              "description": "Número máximo de páginas a rastrear. El límite por defecto es 10.000.",
              "type": "integer"
            },
            "maxConcurrency": {
              "description": "Número máximo de scrapes simultáneos. Este parámetro te permite establecer un límite de concurrencia para este rastreo. Si no se especifica, el rastreo respeta el límite de concurrencia de tu equipo.",
              "type": "integer"
            },
            "maxDiscoveryDepth": {
              "description": "Profundidad máxima de rastreo basada en el orden de descubrimiento. El sitio raíz y las páginas incluidas en el sitemap tienen una profundidad de descubrimiento de 0. Por ejemplo, si la estableces en 1 y configuras `sitemap: 'skip'`, solo se rastreará la URL introducida y todas las URL que estén enlazadas en esa página.",
              "type": "integer"
            },
            "prompt": {
              "description": "Un prompt que se usa para generar las opciones del crawler (todos los parámetros que se indican a continuación) a partir de lenguaje natural. Los parámetros establecidos explícitamente tendrán prioridad sobre los equivalentes generados.",
              "type": "string"
            },
            "regexOnFullURL": {
              "default": false,
              "description": "Cuando su valor es true, los patrones de expresiones regulares (regex) de includePaths y excludePaths se comparan con la URL completa (incluidos los parámetros de consulta), en lugar de solo con el pathname de la URL. Resulta útil cuando necesitas filtrar URLs en función de los parámetros de consulta.",
              "type": "boolean"
            },
            "robotsUserAgent": {
              "description": "Cadena User-Agent personalizada para evaluar robots.txt. Cuando se configura, robots.txt se obtiene con este User-Agent y las reglas de allow/disallow se aplican en función de él en lugar del predeterminado. Solo disponible para Enterprise; contacta con support@firecrawl.com para habilitarlo.",
              "type": "string"
            },
            "scrapeOptions": {
              "properties": {
                "actions": {
                  "description": "Acciones que se realizarán en la página antes de extraer el contenido",
                  "items": {
                    "oneOf": [
                      {
                        "oneOf": [
                          {
                            "additionalProperties": false,
                            "properties": {
                              "milliseconds": {
                                "description": "Número de milisegundos que se va a esperar",
                                "minimum": 1,
                                "type": "integer"
                              },
                              "type": {
                                "description": "Esperar una cantidad determinada de milisegundos",
                                "enum": [
                                  "wait"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "type",
                              "milliseconds"
                            ],
                            "title": "Wait by Duration",
                            "type": "object"
                          },
                          {
                            "additionalProperties": false,
                            "properties": {
                              "selector": {
                                "description": "Selector CSS del elemento al que se debe esperar",
                                "example": "#my-element",
                                "type": "string"
                              },
                              "type": {
                                "description": "Esperar a que aparezca un elemento específico",
                                "enum": [
                                  "wait"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "type",
                              "selector"
                            ],
                            "title": "Wait for Element",
                            "type": "object"
                          }
                        ],
                        "title": "Wait"
                      },
                      {
                        "properties": {
                          "fullPage": {
                            "default": false,
                            "description": "Determina si se debe tomar una captura de pantalla de página completa (omitiendo viewport.height) o limitarla al viewport actual.",
                            "type": "boolean"
                          },
                          "quality": {
                            "description": "La calidad de la captura de pantalla, de 1 a 100. 100 es la máxima calidad.",
                            "type": "integer"
                          },
                          "type": {
                            "description": "Realiza una captura de pantalla. Los enlaces estarán en la matriz `actions.screenshots` de la respuesta.",
                            "enum": [
                              "screenshot"
                            ],
                            "type": "string"
                          },
                          "viewport": {
                            "properties": {
                              "height": {
                                "description": "Altura del viewport en píxeles",
                                "type": "integer"
                              },
                              "width": {
                                "description": "El ancho del viewport en píxeles",
                                "type": "integer"
                              }
                            },
                            "required": [
                              "width",
                              "height"
                            ],
                            "type": "object"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Screenshot",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "all": {
                            "default": false,
                            "description": "Hace clic en todos los elementos que coinciden con el selector, no solo en el primero. No genera un error si ningún elemento coincide con el selector.",
                            "type": "boolean"
                          },
                          "selector": {
                            "description": "Selector de consulta para localizar el elemento mediante",
                            "example": "#load-more-button",
                            "type": "string"
                          },
                          "type": {
                            "description": "Haz clic en un elemento",
                            "enum": [
                              "click"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "selector"
                        ],
                        "title": "Click",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "text": {
                            "description": "Texto a teclear",
                            "example": "Hello, world!",
                            "type": "string"
                          },
                          "type": {
                            "description": "Escribe texto en un campo de texto, área de texto o elemento contenteditable. Nota: primero debes enfocar el elemento usando una acción de “hacer clic” antes de escribir. El texto se escribirá carácter por carácter para simular la entrada por teclado.",
                            "enum": [
                              "write"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "text"
                        ],
                        "title": "Write text",
                        "type": "object"
                      },
                      {
                        "description": "Pulsa una tecla en la página. Consulta https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para obtener los códigos de teclas.",
                        "properties": {
                          "key": {
                            "description": "Tecla que hay que pulsar",
                            "example": "Enter",
                            "type": "string"
                          },
                          "type": {
                            "description": "Pulsa una tecla en la página",
                            "enum": [
                              "press"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "key"
                        ],
                        "title": "Press a key",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "direction": {
                            "default": "down",
                            "description": "Sentido de desplazamiento",
                            "enum": [
                              "up",
                              "down"
                            ],
                            "type": "string"
                          },
                          "selector": {
                            "description": "Selector del elemento al que se hará scroll",
                            "example": "#my-element",
                            "type": "string"
                          },
                          "type": {
                            "description": "Desplazar la página o un elemento concreto",
                            "enum": [
                              "scroll"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Scroll",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "description": "Extrae el contenido de la página actual y devuelve la URL y el HTML.",
                            "enum": [
                              "scrape"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Scrape",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "script": {
                            "description": "Código JavaScript a ejecutar",
                            "example": "document.querySelector('.button').click();",
                            "type": "string"
                          },
                          "type": {
                            "description": "Ejecutar código JavaScript en la página",
                            "enum": [
                              "executeJavascript"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "script"
                        ],
                        "title": "Execute JavaScript",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "format": {
                            "default": "Letter",
                            "description": "El tamaño de la página del PDF resultante",
                            "enum": [
                              "A0",
                              "A1",
                              "A2",
                              "A3",
                              "A4",
                              "A5",
                              "A6",
                              "Letter",
                              "Legal",
                              "Tabloid",
                              "Ledger"
                            ],
                            "type": "string"
                          },
                          "landscape": {
                            "default": false,
                            "description": "Indica si se debe generar el PDF en orientación horizontal",
                            "type": "boolean"
                          },
                          "scale": {
                            "default": 1,
                            "description": "El factor de escala del PDF resultante",
                            "type": "number"
                          },
                          "type": {
                            "description": "Genera un PDF de la página actual. El PDF se devolverá en el array `actions.pdfs` de la respuesta.",
                            "enum": [
                              "pdf"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Generate PDF",
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "auditMetadata": {
                  "additionalProperties": false,
                  "description": "Atribución de usuario incluida en los eventos de registro SIEM cuando SIEM Logging está habilitado para la organización.",
                  "properties": {
                    "username": {
                      "description": "El nombre de usuario asociado a la solicitud.",
                      "maxLength": 1024,
                      "type": "string"
                    }
                  },
                  "required": [
                    "username"
                  ],
                  "type": "object"
                },
                "blockAds": {
                  "default": true,
                  "description": "Habilita el bloqueo de anuncios y de ventanas emergentes de cookies.",
                  "type": "boolean"
                },
                "excludeTags": {
                  "description": "Etiquetas que se excluirán de la salida.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "formats": {
                  "default": [
                    "markdown"
                  ],
                  "description": "Formatos de salida que se incluirán en la respuesta. Puedes especificar uno o varios formatos, ya sea como cadenas (p. ej., `'markdown'`) o como objetos con opciones adicionales (p. ej., `{ type: 'json', schema: {...} }`). Algunos formatos requieren configurar opciones específicas. Ejemplo: `['markdown', { type: 'json', schema: {...} }]`.",
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "markdown"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Markdown",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "summary"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Summary",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "html"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "HTML",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "rawHtml"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Raw HTML",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "links"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Links",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "images"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Images",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "fullPage": {
                            "default": false,
                            "description": "Determina si se debe tomar una captura de pantalla de página completa (omitiendo viewport.height) o limitarla al viewport actual.",
                            "type": "boolean"
                          },
                          "quality": {
                            "description": "La calidad de la captura de pantalla, del 1 al 100. 100 es la calidad más alta.",
                            "type": "integer"
                          },
                          "type": {
                            "enum": [
                              "screenshot"
                            ],
                            "type": "string"
                          },
                          "viewport": {
                            "properties": {
                              "height": {
                                "description": "Altura del viewport en píxeles",
                                "type": "integer"
                              },
                              "width": {
                                "description": "El ancho del viewport en píxeles",
                                "type": "integer"
                              }
                            },
                            "required": [
                              "width",
                              "height"
                            ],
                            "type": "object"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Screenshot",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "prompt": {
                            "description": "El prompt que se utilizará para la salida en formato JSON",
                            "type": "string"
                          },
                          "schema": {
                            "description": "El esquema que se utilizará para la salida en formato JSON. Debe ajustarse a [JSON Schema](https://json-schema.org/).",
                            "type": "object"
                          },
                          "type": {
                            "enum": [
                              "json"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "JSON",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "modes": {
                            "description": "El modo que se usará para el seguimiento de cambios. 'git-diff' proporciona un diff detallado y 'json' compara los datos JSON extraídos.",
                            "items": {
                              "enum": [
                                "git-diff",
                                "json"
                              ],
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "prompt": {
                            "description": "Prompt que se usará para el seguimiento de cambios cuando se utilice el modo `json`. Si no se proporciona, se usará el prompt predeterminado.",
                            "type": "string"
                          },
                          "schema": {
                            "description": "Esquema JSON para la extracción cuando se usa el modo `json`. Define la estructura de los datos que se van a extraer y comparar. Debe ajustarse a [JSON Schema](https://json-schema.org/).",
                            "type": "object"
                          },
                          "tag": {
                            "default": null,
                            "description": "Etiqueta que se utilizará para el seguimiento de cambios. Las etiquetas pueden separar el historial de seguimiento de cambios en “ramas” independientes, donde el seguimiento de cambios con una etiqueta específica solo se comparará con extracciones realizadas con la misma etiqueta. Si no se proporciona, se usará la etiqueta predeterminada (null).",
                            "nullable": true,
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "changeTracking"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Change Tracking",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "branding"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Branding",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "product"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Product",
                        "type": "object"
                      },
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "menu"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Menu",
                        "type": "object"
                      },
                      {
                        "description": "Extrae audio (MP3) de URLs de video compatibles, p. ej., YouTube. Devuelve una URL firmada de GCS.",
                        "properties": {
                          "type": {
                            "enum": [
                              "audio"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Audio",
                        "type": "object"
                      },
                      {
                        "description": "Extrae video en la mejor calidad de URLs de video compatibles, p. ej., YouTube. Devuelve una URL firmada de GCS.",
                        "properties": {
                          "type": {
                            "enum": [
                              "video"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "title": "Video",
                        "type": "object"
                      },
                      {
                        "description": "Haz una question en lenguaje natural sobre la página. Devuelve la respuesta en el campo `answer` de la respuesta.",
                        "properties": {
                          "question": {
                            "description": "La question que se debe responder sobre la página. Máximo 10.000 caracteres.",
                            "maxLength": 10000,
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "question"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "question"
                        ],
                        "title": "Question",
                        "type": "object"
                      },
                      {
                        "description": "Encuentra texto fuente relevante en la página. Devuelve el texto seleccionado en el campo `highlights` de la respuesta.",
                        "properties": {
                          "query": {
                            "description": "La consulta de selección de texto que se ejecutará en la página. Máximo 10.000 caracteres.",
                            "maxLength": 10000,
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "highlights"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "query"
                        ],
                        "title": "Highlights",
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "headers": {
                  "description": "Encabezados que se enviarán en la solicitud. Pueden usarse para enviar cookies, user-agent, etc.",
                  "type": "object"
                },
                "includeTags": {
                  "description": "Etiquetas que se incluirán en la salida.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "location": {
                  "description": "Configuración de ubicación para la solicitud. Cuando se especifica, se utilizará un proxy adecuado si está disponible y se emularán la configuración de idioma y la zona horaria correspondientes. De manera predeterminada será \"US\" si no se especifica.",
                  "properties": {
                    "country": {
                      "default": "US",
                      "description": "Código de país alfa-2 según ISO 3166-1 (p. ej., 'US', 'AU', 'DE', 'JP')",
                      "pattern": "^[A-Z]{2}$",
                      "type": "string"
                    },
                    "languages": {
                      "description": "Idiomas y configuraciones regionales preferidos para la solicitud, en orden de prioridad. De forma predeterminada, se utiliza el idioma de la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language",
                      "items": {
                        "example": "en-US",
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "lockdown": {
                  "default": false,
                  "description": "Si es true, la solicitud se atiende únicamente desde la caché de Firecrawl y nunca se realiza una solicitud saliente a la URL de destino. Está diseñado para entornos con requisitos estrictos de cumplimiento o aislados de redes externas, donde la propia solicitud de scraping podría filtrar información sensible. Si no hay una entrada en caché, devuelve un 404 con el código de error SCRAPE_LOCKDOWN_CACHE_MISS (la URL nunca se registra cuando no hay una entrada en caché). Las solicitudes de Lockdown se consideran de retención de datos cero. El valor predeterminado de maxAge se amplía a 2 años para que las páginas ya almacenadas en caché sigan siendo aptas. Se facturan 5 créditos en caso de acierto de caché y 1 crédito en caso de fallo de caché.",
                  "type": "boolean"
                },
                "maxAge": {
                  "default": 172800000,
                  "description": "Devuelve una versión en caché de la página si su antigüedad es menor que este valor en milisegundos. Si la versión en caché de la página es más antigua que este valor, se hará scraping de la página. Si no necesitas datos extremadamente recientes, habilitar esto puede acelerar tus procesos de scraping hasta un 500 %. El valor predeterminado es de 2 días.",
                  "type": "integer"
                },
                "minAge": {
                  "description": "<[\n  {\n    \"key\": \"0\",\n    \"translation\": \"Cuando se establece, la solicitud solo consulta la caché y nunca inicia una nueva extracción. El valor se expresa en milisegundos y especifica la antigüedad mínima que deben tener los datos almacenados en caché. Si existen datos en caché que coinciden, se devuelven al instante. Si no se encuentran datos en caché, se devuelve un 404 con el código de error SCRAPE_NO_CACHED_DATA. Establécelo en 1 para aceptar cualquier dato en caché, independientemente de su antigüedad.\"\n  }\n]</>",
                  "type": "integer"
                },
                "mobile": {
                  "default": false,
                  "description": "Defínelo en true si quieres emular el scraping desde un dispositivo móvil. Útil para probar páginas responsive y tomar capturas de pantalla móviles.",
                  "type": "boolean"
                },
                "onlyCleanContent": {
                  "default": false,
                  "description": "Beta. Ejecuta una pasada adicional basada en LLM sobre el markdown generado para eliminar el contenido repetitivo residual que `onlyMainContent` puede pasar por alto (banners de cookies, bloques de anuncios, widgets para compartir en redes sociales, rutas de navegación, suscripciones a boletines, secciones de comentarios y listas de artículos relacionados). Se conservan los encabezados, las listas, las tablas, los bloques de código, las referencias de imágenes y los enlaces en línea. Puede combinarse con `onlyMainContent` (la configuración más habitual) o usarse por sí solo. Se omite con una advertencia cuando el markdown supera el límite de tokens de salida del modelo de limpieza (se conserva el markdown original). No es compatible con solicitudes con retención cero de datos.",
                  "type": "boolean"
                },
                "onlyMainContent": {
                  "default": true,
                  "description": "Devuelve solo el contenido principal de la página, excluyendo encabezados, navegación, pies de página, etc. Es un filtro determinista a nivel de HTML que se aplica antes de generar el markdown; no interviene ningún LLM.",
                  "type": "boolean"
                },
                "parsers": {
                  "default": [
                    "pdf"
                  ],
                  "description": "Controla cómo se procesan los archivos durante el scraping. Cuando se incluye \"pdf\" (valor predeterminado), se extrae el contenido del PDF y se convierte a formato Markdown, con la facturación basada en el número de páginas (1 crédito por página). Cuando se pasa un array vacío, el archivo PDF se devuelve codificado en base64 con una tarifa fija de 1 crédito por todo el PDF.",
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "maxPages": {
                            "description": "Número máximo de páginas del PDF que se pueden analizar. Debe ser un número entero positivo de hasta 10 000.",
                            "maximum": 10000,
                            "minimum": 1,
                            "type": "integer"
                          },
                          "mode": {
                            "default": "auto",
                            "description": "Modo de procesamiento de PDF. \"fast\": solo extracción de texto (usa el texto incrustado; es la opción más rápida). \"auto\" (predeterminado): primero intenta la extracción rápida y, si es necesario, recurre a OCR. \"ocr\": fuerza el procesamiento con OCR en todas las páginas.",
                            "enum": [
                              "fast",
                              "auto",
                              "ocr"
                            ],
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "pdf"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "profile": {
                  "description": "Habilita el almacenamiento persistente del navegador entre sesiones de scraping e interacción. Pasa un perfil al hacer scraping para conservar las cookies, localStorage y los datos de sesión. Las sesiones con el mismo nombre de perfil comparten el estado del navegador.",
                  "properties": {
                    "name": {
                      "description": "Un nombre para el perfil. Los scraping con el mismo nombre comparten el estado del navegador (cookies, localStorage y sesiones).",
                      "maxLength": 128,
                      "minLength": 1,
                      "type": "string"
                    },
                    "saveChanges": {
                      "default": true,
                      "description": "Cuando es true, el estado del navegador se vuelve a guardar en el perfil cuando se detiene la sesión de interacción. Establécelo en false para cargar los datos existentes sin escribir. Solo se permite una sesión de guardado a la vez.",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object"
                },
                "proxy": {
                  "default": "auto",
                  "description": "Especifica el tipo de proxy que se usará.\n\n - **basic**: Proxies para hacer scraping de sitios con poca o ninguna protección antibots. Son rápidos y suelen funcionar bien.\n - **enhanced**: Proxies avanzados para hacer scraping de sitios con soluciones antibots más sofisticadas. Son más lentos, pero más fiables en ciertos sitios. Pueden costar hasta 5 créditos por solicitud.\n - **auto**: Firecrawl reintentará automáticamente el scraping con proxies mejorados si el proxy básico falla. Si el reintento con **enhanced** tiene éxito, se cobrarán 5 créditos por el scraping. Si el primer intento con **basic** tiene éxito, solo se cobrará el coste normal.",
                  "enum": [
                    "basic",
                    "enhanced",
                    "auto"
                  ],
                  "type": "string"
                },
                "redactPII": {
                  "default": false,
                  "description": "Redacta la información de identificación personal del markdown devuelto. Pasa `true` para usar la configuración predeterminada, o un objeto para ajustar el modo, las entidades y el estilo de reemplazo.",
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "additionalProperties": false,
                      "description": "Opciones de ajuste para la redacción de IIP.",
                      "properties": {
                        "entities": {
                          "description": "Restringe la redacción a estas categorías de entidades. Si se omite, se redactan todas las entidades compatibles.",
                          "items": {
                            "description": "Categorías públicas de entidades de IIP compatibles con la redacción de Firecrawl.",
                            "enum": [
                              "PERSON",
                              "EMAIL",
                              "PHONE",
                              "LOCATION",
                              "FINANCIAL",
                              "SECRET"
                            ],
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "mode": {
                          "default": "accurate",
                          "description": "Estrategia de redacción. `accurate` usa solo el modelo y está optimizada para la precisión, `aggressive` aumenta la cobertura con heurísticas adicionales, y `fast` usa heurísticas sin llamar al modelo.",
                          "enum": [
                            "accurate",
                            "aggressive",
                            "fast"
                          ],
                          "type": "string"
                        },
                        "replaceStyle": {
                          "default": "tag",
                          "description": "`tag` reemplaza los fragmentos por marcadores como `<EMAIL>`, `mask` reemplaza los caracteres por `*` y `remove` elimina el texto del fragmento.",
                          "enum": [
                            "tag",
                            "mask",
                            "remove"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  ]
                },
                "removeBase64Images": {
                  "default": true,
                  "description": "Elimina todas las imágenes en base64 de la salida en markdown, que puede ser excesivamente larga. Esto no afecta a los formatos html ni rawHtml. El texto alternativo de la imagen permanece en la salida, pero la URL se sustituye por un marcador de posición.",
                  "type": "boolean"
                },
                "skipTlsVerification": {
                  "default": true,
                  "description": "Omitir la verificación de certificados TLS al realizar solicitudes.",
                  "type": "boolean"
                },
                "storeInCache": {
                  "default": true,
                  "description": "Si es true, la página se almacenará en el índice y la caché de Firecrawl. Establecerlo en false es útil si tu actividad de scraping puede plantear problemas relacionados con la protección de datos. El uso de algunos parámetros asociados con scraping de datos sensibles (por ejemplo, acciones, headers) hará que este parámetro sea false.",
                  "type": "boolean"
                },
                "threatProtection": {
                  "description": "Anulación por solicitud de [Protección contra amenazas](https://docs.firecrawl.dev/features/threat-protection). Los campos que proporciones reemplazan los campos correspondientes de la política de tu organización solo para esta solicitud; los campos omitidos conservan sus valores a nivel de organización. Requiere que Protección contra amenazas esté habilitada para tu equipo (función enterprise); de lo contrario, la solicitud se rechaza con un 403. Si tu organización ha deshabilitado las anulaciones por solicitud, cualquier solicitud que incluya este objeto se rechaza con un 403. Si Protección contra amenazas se aplica de forma obligatoria a tu equipo, `mode` no puede establecerse en `off`.",
                  "properties": {
                    "blacklist": {
                      "description": "Dominios que siempre se deben bloquear, como dominios simples (`example.com`) o patrones con comodines (`*.example.com`). Sin protocolo, ruta ni puerto.",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 1000,
                      "type": "array"
                    },
                    "blockedTlds": {
                      "description": "Dominios de nivel superior que se bloquean directamente, en minúsculas y sin el punto inicial (p. ej., `zip`).",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 1000,
                      "type": "array"
                    },
                    "failurePolicy": {
                      "description": "Qué hacer cuando no se puede acceder al clasificador: `closed` bloquea la solicitud; `open` la permite.",
                      "enum": [
                        "open",
                        "closed"
                      ],
                      "type": "string"
                    },
                    "mode": {
                      "description": "Modo de análisis de URL para esta solicitud. `normal` verifica las URL con Google Web Risk (+2 créditos por URL analizada).",
                      "enum": [
                        "off",
                        "normal"
                      ],
                      "type": "string"
                    },
                    "riskScoreThreshold": {
                      "description": "Puntuación de riesgo normalizada (0–100) a partir de la cual el veredicto de un clasificador bloquea la URL. Cuanto más bajo, más estricto.",
                      "example": 75,
                      "maximum": 100,
                      "minimum": 0,
                      "type": "integer"
                    },
                    "whitelist": {
                      "description": "Dominios que siempre se deben permitir, como dominios simples o patrones con comodines. Tiene prioridad sobre cualquier otra regla.",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 1000,
                      "type": "array"
                    }
                  },
                  "title": "Threat Protection Override",
                  "type": "object"
                },
                "timeout": {
                  "default": 60000,
                  "description": "Tiempo de espera en milisegundos para la solicitud. El mínimo es 1000 (1 segundo). El valor predeterminado es 60000 (60 segundos). El máximo es 300000 (300 segundos).",
                  "maximum": 300000,
                  "minimum": 1000,
                  "type": "integer"
                },
                "waitFor": {
                  "default": 0,
                  "description": "Especifica un tiempo de espera en milisegundos antes de obtener el contenido, dando a la página tiempo suficiente para cargarse. Este tiempo de espera es adicional a la función de espera inteligente de Firecrawl.",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "sitemap": {
              "default": "include",
              "description": "Modo de sitemap al rastrear. Si lo configuras en \"skip\", el crawler ignorará el sitemap del sitio web y solo rastreará la URL indicada y descubrirá páginas a partir de ahí. Si lo configuras en \"only\", el crawler solo rastreará las URLs del sitemap (más la URL inicial) y no descubrirá enlaces desde el HTML.",
              "enum": [
                "skip",
                "include",
                "only"
              ],
              "type": "string"
            },
            "url": {
              "description": "La URL base desde la que se iniciará el rastreo",
              "format": "uri",
              "type": "string"
            },
            "webhook": {
              "description": "Un objeto de especificación de webhook.",
              "properties": {
                "events": {
                  "description": "Tipo de eventos que se enviarán a la URL del webhook (valor predeterminado: todos).",
                  "items": {
                    "enum": [
                      "completed",
                      "page",
                      "failed",
                      "started"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "headers": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Cabeceras que se enviarán a la URL del webhook.",
                  "type": "object"
                },
                "metadata": {
                  "additionalProperties": true,
                  "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo",
                  "type": "object"
                },
                "url": {
                  "description": "La URL a la que se enviará el webhook. Se activará al iniciarse el rastreo (crawl.started), en cada página rastreada (crawl.page) y cuando el rastreo se complete (crawl.completed o crawl.failed). La respuesta será la misma que la del endpoint `/scrape`.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "zeroDataRetention": {
              "default": false,
              "description": "Si se establece en true, se desactivará la retención de datos para este rastreo. Para habilitar esta función, póngase en contacto con help@firecrawl.dev",
              "type": "boolean"
            }
          },
          "required": [
            "url"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "id": {
                "type": "string"
              },
              "success": {
                "type": "boolean"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Respuesta correcta"
    },
    "402": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Payment required to access this resource.",
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Se requiere pago"
    },
    "429": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Request rate limit exceeded. Please wait and try again later.",
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Demasiadas solicitudes"
    },
    "500": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "An unexpected error occurred on the server.",
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Error del servidor"
    }
  }
}
```
