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

# Integración de Olostep + Apify

> Automatiza la búsqueda web, scraping y crawling con Apify Actors usando Olostep — la API para buscar, extraer y estructurar datos web.

Olostep es una API de búsqueda, scraping y crawling web — una API para buscar, extraer y estructurar datos web. Esta guía muestra cómo usar Olostep con Apify Actors para construir pipelines de datos web confiables de principio a fin.

## Qué puedes construir

<CardGroup cols={2}>
  <Card title="Scrapear Sitio Web" icon="file-lines">
    Extrae contenido de cualquier URL individual en Markdown, HTML, JSON o Texto
  </Card>

  <Card title="Scrapear URLs en Lote" icon="layer-group">
    Procesa grandes listas de URLs en paralelo con salidas estructuradas
  </Card>

  <Card title="Crear Crawl" icon="spider-web">
    Descubre y scrapea páginas enlazadas para construir conjuntos de datos completos
  </Card>

  <Card title="Crear Mapa" icon="map">
    Extrae todas las URLs de un sitio web (descubrimiento tipo sitemap)
  </Card>

  <Card title="Respuestas impulsadas por IA" icon="robot">
    Haz preguntas y obtén respuestas estructuradas en JSON con fuentes
  </Card>
</CardGroup>

## Inicio rápido

### 1) Instalar Apify CLI

```bash theme={null}
npm install -g apify-cli
apify --version
```

### 2) Obtén tu clave API de Olostep

Desde el Dashboard de Olostep → Claves API.

### 3) Ejecuta el Actor de Olostep localmente

```bash theme={null}
cd olostep-tools/integrations/apify
apify run
```

El archivo de entrada local por defecto se encuentra en:
`olostep-tools/integrations/apify/storage/key_value_stores/default/INPUT.json`

Ejemplo de entrada:

```json theme={null}
{
  "operation": "scrape",
  "apiKey": "YOUR_OLostep_API_KEY",
  "url_to_scrape": "https://example.com",
  "formats": "markdown"
}
```

### 4) Desplegar en Apify (nube)

```bash theme={null}
apify login
apify push
```

Luego abre la Consola de Apify → Actores → ejecuta el actor con la entrada deseada.

### Ejecutar en la Consola de Apify (paso a paso)

1. Abre tu Actor en la Consola de Apify → Fuente → Entrada.
2. En la pestaña Manual verás un campo visible “Clave API de Olostep”. Pega tu clave desde el Dashboard de Olostep.
3. Elige una operación (por defecto es “scrape”).
4. Rellena los campos relevantes (para “scrape”, establece “URL para Scrapear”).
5. Haz clic en Guardar → Iniciar.
6. Cuando la ejecución termine, abre la pestaña Conjunto de Datos para descargar los resultados (JSON/CSV/Excel).

Notas:

* Para “URL para Scrapear”, puedes pegar con o sin esquema. Si falta, el actor automáticamente antepone `https://`.
* Si un sitio es pesado en JavaScript y ves un tiempo de espera, establece “Esperar Antes de Scrapear” a 2000–5000 ms y ejecuta de nuevo.

## Operaciones disponibles

### Scrapear Sitio Web

Extrae contenido de una sola URL. Ideal para automatización a nivel de página.

<ParamField path="operation" type="constant" default="scrape">
  Debe ser "scrape"
</ParamField>

<ParamField path="apiKey" type="string" required>
  Tu clave API de Olostep (Bearer)
</ParamField>

<ParamField path="url_to_scrape" type="string" required>
  La URL para scrapear (debe incluir http\:// o https\://)
</ParamField>

<ParamField path="formats" type="dropdown" default="markdown">
  Uno de: Markdown, HTML, JSON, Texto
</ParamField>

<ParamField path="country" type="string">
  Código de país opcional (ej., "US", "GB", "CA")
</ParamField>

<ParamField path="wait_before_scraping" type="integer">
  Tiempo de espera opcional en ms para renderizado de JavaScript (0–10000)
</ParamField>

<ParamField path="parser" type="string">
  ID de parser opcional (ej., "@olostep/amazon-product")
</ParamField>

Campos de salida:

* id, url, estado, formatos
* markdown\_content / html\_content / json\_content / text\_content
* URLs alojadas (si están disponibles), metadatos de la página

### Scrapear URLs en Lote

Procesa muchas URLs a la vez con formato y estructura consistentes.

<ParamField path="operation" type="constant" default="batch">
  Debe ser "batch"
</ParamField>

<ParamField path="apiKey" type="string" required>
  Tu clave API de Olostep
</ParamField>

<ParamField path="batch_array" type="text" required>
  Arreglo JSON de objetos con `url` y `custom_id` opcional\
  Ejemplo: `[{"url":"https://example.com","custom_id":"site1"}]`
</ParamField>

<ParamField path="formats" type="dropdown" default="markdown">
  Uno de: Markdown, HTML, JSON, Texto
</ParamField>

<ParamField path="country" type="string">
  Código de país opcional
</ParamField>

<ParamField path="wait_before_scraping" type="integer">
  Tiempo de espera opcional en ms para sitios JS
</ParamField>

<ParamField path="parser" type="string">
  ID de parser opcional
</ParamField>

Campos de salida:

* batch\_id, estado, total\_urls, created\_at, formatos, país, parser, urls\[]

### Crear Crawl

Sigue enlaces y scrapea múltiples páginas desde una URL de inicio.

<ParamField path="operation" type="constant" default="crawl">
  Debe ser "crawl"
</ParamField>

<ParamField path="apiKey" type="string" required>
  Tu clave API de Olostep
</ParamField>

<ParamField path="start_url" type="string" required>
  URL de inicio para el crawl
</ParamField>

<ParamField path="max_pages" type="integer" default="10">
  Máximo de páginas para scrapear. Establece en `1` para scrapear solo la URL de inicio.
</ParamField>

<ParamField path="formats" type="dropdown" default="markdown">
  Uno de: Markdown, HTML, JSON, Texto
</ParamField>

<ParamField path="country" type="string">
  Código de país opcional
</ParamField>

<ParamField path="parser" type="string">
  ID de parser opcional
</ParamField>

Campos de salida:

* crawl\_id, objeto, estado, start\_url, max\_pages, creado, formatos

### Crear Mapa

Descubre todas las URLs en un sitio web y prepáralas para scrapear en lote más tarde.

<ParamField path="operation" type="constant" default="map">
  Debe ser "map"
</ParamField>

<ParamField path="apiKey" type="string" required>
  Tu clave API de Olostep
</ParamField>

<ParamField path="website_url" type="string" required>
  El sitio web a mapear
</ParamField>

<ParamField path="search_query" type="string">
  Filtro de consulta opcional
</ParamField>

<ParamField path="top_n" type="integer">
  Limitar número de URLs
</ParamField>

<ParamField path="include_patterns" type="string">
  Incluir glob(s), ej. "/products/\*\*"
</ParamField>

<ParamField path="exclude_patterns" type="string">
  Excluir glob(s), ej. "/admin/\*\*"
</ParamField>

Campos de salida:

* map\_id, objeto, website\_url, total\_urls, urls\[], search\_query, top\_n

## Ejemplos de JSON para copiar y pegar (Consola → Entrada → JSON)

### Scrapear

```json theme={null}
{
  "operation": "scrape",
  "apiKey": "YOUR_OLOSTEP_API_KEY",
  "url_to_scrape": "https://www.wikipedia.org",
  "formats": "markdown",
  "wait_before_scraping": 2000
}
```

### Lote

```json theme={null}
{
  "operation": "batch",
  "apiKey": "YOUR_OLOSTEP_API_KEY",
  "batch_array": "[{\"url\":\"https://example.com\",\"custom_id\":\"site1\"},{\"url\":\"https://olostep.com\",\"custom_id\":\"site2\"}]",
  "formats": "json"
}
```

### Crawl

```json theme={null}
{
  "operation": "crawl",
  "apiKey": "YOUR_OLOSTEP_API_KEY",
  "start_url": "https://docs.example.com",
  "max_pages": 50,
  "formats": "markdown"
}
```

### Mapa

```json theme={null}
{
  "operation": "map",
  "apiKey": "YOUR_OLOSTEP_API_KEY",
  "website_url": "https://example.com",
  "include_patterns": "/blog/**",
  "top_n": 200
}
```

### Respuestas

```json theme={null}
{
  "operation": "answers",
  "apiKey": "YOUR_OLOSTEP_API_KEY",
  "task": "What is the latest funding round of Olostep? Provide company, round, date, amount.",
  "json": "{\"company\":\"\",\"round\":\"\",\"date\":\"\",\"amount\":\"\"}"
}
```

## Ejemplos de flujos de trabajo

<AccordionGroup>
  <Accordion title="Descubrir y Scrapear Productos">
    1. Crear Mapa → incluir "/products/\*\*"
    2. Analizar URLs → construir arreglo de lote
    3. Scrapear URLs en Lote → formatos: JSON
    4. Enviar a Google Sheets / Airtable
  </Accordion>

  <Accordion title="Monitoreo Diario de Contenidos">
    1. Programar actor (diario)
    2. Scrapear Sitio Web → formatos: Markdown
    3. Resumir con LLM
    4. Notificar en Slack
  </Accordion>

  <Accordion title="Base de Conocimientos de Competidores">
    1. Crear Crawl (blog/docs)
    2. Almacenar salidas en Notion
    3. Actualizar semanalmente con Programación
  </Accordion>
</AccordionGroup>

## Parsers especializados

Olostep soporta parsers para estructurar datos de sitios populares.

<CardGroup cols={2}>
  <Card title="Producto de Amazon" icon="amazon">
    `@olostep/amazon-product` → título, precio, calificación, reseñas, imágenes, variantes
  </Card>

  <Card title="Búsqueda de Google" icon="google">
    `@olostep/google-search` → resultados, títulos, fragmentos, URLs
  </Card>

  <Card title="Google Maps" icon="map">
    `@olostep/google-maps` → información de negocios, reseñas, calificaciones, ubicación
  </Card>

  <Card title="Más Parsers" icon="cart-shopping" href="https://www.olostep.com/store">
    Explora extractores de email, buscadores de redes sociales, extractores de enlaces de calendario, y más
  </Card>
</CardGroup>

## Mejores prácticas

<AccordionGroup>
  <Accordion title="Preferir lote para 3+ URLs">
    Más rápido, más barato, más fácil de monitorear y respetar límites de tasa.
  </Accordion>

  <Accordion title="Usar tiempos de espera apropiados">
    Sitios pesados en JS: aumenta `wait_before_scraping` (ej., 2000–5000ms).
  </Accordion>

  <Accordion title="Filtrar antes de scrapear">
    Evita tareas innecesarias — verifica cambios primero, mantén estado de deduplicación.
  </Accordion>

  <Accordion title="Almacenar contenido grande a través de URLs alojadas">
    Usa salidas alojadas para evitar límites de tamaño de carga en flujos de Apify.
  </Accordion>

  <Accordion title="Tratar operaciones asíncronas como de larga duración">
    Batch/Crawl/Map devuelven IDs; recupéralos más tarde o encadénalos con un retraso.
  </Accordion>

  <Accordion title="Manejar tiempos de espera transitorios limpiamente">
    Si ves un 504 o un tiempo de espera transitorio, el actor automáticamente reintenta una vez con un corto tiempo de espera.\
    También puedes establecer “Esperar Antes de Scrapear” a 2000–5000 ms para páginas pesadas en JS.
  </Accordion>
</AccordionGroup>

## Solución de problemas

<AccordionGroup>
  <Accordion title="Autenticación fallida">
    * Verifica la clave API desde el dashboard
    * Elimina espacios finales
    * Re‑ingresa en el formulario de entrada de Apify
  </Accordion>

  <Accordion title="Contenido vacío">
    * Aumenta el tiempo de espera
    * Verifica que la URL sea pública / no requiera inicio de sesión
    * Prueba con un formato de salida diferente
  </Accordion>

  <Accordion title="Límite de tasa excedido">
    * Espacia las ejecuciones mediante programación
    * Prefiere lote para muchas URLs
    * Actualiza el plan de Olostep si es necesario
  </Accordion>

  <Accordion title="Sitios bloqueados o dinámicos">
    * Prueba el parámetro de país
    * Ajusta espera y parser
    * Contacta soporte para orientación
  </Accordion>
</AccordionGroup>

## Precios

Olostep cobra por uso de API (independiente de Apify):

* Scrapes → por scrape
* Batches → por URL
* Crawls → por página
* Maps → por operación

Consulta `https://www.olostep.com/pricing`.

## Seguridad

* Tu clave API se envía como token Bearer en tiempo de ejecución.
* No cometas claves en control de versiones; Apify almacena entradas en Key‑Value Store.
* En desarrollo local, mantén las claves en `storage/key_value_stores/default/INPUT.json` (gitignored).

## Recursos relacionados

<CardGroup cols={2}>
  <Card title="API de Scrapes" icon="file-lines" href="/features/scrapes">
    Extrae Markdown, HTML, texto o JSON estructurado compatible con LLM de cualquier URL.
  </Card>

  <Card title="API de Batches" icon="layer-group" href="/features/batches">
    Procesa hasta 10k URLs concurrentemente y recupera resultados más tarde.
  </Card>

  <Card title="API de Crawls" icon="spider-web" href="/features/crawls">
    Descubre y scrapea recursivamente el contenido de un sitio.
  </Card>

  <Card title="API de Maps" icon="map" href="/features/maps">
    Obtén todas las URLs en un sitio web para preparar scrapes en lote.
  </Card>
</CardGroup>

## Soporte

<CardGroup cols={2}>
  <Card title="Sitio Web de Apify" icon="link" href="https://apify.com">
    Plataforma Apify
  </Card>

  <Card title="Documentación de Apify" icon="book" href="https://docs.apify.com">
    Documentación de la plataforma y SDK de Apify
  </Card>

  <Card title="Documentación" icon="book" href="https://docs.olostep.com">
    Documentación completa de la API
  </Card>

  <Card title="Correo de Soporte" icon="envelope" href="mailto:info@olostep.com">
    [info@olostep.com](mailto:info@olostep.com)
  </Card>
</CardGroup>
