> ## Documentation Index
> Fetch the complete documentation index at: https://docs.olostep.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear Scrape

> [Scrape](https://docs.olostep.com/features/scrapes) una URL con la configuración proporcionada y obtén contenido.

<Tip>
  **Caché opcional:** Pasa `max_age` (en segundos) para reutilizar un scrape reciente con los mismos parámetros en lugar de volver a obtener la página. Por defecto es `0` (siempre fresco). En el área de pruebas del panel, el valor predeterminado es de 24 horas. Consulta [Caché](/features/scrapes#caching) para más detalles.
</Tip>


## OpenAPI

````yaml es/openapi/scrapes.json POST /v1/scrapes
openapi: 3.0.3
info:
  title: API de Scrapes
  version: 1.0.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/scrapes:
    post:
      summary: Iniciar un scrapeo de página web
      description: >-
        Este endpoint permite a los usuarios iniciar un scrapeo de página web
        con varias configuraciones.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url_to_scrape:
                  type: string
                  format: uri
                  description: La URL desde la cual comenzar el scraping.
                wait_before_scraping:
                  type: integer
                  description: >-
                    Tiempo de espera en milisegundos antes de comenzar el
                    scrapeo.
                formats:
                  type: array
                  items:
                    type: string
                    enum:
                      - html
                      - markdown
                      - text
                      - json
                      - raw_pdf
                      - screenshot
                  description: Formatos en los que quieres el contenido.
                remove_css_selectors:
                  type: string
                  enum:
                    - default
                    - none
                    - array
                  description: >-
                    Opción para eliminar ciertos selectores CSS del contenido.
                    Opcionalmente, también puedes pasar un array en formato JSON
                    stringificado de selectores específicos que deseas eliminar.
                    Los selectores CSS eliminados cuando esta opción está
                    configurada por defecto son
                    ['nav','footer','script','style','noscript','svg',[role=alert],[role=banner],[role=dialog],[role=alertdialog],[role=region][aria-label*=skip
                    i],[aria-modal=true]]
                actions:
                  type: array
                  items:
                    type: object
                    discriminator:
                      propertyName: type
                    oneOf:
                      - type: object
                        title: Esperar
                        required:
                          - type
                          - milliseconds
                        properties:
                          type:
                            type: string
                            enum:
                              - wait
                            description: Espera una cantidad especificada de milisegundos
                          milliseconds:
                            type: integer
                            minimum: 0
                            description: Tiempo de espera en milisegundos
                      - type: object
                        title: Hacer clic
                        required:
                          - type
                          - selector
                        properties:
                          type:
                            type: string
                            enum:
                              - click
                            description: Haz clic en un elemento
                          selector:
                            type: string
                            description: Selector CSS para el elemento en el que hacer clic
                      - type: object
                        title: Rellenar Entrada
                        required:
                          - type
                          - selector
                          - value
                        properties:
                          type:
                            type: string
                            enum:
                              - fill_input
                            description: Rellena un elemento de entrada con un valor
                          selector:
                            type: string
                            description: Selector CSS para el elemento de entrada
                          value:
                            type: string
                            description: Texto para ingresar en la entrada
                      - type: object
                        title: Desplazar
                        required:
                          - type
                          - direction
                          - amount
                        properties:
                          type:
                            type: string
                            enum:
                              - scroll
                            description: Desplaza la página
                          direction:
                            type: string
                            enum:
                              - up
                              - down
                              - left
                              - right
                            description: Dirección para desplazar
                          amount:
                            type: number
                            description: Cantidad para desplazar en píxeles
                  description: >-
                    Acciones a realizar en la página antes de obtener el
                    contenido.
                country:
                  type: string
                  description: >-
                    País residencial desde el cual cargar la solicitud.  Valores
                    soportados son: - US (Estados Unidos) - CA (Canadá) - IT
                    (Italia) - IN (India) - GB (Inglaterra) - JP (Japón) - MX
                    (México) - AU (Australia) - ID (Indonesia) - UA (EAU) - RU
                    (Rusia) - RANDOM  Algunas operaciones, como el scrapeo de
                    Google Search y Google News, soportan todos los países.
                transformer:
                  type: string
                  enum:
                    - postlight
                    - none
                  description: >-
                    Especifica el transformador HTML a usar, si hay alguno. La
                    biblioteca Mercury Parser de Postlight se utiliza para
                    eliminar anuncios y otros contenidos no deseados del
                    contenido extraído.
                remove_images:
                  type: boolean
                  description: >-
                    Opción para eliminar imágenes del contenido scrapeado. Por
                    defecto es false.
                  default: false
                remove_class_names:
                  type: array
                  items:
                    type: string
                  description: Lista de nombres de clase a eliminar del contenido.
                parser:
                  type: object
                  properties:
                    id:
                      type: string
                      description: ID del parser a utilizar.
                  required:
                    - id
                  description: >-
                    Al definir json como formato, puedes usar este parámetro
                    para especificar el parser a utilizar. Los parsers son
                    útiles para extraer contenido estructurado de páginas web.
                    Olostep tiene algunos parsers integrados para las páginas
                    web más comunes, y también puedes crear tus propios parsers.
                llm_extract:
                  type: object
                  properties:
                    schema:
                      type: object
                      description: Esquema para la extracción LLM.
                links_on_page:
                  type: object
                  properties:
                    query_to_order_links_by:
                      type: string
                      description: >-
                        Ordena los enlaces devueltos por su similitud con el
                        texto de consulta proporcionado, priorizando las
                        coincidencias más relevantes primero.
                    include_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtra los enlaces extraídos usando patrones glob con
                        `include_links`. Los patrones coinciden con la ruta URL
                        del enlace. Usa patrones como "*.pdf" para coincidir con
                        extensiones de archivo, "/blog/*" para rutas
                        específicas, o URLs completas como
                        "https://example.com/*". Soporta comodines (*), clases
                        de caracteres ([a-z]), y alternancia
                        ({pattern1,pattern2}). Nota: un solo `*` no cruza `/`,
                        así que "/blog/*" coincide con "/blog/post-1" pero NO
                        con el índice "/blog" en sí (o "/blog?tag=x", ya que las
                        cadenas de consulta no son parte de la ruta). Para
                        incluir también el índice, usa "/blog*" o
                        "{/blog,/blog/**}".
                    exclude_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtra los enlaces extraídos usando patrones glob con
                        `exclude_links`. Los patrones coinciden con la ruta URL
                        del enlace. Usa patrones como "*.pdf" para coincidir con
                        extensiones de archivo, "/blog/*" para rutas
                        específicas, o URLs completas como
                        "https://example.com/*". Soporta comodines (*), clases
                        de caracteres ([a-z]), y alternancia
                        ({pattern1,pattern2}). Nota: un solo `*` no cruza `/`,
                        así que "/blog/*" coincide con "/blog/post-1" pero NO
                        con el índice "/blog" en sí (o "/blog?tag=x", ya que las
                        cadenas de consulta no son parte de la ruta).
                  description: >-
                    Con esta opción, puedes obtener todos los enlaces presentes
                    en la página que scrapeas. Los enlaces siempre se devuelven
                    como URLs absolutas.
                screen_size:
                  type: object
                  properties:
                    screen_type:
                      type: string
                      enum:
                        - default
                        - mobile
                        - desktop
                      description: >-
                        Tipo de pantalla. Desktop usa 1920x1080 píxeles, mobile
                        usa 414x896 píxeles, y por defecto usa 1024x768 píxeles.
                    screen_width:
                      type: integer
                      description: >-
                        Ancho de la pantalla en píxeles. Desktop: 1920px,
                        mobile: 414px, por defecto: 768px.
                    screen_height:
                      type: integer
                      description: >-
                        Altura de la pantalla en píxeles. Desktop: 1080px,
                        mobile: 896px, por defecto: 1024px.
                  description: >-
                    Configuración para el tamaño de pantalla. Las dimensiones
                    predefinidas están disponibles a través de screen_type:
                    desktop (1920x1080), mobile (414x896) o default (768x1024).
                screenshot:
                  type: object
                  properties:
                    full_page:
                      type: boolean
                      description: >-
                        Si se pasa true, se toma una captura de pantalla de la
                        página completa después de desplazarse hasta el final
                        del sitio.
                metadata:
                  type: object
                  description: Metadatos definidos por el usuario. Aún no soportado.
                max_age:
                  type: integer
                  minimum: 0
                  default: 0
                  description: >-
                    Edad máxima aceptable del contenido en caché, en segundos.
                    Cuando ya existe un scrape coincidente y es más reciente que
                    max_age segundos, Olostep devuelve el resultado almacenado
                    en lugar de iniciar un nuevo scrape de navegador. Por
                    defecto es 0 (siempre hacer un scrape nuevo). En el
                    playground del dashboard, el valor por defecto es 86400 (24
                    horas). El valor máximo permitido es 604800 (7 días).
                    Consulta la sección de Caching en la documentación de la
                    función Scrapes para más detalles.
              required:
                - url_to_scrape
      responses:
        '200':
          description: Respuesta exitosa con los detalles de inicio del scrape.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID del Scrape
                  object:
                    type: string
                    description: El tipo de objeto. "scrape" para este endpoint.
                  created:
                    type: number
                    description: Época creada
                  metadata:
                    type: object
                    description: Metadatos definidos por el usuario.
                  url_to_scrape:
                    type: string
                    description: La URL que fue scrapeada.
                  result:
                    type: object
                    properties:
                      html_content:
                        type: string
                      markdown_content:
                        type: string
                      text_content:
                        type: string
                      json_content:
                        type: string
                        description: Contenido del parser
                      screenshot_hosted_url:
                        type: string
                      html_hosted_url:
                        type: string
                      markdown_hosted_url:
                        type: string
                      text_hosted_url:
                        type: string
                      links_on_page:
                        type: array
                        items:
                          type: string
                      page_metadata:
                        type: object
                        properties:
                          status_code:
                            type: integer
                          title:
                            type: string
                  credits_consumed:
                    type: integer
                    nullable: true
                    description: >-
                      Número de créditos consumidos por esta solicitud. Se
                      completa después de que la ejecución finaliza. Los
                      créditos son la fuente de verdad para la facturación.
                  cost_usd:
                    type: number
                    nullable: true
                    description: >-
                      Costo estimado en USD para esta solicitud. Se completa
                      después de que la ejecución finaliza. Calculado a partir
                      de los créditos consumidos y tu tarifa de plan — 99%
                      preciso, pero credits_consumed es el valor autoritativo.
        '400':
          description: >-
            La solicitud no puede ser cumplida debido a un problema con la URL
            de destino. Códigos comunes: `dns_resolution_failed` (el dominio no
            existe), `invalid_url` (URL malformada).
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - invalid_request_error
                      code:
                        type: string
                        example: dns_resolution_failed
                      message:
                        type: string
              example:
                id: error_x2nmu5bqn6
                object: error
                created: 1777923912
                metadata: {}
                error:
                  type: invalid_request_error
                  code: dns_resolution_failed
                  message: The URL contains a typo, or the domain does not exist.
        '402':
          description: Pago requerido — clave de API inválida o agotada.
        '404':
          description: El ID del scrape solicitado no fue encontrado.
        '500':
          description: Error interno del servidor.
        '502':
          description: >-
            El sitio web de destino tiene un problema de configuración TLS/SSL.
            `error.code` siempre es `tls_error`; `error.detail` lleva el código
            de error SSL específico de bajo nivel (por ejemplo,
            `err_ssl_tlsv1_alert_internal_error`, `cert_verification_failed`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  url:
                    type: string
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - invalid_request_error
                      code:
                        type: string
                        enum:
                          - tls_error
                      detail:
                        type: string
                        description: Código de error SSL de bajo nivel para diagnósticos.
                      message:
                        type: string
              example:
                id: error_ogeb6rik8c
                object: error
                created: 1777923969
                url: https://example.com
                metadata: {}
                error:
                  type: invalid_request_error
                  code: tls_error
                  detail: err_ssl_tlsv1_alert_internal_error
                  message: >-
                    The website closed or rejected the TLS handshake. The server
                    may be misconfigured or use an unsupported SSL/TLS version.
        '504':
          description: >-
            El scrape no se completó dentro del presupuesto de espera (~55
            segundos). La página de destino puede ser lenta, estar protegida
            contra bots o estar temporalmente no disponible. Seguro para
            reintentar.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  url:
                    type: string
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - request_timeout
                      code:
                        type: string
                        enum:
                          - scrape_poll_timeout
                      message:
                        type: string
              example:
                id: error_qat3d1amjt
                object: error
                created: 1777923969
                url: https://example.com
                metadata: {}
                error:
                  type: request_timeout
                  code: scrape_poll_timeout
                  message: >-
                    Request timed out while waiting for scrape result. The page
                    may be slow, blocked for our fetchers, or temporarily
                    unavailable.
      security:
        - Authorization: []
components:
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Encabezado de autenticación Bearer de la forma Bearer <token>, donde
        <token> es tu token de autenticación.

````