> ## 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.

# Mapas

> Obtén todas las URLs de un sitio web.

A través del endpoint `/v1/maps` de Olostep puedes obtener todas las URLs de un sitio web. Esto es útil para el descubrimiento de contenido, análisis de la estructura del sitio (por ejemplo, SEO), o para decidir qué URLs deseas extraer a continuación.

* Obtén todas las URLs de un sitio web (incluyendo sitemaps y enlaces descubiertos)
* Usa patrones especiales para incluir/excluir rutas (por ejemplo, `/blog/**`)
* Pagina respuestas grandes con `cursor` (hasta 10MB por respuesta)
* Limita el volumen con `top_n`

Para detalles del API, consulta la [Referencia del API del Endpoint de Mapa](/api-reference/maps/create).

## Instalación

<CodeGroup>
  ```python Python theme={null}
  pip install olostep
  ```

  ```javascript Node theme={null}
  npm install olostep
  ```

  ```bash cURL theme={null}
  # curl está disponible por defecto en macOS, Linux y Windows
  ```

  ```javascript Node (API) theme={null}
  npm install node-fetch
  ```

  ```bash Python (API) theme={null}
  pip install requests
  ```
</CodeGroup>

## Uso

Envía una solicitud POST con la `url` del sitio web. Opcionalmente pasa `include_urls`, `exclude_urls` (patrones glob), y `top_n`.

<CodeGroup>
  ```python Python theme={null}
  from olostep import Olostep

  client = Olostep(api_key="YOUR_REAL_KEY")

  sitemap = client.maps.create(url="https://docs.olostep.com")

  for url in sitemap.urls():
      print(url)
  ```

  ```js Node theme={null}
  import Olostep from 'olostep'

  const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })

  const map = await client.maps.create({ url: 'https://docs.olostep.com' })

  for await (const url of map.urls()) {
    console.log(url)
  }
  ```

  ```bash cURL theme={null}
  curl -s -X POST "https://api.olostep.com/v1/maps" \
    -H "Authorization: Bearer $OLOSTEP_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://docs.olostep.com"
    }'
  ```

  ```js Node (API) theme={null}
  const res = await fetch('https://api.olostep.com/v1/maps', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer <YOUR_API_KEY>',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ url: 'https://docs.olostep.com' })
  })
  console.log(await res.json())
  ```

  ```python Python (API) theme={null}
  import requests
  import json

  endpoint = "https://api.olostep.com/v1/maps"

  payload = {
      "url": "https://docs.olostep.com"
  }
  headers = {
      "Authorization": "Bearer <YOUR_API_KEY>",
      "Content-Type": "application/json"
  }

  response = requests.post(endpoint, json=payload, headers=headers)
  print(json.dumps(response.json(), indent=2))
  ```
</CodeGroup>

El tiempo de respuesta suele ser de segundos, pero puede tardar hasta 120 segundos para sitios web más complejos. Puede extraer todas las URLs de un sitio web, incluso backlinks y aquellas no presentes en los Sitemaps. También puedes decidir las rutas de URLs que deseas incluir o excluir de la respuesta.

Por defecto, el endpoint devuelve alrededor de 100k URLs en una sola llamada (máximo 10MB). Si la respuesta incluye más datos, el API devuelve un parámetro `cursor` que puede usarse para paginación y obtener las URLs subsecuentes. Para más detalles, consulta la [Referencia del API](/api-reference/maps/create#body-cursor).

Este endpoint es particularmente útil cuando necesitas:

* Descubrir todas las páginas de contenido en un sitio web
* Analizar la estructura y jerarquía del sitio
* Preparar URLs para procesamiento por lotes
* Decidir qué URLs específicas extraer

Para un control más detallado sobre las URLs devueltas, puedes usar los parámetros `include_urls` y `exclude_urls`.

### Ejemplo

Supongamos que de [www.brex.com](http://www.brex.com) deseas extraer todas las URLs que tienen las rutas después de `/product/`, por ejemplo, `https://www.brex.com/product/api/no-code`, pero también incluir `www.brex.com/product`.
Puedes usar el siguiente código:

<CodeGroup>
  ```python Python theme={null}
  from olostep import Olostep

  client = Olostep(api_key="YOUR_REAL_KEY")

  sitemap = client.maps.create(
      url="https://www.brex.com/",
      include_urls=["/product", "/product/**"],
      top_n=100000,
  )

  for url in sitemap.urls():
      print(url)
  ```

  ```js Node theme={null}
  import Olostep from 'olostep'

  const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })

  const map = await client.maps.create({
    url: 'https://www.brex.com/',
    includeUrls: ['/product', '/product/**'],
    topN: 100000,
  })

  for await (const url of map.urls()) {
    console.log(url)
  }
  ```

  ```bash cURL theme={null}
  curl -s -X POST "https://api.olostep.com/v1/maps" \
    -H "Authorization: Bearer $OLOSTEP_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://www.brex.com/",
      "include_urls": ["/product", "/product/**"],
      "top_n": 100000
    }'
  ```

  ```js Node (API) theme={null}
  const endpoint = 'https://api.olostep.com/v1/maps'

  const res = await fetch(endpoint, {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer <YOUR_API_KEY>',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      url: 'https://www.brex.com/',
      include_urls: ['/product', '/product/**'],
      top_n: 100000
    })
  })
  console.log(await res.text())
  ```

  ```python Python (API) theme={null}
  import requests

  endpoint = "https://api.olostep.com/v1/maps"

  payload = {
      "url": "https://www.brex.com/",
      "include_urls": ["/product", "/product/**"],
      "top_n": 100000
  }

  headers = {
      "Authorization": "Bearer <YOUR_API_KEY>",
      "Content-Type": "application/json"
  }

  response = requests.post(endpoint, json=payload, headers=headers)

  print(response.text)
  ```
</CodeGroup>

## Conclusión

El endpoint de mapas es una herramienta poderosa para el descubrimiento de contenido y análisis de sitios. Proporciona una lista completa de URLs en un sitio web, permitiéndote extraer contenido de páginas específicas o analizar la estructura del sitio. Este endpoint es particularmente útil para profesionales de SEO, marketers de contenido, y agentes de IA que necesitan analizar el contenido o la estructura de un sitio web.

## Precios

El mapa cuesta 1 crédito. Luego, por cada 1000 URLs adicionales devueltas en la respuesta, se cobra un crédito adicional.
