# Ripley Chile Scraper - Productos, Precios y Stock (`scraperschile/ripley`) Actor

Scraper de Ripley Chile para extraer productos, precios, descuentos, stock, marcas, categorías, vendedores, imágenes y enlaces del marketplace. Exporta a JSON, CSV, Excel o API para comparar ofertas, monitorear catálogos y analizar retail.

- **URL**: https://apify.com/scraperschile/ripley.md
- **Developed by:** [Scrapers Chile](https://apify.com/scraperschile) (community)
- **Categories:** E-commerce
- **Stats:** 15 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 producto extraidos

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

El **Ripley Chile scraper** extrae productos de la búsqueda pública de Simple.Ripley.cl y los organiza en un dataset listo para análisis. Busca por producto o marca, recorre la paginación y conserva precios, descuentos, disponibilidad, vendedor, marketplace, categoría e identificadores que ayudan a seguir el catálogo chileno.

También funciona como una **Ripley API** mediante Apify. Puedes iniciar una ejecución desde tu aplicación, limitar el volumen y descargar filas normalizadas para pricing, BI o alertas. El Actor conserva por separado precio principal, precio normal y precio con tarjeta Ripley cuando el sitio los informa, sin asumir que todos los productos tienen esas tres condiciones.

> **Aviso de independencia:** este Actor es una herramienta no oficial desarrollada por Scrapers Chile. No pertenece, no representa ni está afiliada a Ripley. Ripley, Tarjeta Ripley y las marcas o vendedores mencionados pertenecen a sus respectivos titulares.

### Datos que puedes extraer

Una fila puede incluir:

- `product_id`, número de parte seleccionado, SKU y SKU marketplace;
- nombre, marca, EAN y modelo;
- precio principal, precio normal, precio con tarjeta, monto y porcentaje de descuento;
- moneda, disponibilidad y estado normalizado de stock;
- categoría y código de categoría;
- nombre e ID del vendedor e indicador de marketplace;
- URL del producto, imagen y URL de la búsqueda de origen;
- página, posición, término consultado y fecha de extracción;
- `raw_product` con el objeto original serializado para trazabilidad.

El registro `OUTPUT` agrega el estado de la corrida, total reportado, páginas recorridas y páginas fallidas si se aceptan resultados parciales.

### Casos de uso para retail

- Monitorear precios, descuentos y precio con tarjeta por palabra clave.
- Comparar venta directa y marketplace mediante vendedor e indicador asociado.
- Analizar marcas, categorías, posición y disponibilidad publicada.
- Crear históricos de precio para alertas y paneles de inteligencia comercial.
- Enriquecer catálogos con SKU, EAN, modelo, imagen y URL.
- Comparar el surtido visible de Ripley con otros retailers de Chile.

### Cómo ejecutarlo, usar la API y exportar

`term` es obligatorio. `maxItems` y `maxPages` acotan el volumen. Ripley fija actualmente `pageSize` en 58; `concurrency` acepta hasta 2 y el valor recomendado es 1 para priorizar estabilidad. `sort` admite `relevance_desc`, `price_asc`, `price_desc` y `newest_desc`. Con `allowPartialResults` activo, una corrida grande puede conservar productos ya obtenidos si falla una página posterior.

Ejemplo estable para una prueba:

```json
{
  "term": "notebook",
  "maxItems": 50,
  "concurrency": 1,
  "timeoutSecs": 45,
  "allowPartialResults": true
}
```

Ejemplo con la API de Apify:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/scraperschile~ripley/runs?token=TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"term":"notebook","maxItems":50,"concurrency":1}'
```

Los items quedan en el Dataset de la ejecución y pueden descargarse en JSON, CSV, Excel o XML. Para integraciones, recupera el `defaultDatasetId` de la corrida y consulta sus items mediante la API de datasets.

### Ejemplo de salida

Ejemplo ilustrativo basado en el esquema del Actor:

```json
{
  "product_id": "2000406105451P",
  "sku": "2000406105451",
  "name": "Televisor de ejemplo",
  "brand": "Marca",
  "price": 279990,
  "normal_price": 529990,
  "card_price": 259990,
  "discount_amount": 250000,
  "discount_percentage": 47,
  "currency": "CLP",
  "is_available": true,
  "availability": "available",
  "category": "Televisor",
  "category_code": "R040302000000",
  "seller_name": "Vendedor publicado",
  "is_marketplace": false,
  "url": "https://simple.ripley.cl/producto-ejemplo",
  "page": 1,
  "position": 1,
  "search_term": "televisor",
  "scraped_at": "2026-07-25T12:00:00Z"
}
```

### Precio

La modalidad es Pay per event: **USD 0.00005 por inicio de ejecución** y **USD 0.003 por producto guardado**. Guardar 1.000 productos representa USD 3.00 en eventos de resultado, más el cargo de inicio. El uso de recursos de la plataforma Apify se factura según el plan del usuario.

### Limitaciones y uso responsable

Ripley puede modificar su búsqueda pública, su protección o los campos disponibles. Precio con tarjeta, categoría, EAN, modelo y vendedor son opcionales. La disponibilidad puede cambiar por ubicación, despacho o reglas internas y no representa una reserva. Si una ejecución termina con estado parcial, revisa las páginas fallidas en `OUTPUT` antes de interpretar la cobertura.

El Actor no inicia sesión, no realiza compras y no recopila información privada. Mantén `concurrency` en 1 salvo que necesites más velocidad, usa límites acordes a tu objetivo y respeta las condiciones aplicables al sitio. Confirma precios críticos en la URL pública antes de tomar una decisión.

### Preguntas frecuentes y soporte

#### ¿Todos los productos incluyen precio con tarjeta?

No. `card_price` queda vacío cuando Ripley no publica esa condición en el resultado.

#### ¿Qué significa una ejecución parcial?

Significa que el Actor guardó productos válidos, pero una o más páginas posteriores fallaron. `OUTPUT` informa las páginas afectadas para que puedas evaluar la cobertura.

#### ¿Dónde reporto un cambio del sitio?

Abre la pestaña **Issues** del Actor con el término usado y el ID de ejecución. No incluyas tokens de API ni datos personales.

# Actor input Schema

## `term` (type: `string`):

Producto, marca o texto a buscar en Ripley.cl. Ejemplos: televisor, notebook, zapatillas mujer, perfume.

## `maxItems` (type: `integer`):

Limite opcional de productos a guardar. Util para pruebas rapidas, monitoreos acotados o ejecuciones controladas.

## `maxPages` (type: `integer`):

Limite opcional de paginas a recorrer. Si se omite, el Actor recorre toda la paginacion disponible o hasta alcanzar maxItems.

## `pageSize` (type: `integer`):

Cantidad de productos por pagina del flujo publico actual de Ripley. El sitio fija este valor en 58.

## `concurrency` (type: `integer`):

Cantidad de paginas de Ripley procesadas en paralelo. El valor por defecto prioriza estabilidad para pruebas automaticas; subelo solo si necesitas mayor velocidad.

## `sort` (type: `string`):

Ordenamiento aceptado por Ripley. Por defecto usa relevance\_desc.

## `retries` (type: `integer`):

Cantidad de reintentos por pagina si Ripley demora, corta o bloquea una solicitud.

## `timeoutSecs` (type: `integer`):

Tiempo maximo en segundos para que cada pagina entregue el JSON de busqueda.

## `failOnNoResults` (type: `boolean`):

Si esta activo, la ejecucion falla cuando Ripley no devuelve productos. Si esta apagado, guarda OUTPUT con estado no\_results.

## `allowPartialResults` (type: `boolean`):

Si esta activo, una corrida grande puede terminar correctamente con estado partial cuando algunas paginas posteriores fallan, guardando los productos ya extraidos y el detalle de paginas fallidas en OUTPUT.

## Actor input object example

```json
{
  "term": "televisor",
  "maxItems": 10,
  "pageSize": 58,
  "concurrency": 1,
  "sort": "relevance_desc",
  "retries": 3,
  "timeoutSecs": 45,
  "failOnNoResults": false,
  "allowPartialResults": true
}
```

# Actor output Schema

## `results` (type: `string`):

Items del dataset por defecto con nombre, marca, precios, descuento, disponibilidad, vendedor, URL e imagen.

## `summary` (type: `string`):

Registro OUTPUT con estado, paginas recorridas, metadata de busqueda y productos crudos agregados.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "term": "televisor",
    "maxItems": 10,
    "concurrency": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperschile/ripley").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "term": "televisor",
    "maxItems": 10,
    "concurrency": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("scraperschile/ripley").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "term": "televisor",
  "maxItems": 10,
  "concurrency": 1
}' |
apify call scraperschile/ripley --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraperschile/ripley"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/AUPT87u0grDcvgnrF/builds/qCb8eVpNNqYrXeHA0/openapi.json
