> 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/web-scraper-api/features/custom-parser/parser-presets.md).

# Presets del parser

Puedes **guardar**, **reutilizar**, y **modificar** instrucciones personalizadas de análisis a través de Web Scraper API. Una vez que crees un preajuste de analizador, lo alojaremos en nuestro sistema, lo que te permitirá referenciarlo en tus trabajos de scraping mediante el `parser_preset` parámetro en el payload.

Esta función ofrece varias **capacidades clave**:

* Guarda y administra tus propios analizadores en nuestro sistema
* Reutiliza fácilmente preajustes en varios trabajos de scraping
* Crea, recupera, actualiza, elimina y lista todos los preajustes
* Accede a las estadísticas de rendimiento y uso de un preajuste
* Adáptate a sitios cambiantes usando preajustes con auto-reparación

## Referencia de API

**Punto final:** `https://data.oxylabs.io/v1/parsers/presets`

La tabla enumera cada operación disponible y su ruta de endpoint:

<table><thead><tr><th width="247.30859375">Acción</th><th width="152.23828125">Método de solicitud</th><th>Ruta</th></tr></thead><tbody><tr><td><strong>Crear</strong> un preajuste</td><td><code>POST</code></td><td><code>/v1/parsers/presets</code></td></tr><tr><td><strong>Recuperar</strong> un preajuste</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Actualizar</strong> un preajuste</td><td><code>PUT</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Eliminar</strong> un preajuste</td><td><code>DELETE</code></td><td><code>/v1/parsers/presets/{preset_name}</code></td></tr><tr><td><strong>Listar todos los</strong> preajustes</td><td><code>GET</code></td><td><code>/v1/parsers/presets</code></td></tr><tr><td><strong>Ver uso</strong> y <strong>rendimiento</strong> estadísticas</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{preset_name}/stats</code></td></tr><tr><td><strong>Seguimiento de auto-reparación</strong> cambios</td><td><code>GET</code></td><td><code>/v1/parsers/presets/{parser_name}/changelog</code></td></tr></tbody></table>

## Habilitar auto-reparación

Los preajustes de parser están equipados con la función de auto-reparación, que ayuda a mantener los analizadores y sus tasas de éxito a medida que cambian los sitios web. Cuando se habilita, los preajustes de parser **se reparan automáticamente** y ajustan las instrucciones de análisis en segundo plano sin necesidad de entrada manual adicional.

Para **habilitar la auto-reparación** para tu preajuste de Custom Parser personalizado, incluye los siguientes parámetros obligatorios al crear o actualizar un preajuste:

<table><thead><tr><th width="222.90234375">Parámetro</th><th>Descripción</th></tr></thead><tbody><tr><td><code>self_heal</code></td><td>Activa la funcionalidad de auto-reparación cuando se establece en <code>True</code>.</td></tr><tr><td><code>prompt_schema</code></td><td>Un esquema JSON que describe la salida requerida del parser. Puedes crear automáticamente el esquema cuando <a href="/pages/719948981073d1c60f031d22cc44705324b9215a">generas parsers con la API</a>.</td></tr><tr><td><code>urls</code></td><td>Una lista de hasta 5 URLs del mismo tipo de página. Recomendamos proporcionar de 3 a 5 URLs para ayudar al parser a adaptarse a distintos diseños y mejorar la precisión del análisis.</td></tr></tbody></table>

<details>

<summary>Ejemplo de payload</summary>

El ejemplo de payload que se muestra aquí habilita la auto-reparación al actualizar un preset existente.

**Punto final:** `PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

```json
{
    "self_heal": true,
    "urls": ["https://sandbox.oxylabs.io/products"],
    "prompt_schema": {
        "properties": {
            "product_titles": {
                "description": "Title of each product.",
                "items": {
                    "type": "cadena"
                },
                "maxItems": 5,
                "title": "Product Titles",
                "type": "array"
            }
        },
        "required": [
            "product_titles"
        ],
        "title": "Campos",
        "type": "objeto"
    }
}
```

</details>

## Ejemplos de uso

### Crear un preajuste

**Punto final:** `POST https://data.oxylabs.io/v1/parsers/presets`

**Payload:**

```json
{
    "name": "my_new_parser",
    "description": "Extract text from all H4 elements on the page.",
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        }
    }
}
```

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extract text from all H4 elements on the page.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}
```

</details>

### Usar un preajuste

**Punto final:** `POST https://realtime.oxylabs.io/v1/queries`

**Payload:**

```json
{
    "source": "universal",
    "url": "https://sandbox.oxylabs.io/products",
    "parse": true,
    "parser_preset": "my_new_parser"
}
```

<details>

<summary>Salida</summary>

```json
{
    "results": [
        {
            "content": {
                "titles": [
                    "The Legend of Zelda: Ocarina of Time",
                    "Super Mario Galaxy",
                    "Super Mario Galaxy 2",
                    "Metroid Prime",
                    "Super Mario Odyssey",
                    "Halo: Combat Evolved",
                    "The House in Fata Morgana - Dreams of the Revenants Edition -",
                    "NFL 2K1",
                    "Uncharted 2: Among Thieves",
                    "Tekken 3",
                    "The Legend of Zelda: The Wind Waker",
                    "Gran Turismo",
                    "Metal Gear Solid 2: Sons of Liberty",
                    "Grand Theft Auto Double Pack",
                    "Baldur's Gate II: Shadows of Amn",
                    "Tetris Effect: Connected",
                    "The Legend of Zelda Collector's Edition",
                    "Gran Turismo 3: A-Spec",
                    "The Legend of Zelda: A Link to the Past",
                    "The Legend of Zelda: Majora's Mask",
                    "The Last of Us",
                    "Persona 5 Royal",
                    "The Last of Us Remastered",
                    "The Legend of Zelda: Ocarina of Time 3D",
                    "Chrono Cross",
                    "Gears of War",
                    "Sid Meier's Civilization II",
                    "Halo 3",
                    "Ninja Gaiden Black",
                    "Super Mario Advance 4: Super Mario Bros. 3",
                    "Jet Grind Radio",
                    "Grim Fandango"
                ],
                "parse_status_code": 12000
            },
            "created_at": "2025-10-27 11:41:18",
            "updated_at": "2025-10-27 11:41:19",
            "page": 1,
            "url": "https://sandbox.oxylabs.io/products",
            "job_id": "7388540292158203905",
            "is_render_forced": false,
            "status_code": 200,
            "type": "parsed",
            "parser_type": "preset",
            "parser_preset": "my_new_parser"
        }
    ]
}
```

</details>

### Recuperar un preajuste

**Punto final:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extract text from all H4 elements on the page.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:40:22"
}
```

</details>

### Actualizar un preajuste

**Punto final:** `PUT https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

Define los campos del preajuste que deseas actualizar. En el siguiente ejemplo, solo el `parsing_instructions` se actualizará.

**Payload:**

```json
{
    "parsing_instructions": {
        "titles": {
            "_fns": [
                {
                    "_args": ["//h4/text()"],
                    "_fn": "xpath"
                }
            ]
        },
        "prices": {
            "_fns": [
                {
                    "_args": [".price-wrapper"],
                    "_fn": "css"
                },
                {"_fn": "element_text"}
            ]
        }
    }
}
```

<details>

<summary>Salida</summary>

```json
{
    "id": 421947,
    "name": "my_new_parser",
    "description": "Extract text from all H4 elements on the page.",
    "prompt_text": null,
    "prompt_schema": null,
    "urls": [],
    "render": false,
    "parsing_instructions": {
        "prices": {
            "_fns": [
                {
                    "_args": [
                        ".price-wrapper"
                    ],
                    "_fn": "css"
                },
                {
                    "_fn": "element_text"
                }
            ]
        },
        "titles": {
            "_fns": [
                {
                    "_args": [
                        "//h4/text()"
                    ],
                    "_fn": "xpath"
                }
            ]
        }
    },
    "self_heal": false,
    "heal_status": "disabled",
    "last_healed_at": null,
    "created_at": "2025-10-27 11:40:22",
    "updated_at": "2025-10-27 11:44:24"
}
```

</details>

### Eliminar un preajuste

**Punto final:** `DELETE https://data.oxylabs.io/v1/parsers/presets/{preset_name}`

### Listar todos los preajustes

**Punto final:** `GET https://data.oxylabs.io/v1/parsers/presets`

<details>

<summary>Salida</summary>

```json
[
    {
        "id": 421950,
        "name": "books_parser",
        "description": "Parses all book titles on the page.",
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "render": false,
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h3//text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "self_heal": false,
        "heal_status": "disabled",
        "last_healed_at": null,
        "created_at": "2025-10-27 11:46:59",
        "updated_at": "2025-10-27 11:46:59"
    },
    {
        "id": 421947,
        "name": "my_new_parser",
        "description": "Extract text from all H4 elements on the page.",
        "prompt_text": null,
        "prompt_schema": null,
        "urls": [],
        "render": false,
        "parsing_instructions": {
            "titles": {
                "_fns": [
                    {
                        "_args": [
                            "//h4/text()"
                        ],
                        "_fn": "xpath"
                    }
                ]
            }
        },
        "self_heal": false,
        "heal_status": "disabled",
        "last_healed_at": null,
        "created_at": "2025-10-27 11:40:22",
        "updated_at": "2025-10-27 11:45:20"
    }
]
```

</details>

### Ver estadísticas

**Punto final:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/stats`

<details>

<summary>Salida</summary>

```json
{
    "total_results": 9,
    "successful_results": 9,
    "success_rate": 100,
    "success_rate_by_path": {
        "titles": 100
    }
}
```

</details>

Puedes **filtrar resultados por fecha y hora** usando los `date_from` y/o `date_to` parámetros de URL. Usa el formato `YYYY-MM-DDTHH`, donde `T` indica la hora, y `HH` es la hora en formato de 24 horas.

Por ejemplo, para obtener estadísticas de 9 AM a 2 PM el 5 de agosto de 2025:

```url
https://data.oxylabs.io/v1/parsers/presets/{preset_name}/stats?date_from=2025-08-05T9&date_to=2025-08-05T14
```

### Seguimiento de cambios de auto-reparación

**Punto final:** `GET https://data.oxylabs.io/v1/parsers/presets/{preset_name}/changelog`

Nuestro sistema registra automáticamente la actividad de auto-reparación. Puedes acceder a este registro histórico para revisar todas las modificaciones realizadas por la función de auto-reparación.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/products/es/web-scraper-api/features/custom-parser/parser-presets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
