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

# API de rastreo de sitios web a Markdown (WEB_CRAWL)

> Rastrea un sitio desde una dirección de inicio y obtén cada página en Markdown, con cobro por página devuelta.

`WEB_CRAWL` sigue los enlaces de un sitio en anchura desde una dirección de inicio y lee cada página como lo hace [`WEB_SCRAPE`](/es/engines/web-scrape). Obtienes el Markdown, los metadatos y las imágenes de cada página en un solo resultado.

| | |
| - | - |
| `taskType` | `WEB_CRAWL` |
| Entrada | `url` (obligatorio); `maxPages`, `maxDepth`, `maxChars`, `includePaths`, `excludePaths`, `includeSubdomains`, `country` |
| Créditos | 1 por página devuelta. La tarea reserva `maxPages` créditos al enviarse. |
| País | `US` por defecto. |
| Ubicación | No admitida (`422 LOCATION_UNSUPPORTED`). |

## Solicitud

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskType": "WEB_CRAWL", "payload": { "url": "https://www.example.com/docs", "maxPages": 25, "maxDepth": 2, "includePaths": ["/docs/**"] } }'
```

## Parámetros

| Campo | Obligatorio | Descripción |
| - | - | - |
| `url` | Sí | La dirección de inicio. Mismas reglas que `WEB_SCRAPE`: `http` o `https` pública, puerto por defecto, hasta 2.048 caracteres. La página de inicio se lee siempre, digan lo que digan los patrones y el `robots.txt`. |
| `maxPages` | No | Páginas que leer, incluida la de inicio. Un entero de 1 a 100. 10 por defecto. |
| `maxDepth` | No | Saltos de enlace desde la página de inicio, un entero de 0 a 5. 2 por defecto. `0` lee solo la página de inicio. |
| `maxChars` | No | Limita el `markdown` de cada página, un entero de 1.000 a 50.000. 20.000 por defecto. |
| `includePaths`, `excludePaths` | No | Patrones de ruta, como en [`WEB_MAP`](/es/engines/web-map): hasta 20 de cada uno, empezando por `/`, de 200 caracteres como máximo. `*` coincide dentro de un segmento, `**` entre segmentos. `excludePaths` prevalece. |
| `includeSubdomains` | No | `true` sigue los enlaces a los subdominios del sitio. `false` por defecto. |
| `country` | No | La región desde la que se solicitan las páginas. `US` por defecto. |

El rastreo sigue un enlace cuando se queda en el sitio (con o sin `www.`), coincide con los patrones de ruta, apunta a una página web y no a un archivo (los PDF, imágenes, archivos comprimidos y demás archivos se omiten) y el `robots.txt` del sitio lo permite a todos los rastreadores.

## Respuesta

Por ejemplo:

```json theme={"theme":"css-variables"}
{
  "url": "https://www.example.com/docs",
  "pages": [
    {
      "url": "https://www.example.com/docs",
      "finalUrl": "https://www.example.com/docs",
      "depth": 0,
      "statusCode": 200,
      "title": "...",
      "markdown": "# ...",
      "images": [],
      "truncated": false
    }
  ],
  "failed": [{ "url": "https://www.example.com/docs/old", "depth": 1, "error": "the site answered 404 for this page" }],
  "stopReason": "max-pages"
}
```

| Campo | Descripción |
| - | - |
| `pages` | Las páginas leídas, en el orden en que el rastreo las encontró. Cada una tiene los campos de `WEB_SCRAPE` más `depth`, sus saltos de enlace desde la página de inicio. |
| `failed` | Las páginas que no se pudieron leer, cada una con `url`, `depth` y el motivo del sitio como `error`. |
| `stopReason` | Por qué terminó el rastreo. Consulta abajo. |

| `stopReason` | Significado |
| - | - |
| `done` | No quedaba ningún enlace que seguir. |
| `max-pages` | Se leyeron `maxPages` páginas. |
| `failures` | 10 páginas seguidas no se pudieron leer, o el total de páginas fallidas llegó a `maxPages`. |
| `time` | Se agotó el tiempo del rastreo. No se empiezan páginas nuevas tras unos 4 minutos. |

## Créditos

Al enviarse, la tarea reserva 1 crédito por cada página de `maxPages` (25 créditos en el ejemplo anterior). Al completarse, se cobra 1 crédito por cada página de `pages` y se libera el resto de la reserva. Las páginas de `failed` no se cobran. Un rastreo que devuelve 3 de 25 páginas cuesta 3 créditos. Consulta [Créditos y límites](/es/concepts/credits-and-limits.md) para saber cómo funcionan las reservas.

## Límites y errores

* Cuando la página de inicio no se puede leer, la tarea falla con `PAGE_UNAVAILABLE`. Cualquier otra página que no se pueda leer va a `failed` y el rastreo continúa.
* Las opciones no válidas devuelven `422 VALIDATION_ERROR` con el nombre del campo.
* `WEB_CRAWL` ignora `markdown`, `rawResponse` y `searchQueries`. Rechaza `html` y `analysis` con `422` y `citationAnalysis` con `400`; consulta [flags no admitidos](/es/engines/response-options.md#flags-no-admitidos).
* Los demás errores de solicitud se enumeran en [Errores](/es/concepts/errors.md).

## Relacionado

* [Web map](/es/engines/web-map.md) para listar las direcciones de un sitio sin leerlas
* [Web scrape](/es/engines/web-scrape.md) para una sola página


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.