# Scraper de Productos y Precios de Coto Argentina (`latinamericadata/coto-product-scraper`) Actor

Extrae productos de Coto Argentina y Coto Digital: precios en pesos argentinos, descuentos, promociones, disponibilidad por sucursal, EAN, marcas, categorias, imagenes y metadatos de SKU desde el catalogo online publico.

- **URL**: https://apify.com/latinamericadata/coto-product-scraper.md
- **Developed by:** [Latin America Data](https://apify.com/latinamericadata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 producto de coto 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/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

## Scraper de Productos y Precios de Coto Argentina

Extrae datos estructurados de **Coto Argentina** y **Coto Digital**: precios en pesos argentinos, ofertas, descuentos, promociones, disponibilidad por sucursal, EAN/codigos de barras, marcas, categorias, imagenes y metadatos de SKU.

Este Actor de Apify esta pensado para equipos de Argentina que necesitan monitorear precios de supermercado, analizar surtido, seguir promociones, comparar productos, enriquecer catalogos internos y construir reportes de inteligencia retail con datos de Coto Digital.

### Que Extrae Este Scraper de Coto

- Nombre del producto y nombre del SKU
- ID de producto, ID de SKU y PLU
- EAN / codigo de barras cuando esta disponible
- URL del producto en Coto Digital
- Imagen principal del producto
- Precio actual en pesos argentinos
- Precio de lista y precio con descuento
- Porcentaje de descuento
- ID de sucursal usado para precio y disponibilidad
- Disponibilidad en la sucursal seleccionada
- Lista completa de sucursales con disponibilidad
- Marca
- Categoria principal y ruta de categorias
- IDs de categoria
- Unidad de medida, formato y cantidad del envase
- Indicador de producto pesable para frescos vendidos por peso
- Cantidad minima y salto de cantidad
- Promociones, etiquetas de oferta y promociones de pago
- Terminos coincidentes y metadatos del resultado de busqueda
- URL de request usada como evidencia de origen
- Fecha y hora de extraccion

### Casos de Uso

- Monitorear precios de Coto y Coto Digital en Argentina.
- Seguir descuentos, ofertas y promociones de supermercado.
- Comparar precios de alimentos, bebidas, perfumeria, hogar y frescos.
- Controlar disponibilidad por sucursal de Coto.
- Armar datasets para BI, data warehouses o Google Sheets.
- Enriquecer catalogos internos con EAN, imagenes, marcas y categorias.
- Analizar surtido por categoria, marca o SKU.
- Crear trackers recurrentes de precios para equipos de ecommerce, CPG, trade marketing, category management y revenue management.

### Input

Podes scrapear Coto por terminos de busqueda, IDs de categoria, URLs de categoria, slugs de ofertas o URLs de ofertas.

```json
{
  "searchTerms": ["leche", "yerba", "detergente"],
  "categoryIds": ["catv00001255"],
  "storeId": "200",
  "maxItems": 100,
  "pageSize": 24,
  "sortBy": "relevance",
  "sortOrder": "descending",
  "includeUnavailable": true
}
```

Ejemplos utiles de categorias:

- `catv00001255` - Frescos
- `catv00001254` - Almacen
- `catv00001256` - Bebidas
- `catv00001257` - Perfumeria
- `catv00001260` - Hogar
- `catv00001296` - Congelados
- `catv00001990` - Electro

Si pasas una URL de categoria de Coto Digital que contiene un valor `catv...`, el Actor detecta automaticamente el ID de categoria.

### Sucursal

Los precios y el stock de Coto pueden variar por sucursal. El input `storeId` define que sucursal se usa para calcular precio y disponibilidad. El valor por defecto es `200`, que coincide con un contexto comun del catalogo de Coto Digital.

El output tambien incluye `store_availability`, para que puedas ver todas las sucursales devueltas por el catalogo para cada producto.

### Output

Cada item del dataset representa un producto/SKU de Coto para la sucursal seleccionada.

```json
{
  "status": "success",
  "country": "AR",
  "source": "coto.com.ar",
  "source_url": "https://www.cotodigital.com.ar/sitios/cdigi/productos/_/R-00251876-00251876-200",
  "scraped_at": "2026-06-09T12:00:00Z",
  "input_type": "search",
  "input_value": "leche",
  "store_id": "200",
  "product_id": "prod00251876",
  "sku_id": "sku00251876",
  "sku_plu": 251876,
  "ean": "7790742363107",
  "product_name": "Leche Larga Vida Parcialmente Descremada Liviana 1% La Serenisima 1l",
  "brand": "LA SERENISIMA",
  "category": "Leches Descremadas",
  "categories": ["Frescos", "Lacteos", "Leches", "Leches Larga Vida", "Leches Descremadas"],
  "price": 1999.03,
  "list_price": 2675,
  "discount_percent": 25.27,
  "currency": "ARS",
  "available": true,
  "unit_of_measure": "UNI",
  "format": "Litro",
  "weighable": false,
  "image_url": "https://static.cotodigital3.com.ar/sitios/fotos/large/00251800/00251876.jpg",
  "promotions": ["25%Dto", "Hasta 30% DTO!!", "Todas las Ofertas"]
}
```

### Precio

Pricing configurado para Apify Store: **USD 0.003 por resultado**.

Este Actor guarda un item de dataset por cada producto/SKU extraido. En el modelo actual de monetizacion de Apify, usa **Pay per event (PPE)** con el evento sintetico `apify-default-dataset-item` a **USD 0.003**. Tambien esta activada la opcion **Pay per event + usage**, para que el usuario final asuma el costo de uso de la plataforma.

### Fuente Tecnica

- Pais: Argentina
- Retailer: Coto
- Sitio: `https://www.coto.com.ar/`
- Catalogo online: Coto Digital
- Fuente de catalogo: endpoints publicos de Coto Digital / Constructor
- Automatizacion con navegador: no requerida
- Moneda: ARS

El Actor usa requests directos al catalogo, por eso es mas rapido y economico que un scraper basado en navegador.

### Notas y Limitaciones

- Los precios, descuentos y stock pueden variar por sucursal, region, sesion y promociones activas.
- El Actor no inicia sesion, no compra productos y no usa cuentas privadas.
- Si Coto cambia el contrato publico del catalogo, puede requerirse una actualizacion del parser.
- Para corridas recurrentes, usa `requestDelayMillis` y valores razonables de `maxItems`.
- Activa `includeAllStorePrices` solo si necesitas todas las entradas crudas de precio por sucursal; aumenta el tamano del dataset.
- Activa `includeRawData` solo para debugging o enriquecimiento avanzado.

# Actor input Schema

## `searchTerms` (type: `array`):

Busquedas de productos en texto libre, por ejemplo leche, arroz, yerba, coca cola o detergente.

## `categoryIds` (type: `array`):

IDs de categoria de Coto/Constructor, por ejemplo catv00001255 para Frescos o catv00001254 para Almacen.

## `categoryUrls` (type: `array`):

URLs de categoria de Coto Digital que contengan un ID catv. El Actor extrae automaticamente el ID de categoria.

## `offerSlugs` (type: `array`):

Slugs de ofertas de Coto Digital para scrapear una landing de ofertas.

## `offerUrls` (type: `array`):

URLs de ofertas de Coto Digital. El Actor extrae el ultimo segmento de la URL como slug de oferta.

## `storeId` (type: `string`):

ID de sucursal de Coto usado para precios y stock. El valor por defecto 200 coincide con un contexto comun de Coto Digital.

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

Cantidad maxima de productos/SKUs a guardar entre todos los objetivos.

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

Cantidad de productos solicitados por pagina del catalogo. Coto Digital usa 24 por defecto.

## `sortBy` (type: `string`):

Campo de ordenamiento de Constructor/Coto.

## `sortOrder` (type: `string`):

Direccion del ordenamiento.

## `includeUnavailable` (type: `boolean`):

Cuando esta desactivado, se omiten productos sin precio o disponibilidad para la sucursal seleccionada.

## `includeAllStorePrices` (type: `boolean`):

Cuando esta activado, cada resultado incluye las entradas crudas de precio para todas las sucursales devueltas por el catalogo. Aumenta el tamano del dataset.

## `includeRawData` (type: `boolean`):

Cuando esta activado, cada resultado incluye el payload crudo de Coto para debugging o flujos de enriquecimiento.

## `requestDelayMillis` (type: `integer`):

Pausa opcional entre requests al catalogo para reducir presion sobre el sitio fuente.

## `maxRetries` (type: `integer`):

Reintentos por request al catalogo cuando Coto devuelve errores transitorios.

## Actor input object example

```json
{
  "searchTerms": [
    "leche"
  ],
  "categoryIds": [],
  "categoryUrls": [],
  "offerSlugs": [],
  "offerUrls": [],
  "storeId": "200",
  "maxItems": 50,
  "pageSize": 24,
  "sortBy": "relevance",
  "sortOrder": "descending",
  "includeUnavailable": true,
  "includeAllStorePrices": false,
  "includeRawData": false,
  "requestDelayMillis": 250,
  "maxRetries": 2
}
```

# Actor output Schema

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

Productos, precios, descuentos, stock y SKUs de Coto Argentina guardados en el dataset por defecto.

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

Metadatos de resumen guardados en el key-value store por defecto.

# 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 = {
    "searchTerms": [
        "leche"
    ],
    "categoryIds": [],
    "categoryUrls": [],
    "offerSlugs": [],
    "offerUrls": [],
    "storeId": "200"
};

// Run the Actor and wait for it to finish
const run = await client.actor("latinamericadata/coto-product-scraper").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 = {
    "searchTerms": ["leche"],
    "categoryIds": [],
    "categoryUrls": [],
    "offerSlugs": [],
    "offerUrls": [],
    "storeId": "200",
}

# Run the Actor and wait for it to finish
run = client.actor("latinamericadata/coto-product-scraper").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 '{
  "searchTerms": [
    "leche"
  ],
  "categoryIds": [],
  "categoryUrls": [],
  "offerSlugs": [],
  "offerUrls": [],
  "storeId": "200"
}' |
apify call latinamericadata/coto-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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