> 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/api-reference/es/trabajos-y-descubrimiento.md).

# Trabajos y descubrimiento

Referencia para enviar, agrupar y recopilar trabajos de scraping asíncronos, y para enumerar endpoints y parámetros en tiempo de ejecución.

<table><thead><tr><th width="112.5">Sección</th><th>Puntos de conexión</th></tr></thead><tbody><tr><td>Solicitudes</td><td><code>POST /v1/async/scrape/{path}</code>, <code>POST /v1/async/scrape/batch/{path}</code>, <code>GET /v1/async/scrape/{request_id}</code></td></tr><tr><td>Descubrimiento</td><td><code>GET /v1/scrapers</code>, <code>OPTIONS /v1/{endpoint}</code></td></tr></tbody></table>

## Solicitudes asíncronas

### `POST /v1/async/scrape/{path}`

Envía una solicitud de scraping asíncrona. `{path}` es cualquier ruta de scraping con `/v1/async/scrape/` en lugar de `/v1/scrape/`.

**Modos:** `asíncrono`

<table><thead><tr><th width="151">Nombre</th><th width="98">Tipo</th><th width="106.5">Requerido</th><th>Descripción</th></tr></thead><tbody><tr><td><code>callback_url</code></td><td>cadena</td><td>no</td><td>URL de webhook para la solicitud finalizada. Las URL mal formadas se rechazan con <code>400</code></td></tr><tr><td><code>storage</code></td><td>objeto</td><td>no</td><td>Entrega el resultado a un bucket en lugar de la respuesta</td></tr><tr><td><code>storage.type</code></td><td>cadena</td><td>sí, con <code>storage</code></td><td><code>s3</code>, <code>s3_gzip</code>, <code>s3_compatible</code>, <code>gcs</code>, o <code>tos</code>. Validado</td></tr><tr><td><code>storage.url</code></td><td>cadena</td><td>sí, con <code>storage</code></td><td>Destino del resultado. Validado para <code>s3</code>, <code>s3_gzip</code>, <code>s3_compatible</code>, y <code>tos</code>. Los valores no válidos devuelven <code>400</code> antes de que se cree la solicitud</td></tr></tbody></table>

Todos los demás parámetros son los del endpoint que se envía.

#### **Respuesta** – `202 Accepted`

<table><thead><tr><th width="207">Campo</th><th width="95">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>estado</code></td><td>cadena</td><td><code>pendiente</code></td></tr><tr><td><code>parámetros</code></td><td>objeto</td><td>La solicitud tal como se ejecutó, con los valores predeterminados completados</td></tr><tr><td><code>metadata.timestamp</code></td><td>entero</td><td>Marca de tiempo Unix en segundos</td></tr><tr><td><code>metadata.request_id</code></td><td>cadena</td><td>El ID de la solicitud. Úsalo para obtener el resultado</td></tr></tbody></table>

### `POST /v1/async/scrape/batch/{path}`

Envía una solicitud por cada valor de una lista. `{path}` es cualquier ruta de scraping que tiene un modo por lotes.

**Modos:** `por lotes`

<table><thead><tr><th width="131.5">Nombre</th><th width="93">Tipo</th><th width="158.5">Requerido</th><th>Descripción</th></tr></thead><tbody><tr><td><code>query</code></td><td>matriz de cadenas</td><td>sí, si el endpoint acepta <code>query</code></td><td>Valores, una solicitud por cada valor</td></tr><tr><td><code>url</code></td><td>matriz de cadenas</td><td>sí, si el endpoint acepta <code>url</code></td><td>URL, una solicitud por cada URL</td></tr><tr><td><code>callback_url</code></td><td>cadena</td><td>no</td><td>URL de webhook para cada solicitud finalizada</td></tr><tr><td><code>storage</code></td><td>objeto</td><td>no</td><td>Entrega al bucket para cada solicitud. Mismos campos que arriba</td></tr></tbody></table>

Todos los demás parámetros son los del endpoint que se envía y se aplican a cada solicitud. Usa el singular `query` o `url` campo con un valor de array. `queries` y `urls` no se aceptan.

#### **Respuesta** – `202 Accepted`

<table><thead><tr><th width="261">Campo</th><th width="141.5">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>data[]</code></td><td>array</td><td>Un objeto por cada solicitud aceptada. Se omite cuando no se acepta ninguna solicitud</td></tr><tr><td><code>errors[]</code></td><td>array</td><td>Un objeto de error por cada elemento rechazado. Se omite cuando no se rechaza ningún elemento</td></tr><tr><td><code>data[].state</code></td><td>cadena</td><td><code>pendiente</code></td></tr><tr><td><code>data[].params</code></td><td>objeto</td><td>La solicitud tal como se ejecutó</td></tr><tr><td><code>data[].metadata.request_id</code></td><td>cadena</td><td>El ID de la solicitud</td></tr></tbody></table>

No hay ruta de colección por lotes: recopila cada solicitud por su `request_id`. `/v1/scrape/batch` devuelve `404`.

### `GET /v1/async/scrape/{request_id}`

Devuelve el estado y el resultado de una solicitud enviada. Envía `metadata.request_id` de la respuesta de envío como el `request_id` parámetro de ruta.

#### **Respuesta** – `200 OK`

<table><thead><tr><th width="118">Campo</th><th width="76">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>estado</code></td><td>cadena</td><td><code>pendiente</code> mientras la solicitud está en cola o en ejecución, <code>completado</code> cuando termina</td></tr><tr><td><code>results[]</code></td><td>array</td><td>Misma estructura que la respuesta en tiempo real. Se completa cuando <code>estado</code> es <code>completado</code></td></tr></tbody></table>

Desconocido o caducado `request_id` devuelve `404`.

## Descubrimiento

### `GET /v1/scrapers`

Enumera las rutas de scraping en tiempo real implementadas para el cliente.

#### **Respuesta** – `200 OK`

```json
{
  "scrapers": [
    "/v1/scrape",
    "/v1/scrape/amazon",
    "/v1/scrape/amazon/product",
    "/v1/scrape/google/search"
    ...
  ]
}
```

<table><thead><tr><th width="113">Campo</th><th width="86.5">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>scrapers</code></td><td>matriz de cadenas</td><td>Rutas de scraping en tiempo real implementadas disponibles para el cliente</td></tr></tbody></table>

### `OPTIONS /v1/{endpoint}`

Devuelve una especificación de parámetros para un endpoint. La respuesta no es un cuerpo de solicitud ejecutable. Enumera los parámetros aceptados, anotados con su tipo, requisito, valores permitidos, valor predeterminado, límites de longitud y descripción.

`OPTIONS /v1/search` no está disponible.

#### **Respuesta** (`OPTIONS /v1/scrape`)

```json
{
  "url": "[cadena] [required] [max_len: 8192]. La URL de la página a extraer.",
  "output": [
    "[cadena] [optional] [enum: html, screenshot, markdown, json] [default: html]. `html` es el código fuente de la página, `markdown` la versión convertida, `screenshot` un PNG, y `json` los datos analizados."
  ],
  "json": {
    "schema": "[json] [min_len: 10] [max_len: 65535]. El esquema JSON al que se analiza la página extraída para la salida `json`. No se puede usar junto con `json.prompt`.",
    "prompt": "[cadena] [max_len: 8192]. El prompt que nombra los datos en los que se analiza la página extraída para la salida `json`. No se puede usar junto con `json.schema`."
  },
  "location": "[cadena] [optional]. País desde el que se realiza el scraping, como un código ISO 3166-1 alfa-2, por ejemplo `US`.",
  "device": "[cadena] [optional] [enum: desktop, mobile] [default: desktop]. Dispositivo para el que se renderiza la página extraída.",
  "run_js": "[booleano] [optional]. Renderiza la página usando JavaScript antes de extraerla, necesario para la salida `screenshot`."
}
```

#### **Formato de salida**

El valor de cada parámetro: `[tipo] [obligatorio o opcional] [restricciones]. Descripción.`

<table><thead><tr><th width="297">Token</th><th>Significado</th></tr></thead><tbody><tr><td><code>[cadena], [booleano], [entero], [JSON]</code></td><td>Tipo de parámetro</td></tr><tr><td><code>[obligatorio], [opcional]</code></td><td>Si el parámetro debe enviarse. No se muestra en todos los parámetros</td></tr><tr><td><code>[enum: a, b]</code></td><td>Valores permitidos</td></tr><tr><td><code>[default: x]</code></td><td>Valor usado cuando se omite el parámetro</td></tr><tr><td><code>[min_len: n], [max_len: n]</code></td><td>Longitud mínima y máxima</td></tr></tbody></table>

Los arrays se muestran como un array de un solo elemento que contiene la anotación del elemento. Los objetos anidados se muestran como objetos. Las rutas asíncronas también enumeran `storage` y `callback_url`.


---

# 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/api-reference/es/trabajos-y-descubrimiento.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.
