> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/products/es/api-web/scrape.md).

# /scrape

Aprende a usar el endpoint /scrape de la Oxylabs Web API para obtener y analizar cualquier página web en el formato que quieras.

El `/v1/scrape` El endpoint obtiene páginas web por URL, gestionando automáticamente el renderizado sin interfaz, la rotación de proxies, los desafíos de acceso y la localización. Devuelve datos estructurados de la página en Markdown, HTML, JSON o como capturas de pantalla PNG.

## Ejemplo de solicitud

El endpoint acepta un payload JSON que define la URL de destino, los formatos de salida solicitados, las opciones de renderizado y el contexto de geolocalización.

```bash
curl https://webapi.oxylabs.io/v1/scrape \\
  -H "Authorization: Bearer $OXYLABS_WEB_API_KEY" \\
  -H 'Content-Type: application/json' \\
  -d '{
      "url": "https://artificialintelligenceact.eu/implementation-timeline/",
      "output": ["markdown"]
  }'
```

### Parámetros de la solicitud

<table><thead><tr><th width="98">Parámetro</th><th width="566">Descripción</th><th width="93">Tipo</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><code>url</code></mark></td><td>Absoluta <code>http</code> / <code>https</code> URL de destino.</td><td>cadena</td></tr><tr><td><code>output</code></td><td>Formato de respuesta: <code>markdown</code>, <code>html</code>, <code>json</code>, <code>screenshot</code>. Admite múltiples valores. Valor predeterminado: <code>html</code></td><td>arreglo de cadenas</td></tr><tr><td><code>json</code></td><td>Cuando <code>output: ["json"]</code>, puede usarse para análisis personalizado de IA mediante <code>prompt</code> o <code>schema</code>. Consulte <a href="/products/es/api-web/scrape/analisis-con-ia.md">Análisis de IA</a>.</td><td>objeto</td></tr><tr><td><code>location</code></td><td>Código de país ISO 3166-1 alpha-2 de dos letras (por ejemplo, <code>"US"</code>, <code>"DE"</code>, <code>"JP"</code>).</td><td>cadena</td></tr><tr><td><code>device</code></td><td>Emulación de User-Agent y viewport: <code>"desktop"</code> (predeterminado) o <code>"mobile"</code>. </td><td>cadena</td></tr><tr><td><code>run_js</code></td><td>Habilita el renderizado de JavaScript cuando se establece en <code>true</code>. Valor predeterminado: <code>false</code>.</td><td>booleano</td></tr></tbody></table>

&#x20;    – parámetro obligatorio.

<details>

<summary><strong><code>output</code></strong></summary>

El `output` El array permite obtener múltiples formatos de salida en una sola ejecución de la solicitud. A continuación se muestra un ejemplo de solicitud con salida combinada:

```json
{
  "url": "https://example.com/product",
  "output": ["markdown", "json"],
  "json": {
    "prompt": "Extract the product name, stock status, and price as a number."
  }
}
```

<table data-header-hidden><thead><tr><th width="119"></th><th></th></tr></thead><tbody><tr><td><code>markdown</code></td><td>Convierte el árbol DOM en Markdown limpio y estructurado, eliminando scripts de navegación y formato de estilo. Optimizado para su ingesta en ventanas de contexto de LLM para minimizar el uso de tokens.</td></tr><tr><td><code>html</code></td><td>El marcado bruto de la página. Úselo cuando necesite el marcado en sí mismo (atributos, JSON-LD incrustado, datos en línea). No se recomienda para la recolección del contenido de la página.</td></tr><tr><td><code>screenshot</code></td><td>Imagen PNG codificada en Base64 de la página completamente renderizada. <strong><code>run_js: true</code> es requerido</strong>, de lo contrario se rechaza la solicitud.</td></tr><tr><td><code>json</code></td><td>Extracción estructurada en la misma solicitud que la recuperación (sin selectores que escribir o mantener). Describa los campos en un <code>prompt</code>, o fije su forma exacta con un <code>schema</code>. Consulte <a href="/products/es/api-web/scrape/analisis-con-ia.md">análisis de IA</a>.</td></tr></tbody></table>

{% hint style="info" %}
**Excepción:** `video` el formato de salida está disponible para `/scrape/media` [Raspadores dedicados](/products/es/api-web/scrape/scrapers-dedicados.md).
{% endhint %}

</details>

<details>

<summary><strong><code>run_js</code></strong></summary>

Ejecuta el propio JavaScript de la página antes de capturar el contenido.

Omitir `run_js` usa por defecto la ruta de ejecución óptima para la ruta de origen dada. Establecer explícitamente `"run_js": true` usa una instancia de navegador sin interfaz para ejecutar scripts del lado del cliente, solicitudes XHR dinámicas y renderizado de aplicaciones de una sola página (SPA).

```json
{
  "url": "https://example.com/spa-dashboard",
  "output": ["markdown"],
  "run_js": true
}
```

* **Impacto en la latencia:** El renderizado con navegador sin interfaz aumenta de forma significativa la duración de la solicitud. Establezca los timeouts HTTP del cliente en al menos `150` segundos. Cuando se requiera un alto volumen, [entrega asíncrona](/products/es/api-web/scrape/modos-de-entrega.md) se recomienda.
* **Optimización de recursos:** Intente siempre obtener el contenido sin él. Para páginas estáticas o feeds RSS/Atom, pase `"run_js": false` para maximizar el rendimiento de solicitudes y minimizar la latencia. Elija el renderizado solo cuando sea necesario.

</details>

<details>

<summary><strong><code>location</code></strong></summary>

El geotargeting enruta las solicitudes a través de nodos de salida de proxy localizados. Esto garantiza que se sirvan correctamente los precios localizados, las variaciones de idioma y el contenido exclusivo de cada región.

```json
{
  "url": "https://example.com/pricing",
  "output": ["html"],
  "location": "DE",
  "check_empty_geo": true
}
```

{% hint style="info" %}
Cuando se usan [Raspadores dedicados](/products/es/api-web/scrape/scrapers-dedicados.md), algunos parámetros de localización pueden tener nombres diferentes.
{% endhint %}

</details>

## Ejemplo de salida

Una solicitud correcta devuelve un estado HTTP `200 OK` con un contenedor estándar. Los campos dentro de `results[]` con formatos de salida no solicitados devuelven `null`.

```json
{
  "status": 200,
  "results": [
    {
      "html": null,
      "markdown": "# Implementation Timeline\n\nProviders need to be compliant...",
      "screenshot": null,
      "json": null,
      "metadata": {
        "page": 1,
        "run_js": false,
        "url": "https://artificialintelligenceact.eu/implementation-timeline/"
      }
    }
  ],
  "params": {
    "url": "https://artificialintelligenceact.eu/implementation-timeline/",
    "output": ["markdown"],
    "json": { "schema": null, "prompt": null },
    "location": null,
    "device": "desktop",
    "run_js": null
  },
  "metadata": {
    "timestamp": 1787431568,
    "request_id": "7503078851572948993"
  }
}
```

{% hint style="info" %}
**`results[]` Los campos con formatos de salida no solicitados devuelven `null`.** \
Por ejemplo, solicitar `["markdown"]` rellena `markdown` y deja `html`, `screenshot` y `json` como null. Cualquier [raspador dedicado](/products/es/api-web/scrape/scrapers-dedicados.md) coloca sus campos estructurados bajo `json`.
{% endhint %}

### Diccionario de salida

<table><thead><tr><th width="208">Campo</th><th>Descripción</th><th width="92">Tipo</th></tr></thead><tbody><tr><td><code>estado</code></td><td>código de estado HTTP, <code>200</code> en caso de éxito. Consulte <a href="/products/es/api-web/resolucion-de-problemas.md">Códigos de error</a>.</td><td>entero</td></tr><tr><td><code>results</code></td><td>Una entrada para la URL solicitada.</td><td>arreglo</td></tr><tr><td><code>results[].markdown</code></td><td>Página como Markdown, si se solicita. <code>null</code> de lo contrario.</td><td>cadena</td></tr><tr><td><code>results[].html</code></td><td>Marcado bruto del resultado, si se solicita. <code>null</code> de lo contrario.</td><td>cadena</td></tr><tr><td><code>results[].json</code></td><td>Campos analizados por un <a href="/products/es/api-web/scrape/scrapers-dedicados.md">raspador dedicado</a> o <a href="/products/es/api-web/scrape/analisis-con-ia.md">analizador de IA</a>, si se solicita <code>null</code> de lo contrario.</td><td>objeto</td></tr><tr><td><code>results[].screenshot</code></td><td>Cadena de imagen codificada en Base64, si se solicita. <code>null</code> de lo contrario.</td><td>cadena</td></tr><tr><td><code>results[].metadata.url</code></td><td>URL obtenida para el scraping tras las redirecciones.</td><td>cadena</td></tr><tr><td><code>params</code></td><td>Todos los parámetros usados para las solicitudes con los valores predeterminados aplicados.</td><td>objeto</td></tr><tr><td><code>metadata.timestamp</code></td><td>Marca de tiempo Unix en segundos.</td><td>entero</td></tr><tr><td><code>metadata.request_id</code></td><td>Identificador de esta solicitud. <strong>Inclúyalo en los tickets de soporte.</strong></td><td>cadena</td></tr></tbody></table>

## Latencia y concurrencia

Un scrape renderiza una página real con un presupuesto en **segundos, no milisegundos**. Recomendamos un par de prácticas seguras para construir sobre ello:

<table data-header-hidden><thead><tr><th width="123"></th><th></th></tr></thead><tbody><tr><td><strong>Tiempo de espera del cliente</strong></td><td>150 segundos es un valor predeterminado seguro, mientras que un timeout de 10 segundos puede fallar en páginas que habrían tenido éxito. Para volúmenes más altos (p. ej., medios, grandes ejecuciones SERP, etc.) con riesgo de timeout del cliente, ejecute los mismos scrapers con entrega asíncrona en lugar de bloquear la solicitud. Consulte <a href="/products/es/api-web/scrape/modos-de-entrega.md">Modos de entrega</a>.</td></tr><tr><td><strong>Límite de concurrencia</strong></td><td>Scrapear diez resultados de búsqueda en paralelo multiplica el coste y la latencia de páginas que no leerá. Scrapee las dos o tres que probablemente respondan a la pregunta y solo aumente la concurrencia gradualmente hasta que <code>429</code> se alcance el error.</td></tr></tbody></table>

## Raspadores dedicados

Más allá del scraping genérico de URLs, los raspadores específicos para cada destino se pueden usar con `POST /v1/scrape/{target}/{collection}`. Aceptan parámetros específicos del destino (p. ej., ASIN, nodos de navegación, códigos postales de tienda) y devuelven campos estructurados bajo `results[].json`:

```bash
curl https://webapi.oxylabs.io/v1/scrape/amazon/product \\
  -H "Authorization: Bearer $OXYLABS_WEB_API_KEY" \\
  -H 'Content-Type: application/json' \\
  -d '{
    "query": "B0935DN1BN",
    "output": ["json"],
    "location": "10115",
    "domain": "de",
    "currency": "EUR"
  }'
```

Consulte [Raspadores dedicados](/products/es/api-web/scrape/scrapers-dedicados.md) para descripciones generales de los destinos (Google, Amazon, YouTube, Bing, IA y LLMs, Comercio, etc.).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developers.oxylabs.io/products/es/api-web/scrape.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
