# Scrape (/es/api-reference/endpoint/scrape)

<!-- agent-signals: reading_time_min: 33 · est_tokens: 23149 · 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), [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), [Obtener errores de raspado por lotes](/es/api-reference/endpoint/batch-scrape-get-errors.md)

<div id="interactions">
  ## Interacciones [#interacciones]
</div>

Para las interacciones del navegador (hacer clic, escribir, navegar, extraer contenido dinámico), usa el [endpoint de Interact](/es/features/interact). Primero haz scraping de una página y luego llama a `POST /v2/scrape/{scrapeId}/interact` con un prompt en lenguaje natural o código de Playwright para realizar acciones en la página.

Consulta la [documentación de Interact](/es/features/interact) para ver todos los detalles y ejemplos.

Opcionalmente, también puedes usar el parámetro `actions`, aunque no se recomienda usarlo para interacciones complejas.

> ¿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 de incorporación automatizada.

`POST /scrape`

Extraer datos de una sola URL y, opcionalmente, extraer información con un LLM

## OpenAPI

```json
{
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "allOf": [
            {
              "properties": {
                "url": {
                  "description": "La URL que se va a scrapear",
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            {
              "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"
            },
            {
              "properties": {
                "zeroDataRetention": {
                  "default": false,
                  "description": "Si se establece en true, se habilitará la no retención de datos para este scraping. Para activar esta función, ponte en contacto con help@firecrawl.dev",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          ]
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "data": {
                "properties": {
                  "actions": {
                    "description": "Resultados de las acciones especificadas en el parámetro `actions`. Solo aparece si se proporcionó el parámetro `actions` en la solicitud",
                    "nullable": true,
                    "properties": {
                      "javascriptReturns": {
                        "description": "Valores de retorno de JavaScript, en el mismo orden que las acciones de executeJavascript proporcionadas.",
                        "items": {
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "value": {}
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "pdfs": {
                        "description": "Archivos PDF generados en el mismo orden que las acciones de PDF proporcionadas.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "scrapes": {
                        "description": "Extrae el contenido en el mismo orden que las acciones de scraping proporcionadas.",
                        "items": {
                          "properties": {
                            "html": {
                              "type": "string"
                            },
                            "url": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "screenshots": {
                        "description": "URLs de las capturas de pantalla, en el mismo orden que las acciones de captura de pantalla indicadas.",
                        "items": {
                          "format": "url",
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "answer": {
                    "description": "Respuesta en lenguaje natural a la pregunta proporcionada mediante el formato `question`. Solo aparece si se incluyó un objeto de formato `question` en `formats`.",
                    "nullable": true,
                    "type": "string"
                  },
                  "audio": {
                    "description": "URL firmada del archivo de audio MP3 extraído si `audio` está en `formatos`. La URL firmada caduca al cabo de 1 hora.",
                    "nullable": true,
                    "type": "string"
                  },
                  "branding": {
                    "description": "Información de marca extraída de la página si `branding` está incluido en `formatos`. Incluye colores, fuentes, tipografía, espaciado, componentes y más.",
                    "nullable": true,
                    "properties": {
                      "animations": {
                        "description": "Configuración de animaciones y transiciones.",
                        "nullable": true,
                        "type": "object"
                      },
                      "colorScheme": {
                        "description": "Paleta de colores detectada de la página.",
                        "enum": [
                          "light",
                          "dark"
                        ],
                        "type": "string"
                      },
                      "colors": {
                        "description": "Colores de la marca extraídos de la página.",
                        "nullable": true,
                        "properties": {
                          "accent": {
                            "description": "Color de acento (hex).",
                            "type": "string"
                          },
                          "background": {
                            "description": "Color de fondo (hex).",
                            "type": "string"
                          },
                          "error": {
                            "description": "Color de error/peligro (hexadecimal).",
                            "type": "string"
                          },
                          "link": {
                            "description": "Color de los enlaces (hex).",
                            "type": "string"
                          },
                          "primary": {
                            "description": "Color principal de la marca (hex).",
                            "type": "string"
                          },
                          "secondary": {
                            "description": "Color secundario de la marca (hex).",
                            "type": "string"
                          },
                          "success": {
                            "description": "Color de éxito/positivo (hexadecimal).",
                            "type": "string"
                          },
                          "textPrimary": {
                            "description": "Color principal del texto (hex).",
                            "type": "string"
                          },
                          "textSecondary": {
                            "description": "Color secundario del texto (hex).",
                            "type": "string"
                          },
                          "warning": {
                            "description": "Color de advertencia (hexadecimal).",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "components": {
                        "description": "Estilos de componentes de la interfaz de usuario.",
                        "nullable": true,
                        "properties": {
                          "buttonPrimary": {
                            "description": "Estilos del botón principal.",
                            "properties": {
                              "background": {
                                "type": "string"
                              },
                              "borderRadius": {
                                "type": "string"
                              },
                              "textColor": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "buttonSecondary": {
                            "description": "Estilos de botones secundarios.",
                            "properties": {
                              "background": {
                                "type": "string"
                              },
                              "borderColor": {
                                "type": "string"
                              },
                              "borderRadius": {
                                "type": "string"
                              },
                              "textColor": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "input": {
                            "description": "Estilos de campos de entrada.",
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "fonts": {
                        "description": "Lista de familias tipográficas usadas en la página.",
                        "items": {
                          "properties": {
                            "family": {
                              "description": "Nombre de la familia tipográfica.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "nullable": true,
                        "type": "array"
                      },
                      "icons": {
                        "description": "Estilos de íconos.",
                        "nullable": true,
                        "type": "object"
                      },
                      "images": {
                        "description": "Imágenes de la marca.",
                        "nullable": true,
                        "properties": {
                          "favicon": {
                            "description": "URL del favicon.",
                            "type": "string"
                          },
                          "logo": {
                            "description": "URL de la imagen del logotipo.",
                            "type": "string"
                          },
                          "ogImage": {
                            "description": "URL de la imagen de Open Graph.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "layout": {
                        "description": "Configuración de diseño de la página (rejilla, alturas de encabezado y pie de página).",
                        "nullable": true,
                        "type": "object"
                      },
                      "logo": {
                        "description": "URL del logotipo principal.",
                        "nullable": true,
                        "type": "string"
                      },
                      "personality": {
                        "description": "Atributos de personalidad de la marca (tono, energía, público objetivo).",
                        "nullable": true,
                        "type": "object"
                      },
                      "spacing": {
                        "description": "Información de espaciado y maquetación.",
                        "nullable": true,
                        "properties": {
                          "baseUnit": {
                            "description": "Unidad base de espaciado en píxeles.",
                            "type": "integer"
                          },
                          "borderRadius": {
                            "description": "Radio de borde por defecto.",
                            "type": "string"
                          },
                          "margins": {
                            "description": "Valores de margen.",
                            "type": "object"
                          },
                          "padding": {
                            "description": "Valores de espaciado interno (padding).",
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "typography": {
                        "description": "Información detallada sobre tipografía.",
                        "nullable": true,
                        "properties": {
                          "fontFamilies": {
                            "description": "Familias tipográficas según su función.",
                            "properties": {
                              "code": {
                                "description": "Familia tipográfica para código (monoespaciada).",
                                "type": "string"
                              },
                              "heading": {
                                "description": "Familia tipográfica para encabezados.",
                                "type": "string"
                              },
                              "primary": {
                                "description": "Familia tipográfica principal.",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "fontSizes": {
                            "description": "Tamaños de fuente para diferentes jerarquías de texto.",
                            "properties": {
                              "body": {
                                "type": "string"
                              },
                              "h1": {
                                "type": "string"
                              },
                              "h2": {
                                "type": "string"
                              },
                              "h3": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "fontWeights": {
                            "description": "Definiciones de pesos de fuente.",
                            "properties": {
                              "bold": {
                                "type": "integer"
                              },
                              "light": {
                                "type": "integer"
                              },
                              "medium": {
                                "type": "integer"
                              },
                              "regular": {
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lineHeights": {
                            "description": "Valores de altura de línea para diferentes tipos de texto.",
                            "properties": {
                              "body": {
                                "type": "string"
                              },
                              "heading": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "changeTracking": {
                    "description": "Información de seguimiento de cambios cuando `changeTracking` está en `formats`. Solo está presente cuando se solicita el formato `changeTracking`.",
                    "nullable": true,
                    "properties": {
                      "changeStatus": {
                        "description": "El resultado de la comparación entre las dos versiones de la página. \"new\" indica que esta página no existía antes, \"same\" indica que el contenido no ha cambiado, \"changed\" indica que el contenido ha cambiado y \"removed\" indica que la página fue eliminada.",
                        "enum": [
                          "new",
                          "same",
                          "changed",
                          "removed"
                        ],
                        "type": "string"
                      },
                      "diff": {
                        "description": "Diff de los cambios al estilo Git cuando se usa el modo `git-diff`. Solo está presente cuando el modo está configurado en `git-diff`.",
                        "nullable": true,
                        "type": "string"
                      },
                      "json": {
                        "description": "Resultados de comparación en JSON cuando se usa el modo `json`. Solo aparece cuando el modo está configurado en `json`. Genera una lista de todas las claves y sus valores de los scrapes `previous` y `current`, según el tipo definido en el `schema`. Ejemplo [aquí](/features/change-tracking)",
                        "nullable": true,
                        "type": "object"
                      },
                      "previousScrapeAt": {
                        "description": "La marca de tiempo del rastreo anterior con la que se compara la página actual. Es null si no existe un rastreo anterior.",
                        "format": "date-time",
                        "nullable": true,
                        "type": "string"
                      },
                      "visibility": {
                        "description": "La visibilidad de la página o URL actual. \"visible\" significa que la URL se descubrió por una ruta orgánica (enlaces o sitemap), y \"hidden\" significa que la URL se descubrió a partir de la memoria de rastreos anteriores.",
                        "enum": [
                          "visible",
                          "hidden"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "highlights": {
                    "description": "Texto fuente relevante seleccionado por el formato `highlights`. Solo aparece si se incluyó un objeto de formato `highlights` en `formats`.",
                    "nullable": true,
                    "type": "string"
                  },
                  "html": {
                    "description": "HTML limpio de la página si `html` está incluido en `formatos`. Elimina las etiquetas `<script>`, `<style>`, `<noscript>`, `<meta>` y `<head>`; convierte las URL relativas en absolutas; resuelve el `srcset` de imágenes responsive a la variante de mayor tamaño. Respeta los filtros `onlyMainContent`, `includeTags` y `excludeTags`.",
                    "nullable": true,
                    "type": "string"
                  },
                  "links": {
                    "description": "Lista de enlaces de la página si `links` está incluido en `formats`",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "markdown": {
                    "type": "string"
                  },
                  "menu": {
                    "description": "Información del menú extraída de la página si `menu` está en `formatos`. Incluye el comercio, la moneda y una lista de secciones, donde cada sección contiene elementos con descripción, imágenes, precio, disponibilidad, etiquetas dietéticas, calorías y grupos de opciones.",
                    "nullable": true,
                    "properties": {
                      "confidence": {
                        "description": "Una puntuación de confianza entre 0 y 1 para la extracción del menú.",
                        "type": "number"
                      },
                      "currency": {
                        "description": "El código de moneda ISO 4217 del menú (p. ej., 'USD'), informado solo cuando la página lo proporciona.",
                        "type": "string"
                      },
                      "isMenu": {
                        "description": "Indica si la página se identificó como un menú.",
                        "type": "boolean"
                      },
                      "merchant": {
                        "description": "El comercio al que pertenece el menú.",
                        "properties": {
                          "name": {
                            "description": "El nombre del comercio.",
                            "type": "string"
                          },
                          "type": {
                            "description": "El tipo de comercio (p. ej., 'restaurant').",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "sections": {
                        "description": "Secciones del menú (p. ej., 'Appetizers', 'Entrees').",
                        "items": {
                          "properties": {
                            "description": {
                              "description": "La descripción de la sección.",
                              "nullable": true,
                              "type": "string"
                            },
                            "id": {
                              "description": "El identificador de la sección.",
                              "type": "string"
                            },
                            "items": {
                              "description": "Los elementos de la sección.",
                              "items": {
                                "properties": {
                                  "availability": {
                                    "description": "La disponibilidad del elemento.",
                                    "properties": {
                                      "inStock": {
                                        "description": "Indica si el elemento está disponible.",
                                        "type": "boolean"
                                      },
                                      "text": {
                                        "description": "Texto de disponibilidad legible para personas.",
                                        "nullable": true,
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "inStock"
                                    ],
                                    "type": "object"
                                  },
                                  "calories": {
                                    "description": "La cantidad de calorías del elemento.",
                                    "nullable": true,
                                    "type": "number"
                                  },
                                  "description": {
                                    "description": "La descripción del elemento.",
                                    "nullable": true,
                                    "type": "string"
                                  },
                                  "dietary": {
                                    "description": "Etiquetas dietéticas del elemento (p. ej., ['vegetarian']).",
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "id": {
                                    "description": "El identificador del elemento.",
                                    "type": "string"
                                  },
                                  "identifiers": {
                                    "description": "Identificadores del elemento específicos del comercio.",
                                    "properties": {
                                      "merchantItemId": {
                                        "description": "El ID propio del elemento del comercio.",
                                        "type": "string"
                                      }
                                    },
                                    "type": "object"
                                  },
                                  "images": {
                                    "description": "Imágenes del elemento.",
                                    "items": {
                                      "properties": {
                                        "alt": {
                                          "description": "Texto alternativo de la imagen.",
                                          "nullable": true,
                                          "type": "string"
                                        },
                                        "url": {
                                          "description": "URL de la imagen.",
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "url"
                                      ],
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "name": {
                                    "description": "El nombre del elemento.",
                                    "type": "string"
                                  },
                                  "optionGroups": {
                                    "description": "Grupos de opciones/modificadores del elemento.",
                                    "items": {
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "price": {
                                    "description": "El precio del elemento.",
                                    "properties": {
                                      "amount": {
                                        "description": "El importe numérico del precio.",
                                        "type": "number"
                                      },
                                      "currency": {
                                        "description": "El código de moneda ISO 4217 (p. ej., 'USD').",
                                        "type": "string"
                                      },
                                      "formatted": {
                                        "description": "El precio con formato para su visualización (p. ej., '$7.99').",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "amount"
                                    ],
                                    "type": "object"
                                  },
                                  "sourceUrl": {
                                    "description": "La URL de la que se extrajo el elemento.",
                                    "nullable": true,
                                    "type": "string"
                                  },
                                  "url": {
                                    "description": "La URL canónica del elemento.",
                                    "nullable": true,
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name"
                                ],
                                "type": "object"
                              },
                              "type": "array"
                            },
                            "name": {
                              "description": "El nombre de la sección.",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name",
                            "items"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "sourceUrl": {
                        "description": "La URL de la que se extrajo el menú.",
                        "nullable": true,
                        "type": "string"
                      }
                    },
                    "required": [
                      "isMenu",
                      "sections"
                    ],
                    "type": "object"
                  },
                  "metadata": {
                    "properties": {
                      "<any other metadata> ": {
                        "description": "Otros metadatos extraídos del HTML, pueden ser una cadena o un array de cadenas",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "concurrencyLimited": {
                        "description": "Si este scraping se limitó debido a los límites de concurrencia del equipo",
                        "type": "boolean"
                      },
                      "concurrencyQueueDurationMs": {
                        "description": "Tiempo, en milisegundos, que la solicitud permaneció en la cola de concurrencia. Solo se incluye cuando concurrencyLimited es true.",
                        "type": "number"
                      },
                      "contentType": {
                        "description": "El tipo de contenido (tipo MIME) de la página, por ejemplo, text/html, application/pdf",
                        "type": "string"
                      },
                      "description": {
                        "description": "Descripción extraída de la página, puede ser una cadena de texto o un array de cadenas",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "error": {
                        "description": "El mensaje de error de la página",
                        "nullable": true,
                        "type": "string"
                      },
                      "keywords": {
                        "description": "Palabras clave extraídas de la página; puede ser una cadena o un array de cadenas",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "language": {
                        "description": "Idioma extraído de la página; puede ser una cadena de texto o un array de cadenas de texto",
                        "nullable": true,
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "numPages": {
                        "description": "Para entradas PDF, el número de páginas procesadas (limitado por la opción maxPages de los analizadores).",
                        "type": "integer"
                      },
                      "ogLocaleAlternate": {
                        "description": "Locales alternativos de la página",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "sourceURL": {
                        "description": "La URL original solicitada. Puede diferir de la URL final de la página si hubo redirecciones.",
                        "format": "uri",
                        "type": "string"
                      },
                      "statusCode": {
                        "description": "El código de estado de la página",
                        "type": "integer"
                      },
                      "title": {
                        "description": "Título extraído de la página, puede ser una cadena de texto o un array de cadenas de texto",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "totalPages": {
                        "description": "Para entradas PDF, el número real de páginas del documento antes de que se aplique cualquier límite de maxPages. Se omite cuando no puede determinarse; un totalPages mayor que numPages indica que el resultado se truncó.",
                        "type": "integer"
                      },
                      "url": {
                        "description": "La URL final de la página después de seguir todas las redirecciones.",
                        "format": "uri",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "product": {
                    "description": "Información del producto extraída de la página si `product` está en `formatos`. Incluye título, marca, categoría, descripción y variantes. El precio, la disponibilidad y las imágenes están en cada variante.",
                    "nullable": true,
                    "properties": {
                      "brand": {
                        "description": "La marca o el fabricante del producto.",
                        "type": "string"
                      },
                      "category": {
                        "description": "La categoría del producto, opcionalmente como una ruta de navegación (p. ej., 'Electronics > Audio > Headphones').",
                        "type": "string"
                      },
                      "description": {
                        "description": "La descripción del producto.",
                        "type": "string"
                      },
                      "title": {
                        "description": "El título del producto.",
                        "type": "string"
                      },
                      "url": {
                        "description": "La URL canónica de la página del producto.",
                        "type": "string"
                      },
                      "variants": {
                        "description": "Variantes del producto (p. ej., diferentes colores o tallas).",
                        "items": {
                          "properties": {
                            "availability": {
                              "description": "La disponibilidad de la variante. Siempre está presente en una variante.",
                              "properties": {
                                "inStock": {
                                  "description": "Indica si la variante está en stock.",
                                  "type": "boolean"
                                },
                                "text": {
                                  "description": "Texto de disponibilidad legible para personas (p. ej., 'In Stock').",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "inStock"
                              ],
                              "type": "object"
                            },
                            "id": {
                              "description": "El identificador de la variante.",
                              "type": "string"
                            },
                            "images": {
                              "description": "Imágenes de la variante.",
                              "items": {
                                "properties": {
                                  "alt": {
                                    "description": "Texto alternativo de la imagen.",
                                    "type": "string"
                                  },
                                  "url": {
                                    "description": "URL de la imagen.",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "url"
                                ],
                                "type": "object"
                              },
                              "type": "array"
                            },
                            "price": {
                              "description": "El precio actual de la variante.",
                              "properties": {
                                "amount": {
                                  "description": "El importe numérico del precio.",
                                  "type": "number"
                                },
                                "currency": {
                                  "description": "El código de moneda ISO 4217 (p. ej., 'USD').",
                                  "type": "string"
                                },
                                "formatted": {
                                  "description": "El precio con formato para mostrar (p. ej., '$199.99').",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "amount"
                              ],
                              "type": "object"
                            },
                            "sale": {
                              "description": "Información de oferta o descuento de la variante, presente cuando la variante tiene descuento.",
                              "properties": {
                                "originalPrice": {
                                  "description": "El precio original de la variante (antes del descuento).",
                                  "properties": {
                                    "amount": {
                                      "description": "El importe numérico del precio.",
                                      "type": "number"
                                    },
                                    "currency": {
                                      "description": "El código de moneda ISO 4217 (p. ej., 'USD').",
                                      "type": "string"
                                    },
                                    "formatted": {
                                      "description": "El precio con formato para mostrar (p. ej., '$249.99').",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "amount"
                                  ],
                                  "type": "object"
                                }
                              },
                              "required": [
                                "originalPrice"
                              ],
                              "type": "object"
                            },
                            "sku": {
                              "description": "El SKU de la variante.",
                              "type": "string"
                            },
                            "title": {
                              "description": "El título de la variante.",
                              "type": "string"
                            },
                            "values": {
                              "additionalProperties": {
                                "type": "string"
                              },
                              "description": "Los valores de las opciones de la variante (p. ej., { \"color\": \"Black\" }).",
                              "type": "object"
                            }
                          },
                          "required": [
                            "availability"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "title",
                      "url",
                      "variants"
                    ],
                    "type": "object"
                  },
                  "rawHtml": {
                    "description": "El HTML exacto, sin modificar, tal como se recibe de la página si `rawHtml` está incluido en `formatos`. No se aplica ningún tipo de limpieza ni filtrado.",
                    "nullable": true,
                    "type": "string"
                  },
                  "screenshot": {
                    "description": "Captura de pantalla de la página si `screenshot` está incluido en `formats`. Las capturas de pantalla caducan después de 24 horas y ya no podrán descargarse.",
                    "nullable": true,
                    "type": "string"
                  },
                  "summary": {
                    "description": "Resumen de la página si `summary` se incluye en `formats`",
                    "nullable": true,
                    "type": "string"
                  },
                  "video": {
                    "description": "URL firmada del archivo de vídeo extraído si `video` está en `formats`. La URL firmada caduca al cabo de 1 hora.",
                    "nullable": true,
                    "type": "string"
                  },
                  "warning": {
                    "description": "Puede mostrarse al usar LLM Extraction. El mensaje de advertencia te informará de cualquier problema con la extracción.",
                    "nullable": true,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "success": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Respuesta satisfactoria"
    },
    "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": {
              "code": {
                "example": "UNKNOWN_ERROR",
                "type": "string"
              },
              "error": {
                "example": "An unexpected error occurred on the server.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Error del servidor"
    }
  }
}
```
