# ABC Chile Scraper - Productos, Precios y Ofertas (`scraperschile/abc-cl`) Actor

Scraper de ABC.cl para extraer productos, precios, descuentos, marcas, stock, imágenes y enlaces del catálogo chileno. Exporta datos estructurados a Dataset, JSON, CSV, Excel o API para comparar precios, seguir ofertas y analizar retail.

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

## Pricing

$3.00 / 1,000 producto extraidos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

Usa este **ABC Chile scraper** para convertir resultados públicos de búsqueda de [ABC.cl](https://www.abc.cl/) en un dataset estructurado de productos, precios, descuentos, marcas, categorías e imágenes. Está orientado a monitoreo de retail, comparación de ofertas, conciliación de catálogos y análisis del ecommerce chileno.

El Actor también sirve como una **API de productos y precios de ABC.cl** dentro de Apify. Puedes buscar un término, limitar el número de resultados, programar ejecuciones y consumir el dataset como JSON, CSV, Excel, XML o RSS. La extracción conserva la URL de origen y la fecha para que cada observación sea trazable.

### Qué puede hacer

- Buscar productos, categorías o marcas, por ejemplo `notebook`, `televisor`, `refrigerador` o `lavadora`.
- Guardar filas limpias en el Dataset predeterminado de Apify.
- Recorrer resultados hasta los límites de productos y páginas configurados.
- Incluir precios actuales, normales y especiales cuando ABC los publica.
- Registrar descuentos, vendedor, disponibilidad, atributos, imagen y URL pública.
- Ordenar la búsqueda por relevancia, novedades, precio o popularidad.

### Datos que entrega

Cada fila puede incluir:

| Campo | Descripción |
| --- | --- |
| `product_id`, `sku` | Identificadores del producto. |
| `name`, `brand` | Nombre y marca publicados por ABC. |
| `price` | Precio actual en CLP. |
| `normal_price` | Precio normal o anterior, cuando está disponible. |
| `card_price` | Precio con tarjeta u oferta especial, cuando está disponible. |
| `discount_amount`, `discount_percentage` | Monto y porcentaje de descuento publicados o calculados. |
| `currency` | Moneda, normalmente `CLP`. |
| `is_available`, `availability` | Indicadores de disponibilidad. |
| `category`, `category2`, `category3` | Jerarquía de categorías, cuando existe. |
| `seller_name` | Vendedor o marketplace, cuando se informa. |
| `url`, `image` | URL pública del producto e imagen principal. |
| `attributes` | Atributos visibles del producto. |
| `page`, `position` | Página y posición global en la ejecución. |
| `source_url` | Página de resultados consultada. |
| `search_term`, `scraped_at` | Término y fecha de extracción. |

Ejemplo de resultado:

```json
{
  "product_id": "123456",
  "sku": "123456",
  "name": "Notebook 15.6 Intel Core i5",
  "brand": "Lenovo",
  "price": 399990,
  "normal_price": 499990,
  "discount_percentage": 20,
  "currency": "CLP",
  "is_available": true,
  "category": "Computacion",
  "url": "https://www.abc.cl/notebook-15-6-intel-core-i5/p",
  "search_term": "notebook"
}
```

### Casos de uso

| Caso | Cómo ayuda el Actor |
| --- | --- |
| Monitoreo de precios | Sigue precios actuales, normales y descuentos de ABC en el tiempo. |
| Inteligencia competitiva | Compara ofertas públicas con otros comercios chilenos. |
| Matching de catálogos | Cruza nombres, SKU, marcas, imágenes y URLs con un catálogo interno. |
| Seguimiento de promociones | Detecta productos rebajados mediante ejecuciones programadas. |
| Análisis de surtido | Estudia marcas, categorías, vendedores y disponibilidad por búsqueda. |
| Reportes recurrentes | Alimenta planillas o herramientas de BI con datos nuevos. |

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

Abre el Actor en Apify, escribe el término en `term`, define `maxItems` y ejecuta. Al finalizar, abre **Dataset** para descargar CSV, JSON, Excel, XML o RSS, o usa el identificador del dataset desde la API.

Input mínimo:

```json
{
  "term": "notebook",
  "maxItems": 20
}
```

Búsqueda ordenada de menor a mayor precio:

```json
{
  "term": "televisor",
  "maxItems": 50,
  "sort": "price-low-to-high"
}
```

#### Referencia de input

| Campo | Tipo | Requerido | Descripción |
| --- | --- | --- | --- |
| `term` | string | sí | Producto, marca, categoría o palabra a buscar. |
| `maxItems` | integer | no | Máximo de productos a guardar. Predeterminado: `20`. |
| `pageSize` | integer | no | Productos solicitados por página. Predeterminado: `24`; máximo: `60`. |
| `maxPages` | integer | no | Máximo opcional de páginas. |
| `sort` | string | no | Orden; predeterminado: `relevantesparati`. |
| `concurrency` | integer | no | Páginas procesadas en paralelo. Predeterminado: `4`. |
| `retries` | integer | no | Reintentos por página. Predeterminado: `2`. |
| `timeoutSecs` | integer | no | Tiempo máximo por solicitud. Predeterminado: `15`. |
| `failOnNoResults` | boolean | no | Hace fallar la ejecución si no hay productos. Predeterminado: `false`. |

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_API_TOKEN>")

run = client.actor("scraperschile/abc-cl").call(
    run_input={
        "term": "notebook",
        "maxItems": 20,
        "pageSize": 24,
    }
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["price"], item["url"])
```

#### cURL

```bash
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <APIFY_API_TOKEN>' \
  -d '{
    "term": "notebook",
    "maxItems": 20,
    "pageSize": 24
  }' \
  'https://api.apify.com/v2/acts/scraperschile~abc-cl/runs?waitForFinish=60'
```

### Precio

Este Actor usa pago por resultado. Cada producto guardado en el dataset cuesta **USD 0,003** mediante el evento `result`. Usa `maxItems` para controlar la cantidad máxima de resultados cobrados y revisa la pestaña **Pricing** para confirmar la tarifa vigente.

### Límites y uso responsable

El Actor lee resultados públicos de ABC.cl en tiempo real. Precios, promociones, stock, categorías y disponibilidad pueden cambiar después de la extracción o variar respecto de una visita posterior. Para trabajos grandes, usa valores razonables de `maxItems`, páginas y frecuencia.

No recopila credenciales, carros, órdenes ni información privada de clientes. Utiliza los datos de forma responsable, respeta los términos aplicables de Apify y ABC.cl y cumple la legislación vigente.

> **Aviso de independencia:** Este Actor es una herramienta no oficial e independiente. No está afiliado, patrocinado ni respaldado por ABC.cl.

### Preguntas frecuentes y soporte

#### ¿Puedo extraer precios y ofertas de ABC Chile?

Sí. El Actor devuelve precio actual y, cuando ABC los publica, precio normal, precio especial y descuento.

#### ¿Extrae todo ABC.cl?

Extrae las páginas de resultados del término proporcionado hasta los límites configurados. Está optimizado para monitoreo dirigido por producto, marca o categoría, no para un rastreo ilimitado del sitio.

#### ¿Necesita una cuenta de ABC?

No. Usa información pública de búsqueda y catálogo, sin iniciar sesión.

#### ¿Cómo solicito ayuda?

Crea un issue desde la pestaña **Issues** del Actor e incluye la URL de la ejecución, el input y el comportamiento observado. No compartas tu token de Apify ni datos privados.

# Actor input Schema

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

Producto, marca o texto a buscar en ABC.cl. Ejemplos: notebook, televisor, refrigerador, zapatillas.

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

Limite de productos a guardar. Usalo para controlar costo y mantener corridas rapidas.

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

Cantidad de productos solicitados por pagina al sitio.

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

Limite opcional de paginas. Si se omite, se calcula desde maxItems y pageSize.

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

Ordenamiento publico disponible en ABC.cl.

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

Paginas procesadas en paralelo. El valor por defecto prioriza velocidad con bajo riesgo de bloqueo.

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

Reintentos por pagina si el sitio demora o corta temporalmente la respuesta.

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

Tiempo maximo en segundos para cada pagina de resultados.

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

Si esta activo, la corrida falla cuando no hay productos. Si esta apagado, termina con dataset vacio y OUTPUT no\_results.

## Actor input object example

```json
{
  "term": "notebook",
  "maxItems": 20,
  "pageSize": 24,
  "sort": "relevantesparati",
  "concurrency": 4,
  "retries": 2,
  "timeoutSecs": 15,
  "failOnNoResults": false
}
```

# Actor output Schema

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

Items del dataset por defecto con nombre, marca, precio, descuento, categoria, imagen y URL.

# 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": "notebook",
    "maxItems": 20,
    "pageSize": 24,
    "concurrency": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperschile/abc-cl").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": "notebook",
    "maxItems": 20,
    "pageSize": 24,
    "concurrency": 4,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": "notebook",
  "maxItems": 20,
  "pageSize": 24,
  "concurrency": 4
}' |
apify call scraperschile/abc-cl --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraperschile/abc-cl",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9fpHnJ4wf0A4Wja8H/builds/pEIqcVDaxr7CiyzDG/openapi.json
